音頻播放最核心的算法是音頻解碼,一般有獨(dú)立的音頻解碼芯片,不需要額外編寫算法,由解碼芯片接收音頻數(shù)據(jù)流即可。在本次實(shí)驗(yàn)中,是由STM32從SD卡中讀取和解析音頻文件,然后向音頻解碼芯片送出音頻數(shù)據(jù)流,最后由音頻解碼芯片解碼和和驅(qū)動(dòng)輸出音樂。
本次實(shí)驗(yàn)的音頻解碼主要是VS1053B或VS1003B,STM32與VS1053B之間的通訊使用SPI通訊。
MP3模塊硬件電路:
本次實(shí)驗(yàn)?zāi)軌驅(qū)崿F(xiàn)循環(huán)播放、暫停、快進(jìn)和后退功能,并且可以實(shí)時(shí)顯示播放進(jìn)度、播放總時(shí)間以及當(dāng)前正在播放的音樂名稱。
一,程序編寫:
1, 程序編寫步驟
1, SD文件系統(tǒng)初始化
2, MP3模塊初始化
3, MP3硬件復(fù)位
4, 瀏覽Music文件夾
外層while循環(huán):循環(huán)獲取音頻文件路徑,實(shí)現(xiàn)循環(huán)播放
5, 索引音頻文件路徑
6, 打音頻文件
7, 設(shè)置音效
8, 設(shè)置播放速度
9, 播放音樂
內(nèi)層while循環(huán):實(shí)時(shí)讀取音頻數(shù)據(jù)塊進(jìn)行解碼播放,并且刷新播放進(jìn)度條和捕捉前面板上的按鍵操作
10, 獲取播放進(jìn)度
11, 快進(jìn)
12, 后退
13, 結(jié)束播放
二,程序編寫
1, SD文件系統(tǒng)初始化
2, MP3模塊初始化
實(shí)質(zhì)是對(duì)SPI總線進(jìn)行初始化
3, MP3硬件復(fù)位
有時(shí)候會(huì)出現(xiàn)初始化不成功的情況,所以增加一次硬件復(fù)位,用來(lái)消除VS1053芯片中的各種寄存器值,使其恢復(fù)到出廠設(shè)置值。
4, 瀏覽Music文件夾
設(shè)置音頻文件路徑和音頻文件格式類型
外層while循環(huán):循環(huán)獲取音頻文件路徑,實(shí)現(xiàn)循環(huán)播放
5, 索引音頻文件路徑
6, 打音頻文件
7, 設(shè)置音效
8, 設(shè)置播放速度
內(nèi)層while循環(huán):實(shí)時(shí)讀取音頻數(shù)據(jù)塊進(jìn)行解碼播放,并且刷新播放進(jìn)度條和捕捉前面板上的按鍵操作
9, 播放音樂并計(jì)算出播放時(shí)間長(zhǎng)度
10, 獲取播放進(jìn)度
11, 快進(jìn)、快退
12, 結(jié)束播放
完成的程序:
三, 編譯、下載
1, 先將音樂文件拷貝到軟件指定SD卡文件夾路徑,或者要據(jù)SD卡來(lái)修改軟件所設(shè)置的路徑
2, 軟件啟動(dòng)運(yùn)行,前面板的顯示
正在播放的歌曲的文件名和路徑;
正在播放的進(jìn)度和已播放的時(shí)間;
正在播放的歌曲總長(zhǎng)度。
3,將耳機(jī)或音箱接上MP3模塊的音頻輸出口,就可以聽音樂了
聯(lián)系客服