mp3プレイヤーソフトウェア設計仕様
table:開発環境
コンパイラ Atric True STUDIO for STM32 9.3.0
OS Windows 10 Home
DFplayerソフトウェア仕様:
目的:
DFplayerを動作させるための、ソフトウェアの作成を行う。
概要:
DFplayerを動作させる為のソースファイル、ヘッダファイルの作成
対象CPU :STM32F401RE(ただし、他のCPUでも使えるように出来るだけ汎用で作成する)
機能一覧
PLAY:選択した音楽の再生
PAUSE:再生している音楽の一時停止
STOP:再生している音楽の停止
NEXT:次の曲の再生
BACK:前の曲の再生
RANDAM:ランダム再生
SNGLOOP:シングルリピート
FILELOOP:ファイルリピート
追加機能(モジュールのフィードバック機能)
コマンド返答要求、読み取り
電源投入後の初期化完了、読み取り
有効なストレージデバイス、読み取り
曲終了、読み取り
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)
code:c
//チェックサムあり
//Start(0x7E),VER,Len,CMD,Feedback,para1,para2,Checksum(H),Checksum(L)$O(End bit: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:リピートスタート
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
//モード選択ステート
//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度押す必要がある。
変数の付け方
前
現在
通常の変数: