mp3プレイヤーソフトウェア設計仕様
table:開発環境
コンパイラ Atric True STUDIO for STM32 9.3.0
OS Windows 10 Home
mp3プレイヤーCPU接続資料(I/Oポートの割付け)
mp3playerキー入力処理
mp3playerLED出力処理
mp3playerメインモード選択処理
mp3プレイヤーソフト仕様
mp3プレイヤー動作仕様
DFplayerソフトウェア仕様:
目的:
DFplayerを動作させるための、ソフトウェアの作成を行う。
概要:
DFplayerを動作させる為のソースファイル、ヘッダファイルの作成
対象CPU :STM32F401RE(ただし、他のCPUでも使えるように出来るだけ汎用で作成する)
機能一覧
PLAY:選択した音楽の再生
PAUSE:再生している音楽の一時停止
STOP:再生している音楽の停止
NEXT:次の曲の再生
BACK:前の曲の再生
RANDAM:ランダム再生
SNGLOOP:シングルリピート
FILELOOP:ファイルリピート
追加機能(モジュールのフィードバック機能)
コマンド返答要求、読み取り
電源投入後の初期化完了、読み取り
有効なストレージデバイス、読み取り
曲終了、読み取り
参考:http://zattouka.net/GarageHouse/micon/MP3/PlayerM.htm
https://www.evernote.com/shard/s440/sh/8ba3f0a3-6b85-a8a7-c7a0-8b122ecda013/b37f7f11c7669c4e9ec77851070a7705
table:送信コマンド
10 9 8 7 6 5 4 3 2 1 0
Start command Version データ長 代表番号 a トラックHighバイト トラックLowバイト
7E:スタートコマンド
FF:Version 情報
06:データ長
01:コマンド →このコマンドにより機能を指定する。
00:ackチェック(フィードバック)
00:トラックHigh byte →コマンドによって機能が異なる。
01:トラックLow byte→コマンドによって機能が異なる。
FF:チェックサム High byte (省略可)
E6:チェックサムLow byte(省略可)
EF:エンドコマンド
※チェックサムは使用しない場合、省略出来る。
チェックサムを送らない場合
code:c
//送信コマンドを配列で用意する。
//チェックサム無し
//Start(0x7E),VER,Len,CMD,Feedback,para1,para2,$O(End bit:0xEF)
let data_send = 0x7E,0xFF,0x06,0x01,0x00,0x00,0x00,0xEF;
code:c
//チェックサムあり
//Start(0x7E),VER,Len,CMD,Feedback,para1,para2,Checksum(H),Checksum(L)$O(End bit:0xEF)
let data_send = 0x7E,0xFF,0x06,0x01,0x00,0x00,0x00,0xFF,0xE6,0xEF;
xxhのhとはHEX(16進数)ということ。
table:コマンドの機能
コマンド 機能の説明 パラメータ上位 , パラメータ下位(HEX)
01h 次の曲を再生する
02h 前の曲を再生する
03h 指定したファイルを再生する。 0~2999
04h 音量をあげる
05h 音量を下げる
06h 音量を指定する 0~30
07h イコライザーを指定する 0:通常/1:ポップ/2:ロック/3:ジャズ/4:ベース
08h 再生モードを指定する 0:リピート/1:フォルダリピート/2:単体リピート/3:ランダム
09h 再生するデバイスを選択する 0:U/1:TF/2:AUX/3:SLEEP/4:FLASH
0Ah 待機モード(低消費電力)に入る
0Bh 通常モードにする。(デバイスの再選択が必要)
0Ch モジュールのリセット
0Dh 曲を再生
0Eh 曲を停止
0Fh フォルダーとトラック番号を指定して再生 High:フォルダー番号、Low:トラック番号
10h 音の定位を広げる(00:初期値OFF) Hgih:00:効果OFF/01:効果ON、Low:00~1F(0小、1F=31大)
11h リピート再生 0:リピート停止 /1:リピートスタート 
https://akizukidenshi.com/download/ds/dfrobot/DFPlayer_Mini_Manual.pdf
http://www.ne.jp/asahi/o-family/extdisk/MP3module/KT403A_DatasheetJP.pdf
http://www.ne.jp/asahi/shared/o-family/ElecRoom/AVRMCOM/MP3module/MP3module.html
STM32勉強日記(2021/7/4)
table:DFplayer関数
関数名 引数 返り値 役割
DFP_SEND int fd //function deseriptin void DFplayer UART通信送信関数
int paraH //parameterのHigh byte - -
int paraL //parameterのLow byte - -
DFP_NEXT void void 次の曲を再生
DFP_PREVIOUS void void 前の曲を再生
DFP_SPEC int track_set //トラック番号(1~2999) void 特定のトラックを再生
DFP_VOL_INC void void 音量を+1
DFP_VOL_DEC void void 音量を-1
DFP_VOL int volume //音量設定(1~30) void 指定した値に音量を設定
DFP_FOLDER_REP void void 現在のフォルダーをリピート
DFP_SINGLE_REP void void 現在の曲を1曲リピート
DFP_RANDOM void void 曲をランダム再生
DFP_POWER_LOW void void パワーオフ(低消費電力モード)
DFP_NW void void 通常起動
DFP_RES void void モジュールリセット
DFP_PLAY void void 現在の曲を再生
DFP_PAUSE void void 曲の再生を一時停止
DFP_FOLDER_PLAY int folder_set //リピートするフォルダーを指定(1~10) void 指定したフォルダーをリピート
DFP_VOL_AD int DH //オープン制御、ボリュームセットの設定 void 音の設定
int DL //音量設定値 - -
DFP_REP void void リピート再生
メニュー表示
1行目:メニュー表示(RANDOM,PLAY・・・)
2行目:楽曲名 + vol:音量値
楽曲名:  最大12文字(出来れば11文字までにする)
v:00~30 の整数で表示
code:c
//モード選択ステート
#define MODE1 (0x01 ) //MODE1選択
#define MODE2 (0x02 ) //MODE2選択
//MENU選択ステート
#define MENU_NONE (0x00) //メニュー選択無し。(初期)
#define REPRODUCTION (0x01) //音楽再生/停止
#define SINGLE_REPEAT (0x02) //シングルリピート
#define FOLDER_REPEAT (0x03) //フォルダーリピート
#define RANDOM_REPRODUCTION (0x04) //ランダムリピート
table:モード構造体
MDOE_CTRL_INF
USHORT Mode_Select //モード選択
table:LED点灯構造体
MODE_LED_CTRL
LED_STATE
table:音楽ステート
enum MUSTATE
MURAND ///< ランダムモード
MUPLAY ///< 再生モード
MUFOLREP ///< フォルダリピート
MUSIGREP ///< シングルリピート
MUNEXT ///< 次の曲再生
MUPRE ///< 前の曲再生
table:メニュー情報構造体
TMENU_CTRL_INF GMENU_CTRL_INF
型 変数名 内容
MUSTATE MuModeSel ///<現在の音楽ステート格納用変数
UCHAR ucMuSel ///< 選択楽曲格納変数(確定)
UCHAR neMuSel ///< 次の楽曲格納用変数(変更確認用)
UCHAR ucMuMAX ///< 楽曲最大数格納用配列
UCHAR ucFolSel ///< 選択フォルダ格納変数(確定)
UCHAR neFolSel ///< 次のフォルダ格納用変数(変更確認用)
UCAHR ucFolMAX ///< フォルダ数格納用変数
bool PlayStopf ///< 音楽再生/停止確認フラグ:音楽再生中:true/音楽停止中:false
bool MuDof ///< Music動作決定フラグ:音楽動作決定:true/音楽動作未実行:false
※回路的に音楽が停止終わったことが確認出来ないので、音楽終了後は2度押す必要がある。
変数の付け方
前
現在
通常の変数:
#mp3プレイヤー