邵陽(yáng)學(xué)院信息工程系 瞿 兵 陽(yáng) 泳 胡湘娟
基于嵌入式的音樂(lè)播放器設(shè)計(jì)與論述
邵陽(yáng)學(xué)院信息工程系 瞿 兵 陽(yáng) 泳 胡湘娟
隨著電子行業(yè)的不斷發(fā)展,人們對(duì)于消費(fèi)電子類產(chǎn)品的需求量不斷的增大,而根據(jù)消費(fèi)者的需求所設(shè)計(jì)的多功能MP3也越來(lái)越多。本文使用STM32F103VET6單片機(jī)作為系統(tǒng)微控制器、SD卡作為存儲(chǔ)介質(zhì)、VS1003作為音頻解碼芯片以及TFT彩晶屏作為人際交互設(shè)備,設(shè)計(jì)一款可播放mp3、wav文件格式的音樂(lè)播放器,以實(shí)現(xiàn)一個(gè)簡(jiǎn)單的音樂(lè)播放器。
STM32F103VET6;SD卡;VS1053解碼芯片;TFT彩屏;音樂(lè)播放器
MP3播放器的誕生,為傳統(tǒng)隨身聽(tīng)?zhēng)?lái)了致命打擊。MP3發(fā)展初期,MP3和MD之間的斗爭(zhēng)成為業(yè)界最熱門(mén)的話題,當(dāng)時(shí)甚至多數(shù)人都認(rèn)為MP3由于音質(zhì)上的問(wèn)題將會(huì)敗于MD,但事實(shí)上MP3的發(fā)展遠(yuǎn)遠(yuǎn)超出了MD支持者們的預(yù)想,直至今日MP3已成為隨身聽(tīng)市場(chǎng)的主流產(chǎn)品。此外隨著電子技術(shù)的不斷發(fā)展,MP3的功能也在不斷的增多,成為了繼手機(jī)之后使用最為廣泛的隨身電子產(chǎn)品,本次便是利用STM32單片機(jī)設(shè)計(jì)一個(gè)簡(jiǎn)單的音樂(lè)播放器。
整個(gè)音樂(lè)播放器系統(tǒng)主要由微控制器、音頻解碼部分、音效處理部分、SD卡部分、人機(jī)交互部分、按鍵復(fù)位部分、電源部分、程序口下載部分組成,整個(gè)系統(tǒng)由MCU控制,各個(gè)部分協(xié)調(diào)運(yùn)作。
VS1053相對(duì)于VS1003,增加了編解碼格式的支持(比如支持OGG/FLAC,還支持OGG編碼,VS1003不支持)、增加了GPIO數(shù)量到8個(gè)(VS1003只有4個(gè))、增加了內(nèi)部指令RAM容量到16KiB(VS1003只有5.5KiB)、增加了I2S接口(VS1003沒(méi)有)、支持EarSpeaker空間效果(VS1003不支持)等。同時(shí)VS1053的DAC相對(duì)于VS1003有不少提高,同樣的歌曲,用VS1053播放,音質(zhì)效果比1003效果好很多。
此系統(tǒng)要求對(duì)MP3、WAV、WMA格式的音頻文件進(jìn)行解碼,尤其是對(duì)于MP3格式的音頻文件處理要求處理要非??欤瑢?shí)現(xiàn)流暢播放,考慮到8位單片機(jī)處理速度,所以使用的32位單片機(jī),而音頻解碼芯片是使用VS1053芯片,這是VLSI公司出品的一款高性能解碼芯片,支持多種音頻格式的解碼。而SD卡儲(chǔ)存歌曲文件,TFT彩屏顯示當(dāng)前的播放情況。本系統(tǒng)是上電開(kāi)機(jī)的,開(kāi)機(jī)之后會(huì)格式化各種外設(shè),然后檢查是否中文字庫(kù),如果沒(méi)有問(wèn)題,將會(huì)開(kāi)始循環(huán)播放SD卡中的所有歌曲文件,而在TFT彩屏上顯示歌曲的信息,例如歌曲名字、播放時(shí)間、總時(shí)間等等,設(shè)置的四個(gè)外面按鍵分別為上、下曲和音量加、減,而兩個(gè)指示燈則分別指示程序運(yùn)行狀態(tài)和VS1053的初始化情況。
本次系統(tǒng)的硬件電路主要是以下幾個(gè)模塊:STM32F103VET6主控模,STM32F103VET6的最小系統(tǒng)板電路,主要用于驅(qū)動(dòng)STM32F103VET6單片機(jī)的運(yùn)行,同時(shí)將STM32F103VET6所有IO引腳引出來(lái),開(kāi)發(fā)人員使用杜邦線與模塊引腳連接進(jìn)行設(shè)計(jì)。
LCD彩屏模塊:用于顯示音樂(lè)播放器播放信息的,LCD驅(qū)動(dòng)電路太復(fù)雜,本次設(shè)計(jì)則是LCD模塊,驅(qū)動(dòng)電路已經(jīng)做好直接通過(guò)IO引腳驅(qū)動(dòng)使用即可。SD卡模塊與LCD模塊是設(shè)計(jì)在一起的,直接通過(guò)軟件驅(qū)動(dòng)SDIO控制即可。
VS1503的解碼芯片模塊:驅(qū)動(dòng)正常VS1503的驅(qū)動(dòng)電路之外,其數(shù)據(jù)引腳直接與STM32F103VET6單片機(jī)的SPI總線連接完成數(shù)據(jù)傳輸控制,VS1503有兩種工作模式:有效模式與兼容模式,我們這是使用VS1503的有效模式,通過(guò)SPI總線完成數(shù)據(jù)的讀取與發(fā)送,對(duì)于驅(qū)動(dòng)VS1503的步驟為復(fù)位VS1503,配置VS1503寄存器和發(fā)送音頻數(shù)據(jù)三步。
HT6802驅(qū)動(dòng)模塊:音樂(lè)播放器喇叭的驅(qū)動(dòng)電路將喇叭接在SP+、SP-上,音頻數(shù)據(jù)從SPK_IN端輸入,而SPK_CTRL則是控制HT6872的工作模式,即控制喇叭餓開(kāi)關(guān)。當(dāng)SPK_CTRL引腳為高電平時(shí)喇叭進(jìn)入工作模式,而引腳為低電平時(shí),喇叭則是關(guān)斷模式的。
軟件系統(tǒng)代碼主要為STM32F103VET6的IO配置、VS1503驅(qū)動(dòng)代碼,HT6802驅(qū)動(dòng)代碼以及LCD驅(qū)動(dòng)代碼,STM32F103VET6的IO配置主要是用于指示燈、按鍵控制,將IO引腳配置成推挽輸出模式;而LCD驅(qū)動(dòng)代碼則是使用屏幕廠家提高的驅(qū)動(dòng)代碼即可;VS1503的驅(qū)動(dòng)代碼則是通過(guò)VS1503數(shù)據(jù)手冊(cè)來(lái)編寫(xiě),分為軟件復(fù)位函數(shù)、寫(xiě)命令函數(shù)、讀寄存器函數(shù)等幾個(gè)模塊;HT6802驅(qū)動(dòng)主要是編寫(xiě)控制喇叭工作的函數(shù)。系統(tǒng)運(yùn)行函數(shù)則是在主函數(shù)中實(shí)現(xiàn),控制系統(tǒng)運(yùn)行流程以及LCD的顯示內(nèi)容數(shù)據(jù)信息。
為了保證系統(tǒng)運(yùn)行,開(kāi)機(jī)之后首先要進(jìn)行系統(tǒng)測(cè)試,因?yàn)橄到y(tǒng)要顯示歌曲信息,所以需要檢測(cè)flash中是否存在字庫(kù),不存在字庫(kù)的話彩屏將會(huì)顯示亂碼,然后執(zhí)行VS1053的RAM測(cè)試和正弦測(cè)試,調(diào)用音樂(lè)播發(fā)函數(shù)開(kāi)始播放SD卡里面的音樂(lè)。
此實(shí)驗(yàn)的核心函數(shù)MP3解碼函數(shù),該函數(shù)在初始化VS1053后,根據(jù)文件格式選擇是否加載patch(如果是flac格式,則需要加載patch),最后在死循環(huán)里面等待檢測(cè)信號(hào)的到來(lái),每次軟復(fù)位信號(hào)變高,就向VS1053發(fā)送32個(gè)字節(jié),直到整個(gè)文件讀完。此段代碼還包含了對(duì)按鍵的處理(音量調(diào)節(jié)、上一首、下一首)及當(dāng)前播放的歌曲的一些狀態(tài)(碼率、播放時(shí)間、總時(shí)間)顯示,以便在主函數(shù)中直接調(diào)用。
上電開(kāi)機(jī)之后,系統(tǒng)自動(dòng)運(yùn)行到音樂(lè)播放器模式,播放音樂(lè),LCD彩屏上顯示相關(guān)音樂(lè)播放器信息,例如SD卡中的總共5首歌曲,歌曲名、播放時(shí)間、總時(shí)長(zhǎng)、碼率、音量等信息等。此時(shí)LED0會(huì)隨著音樂(lè)的播放而閃爍,2秒閃爍一次。此時(shí)我們便可以聽(tīng)到喇叭播放出來(lái)的音樂(lè)了,同時(shí)我們可以通過(guò)按上、下曲按鍵來(lái)切換下一曲和上一曲,通過(guò)音量加、減按鍵來(lái)控制音量大小。
在LCD屏幕可以顯示音樂(lè)播放器的基本信息等,所以證明此次的設(shè)計(jì)基本上完成。但是個(gè)人感覺(jué)如果能夠在屏幕上顯示歌曲字幕的話,音樂(lè)播放器所起到效果將會(huì)更好。此次設(shè)計(jì)的音樂(lè)播放器已經(jīng)能夠基本實(shí)現(xiàn)其效果,但是還可以繼續(xù)研究,將音樂(lè)播放器設(shè)計(jì)制作更完美。
[1]郭天祥.單片機(jī)C語(yǔ)言教程[M].電子工業(yè)出版社,2009.
[2]張建中.基于STM32F的MP3播放器設(shè)計(jì)[D].閩江:閩江學(xué)院,2011-05-10.
[3]郁峰.基于嵌入式文件系統(tǒng)的MP3播放器的設(shè)計(jì)和實(shí)現(xiàn)[D].蘇州:蘇州大學(xué),2009.
[4]李彬.基于應(yīng)用程序的嵌入式 Linux內(nèi)核自動(dòng)裁剪[D].東南大學(xué):計(jì)算機(jī)應(yīng)用專業(yè),2006.
瞿兵(1991—),男,湖南吉首人,土家族,大學(xué)本科在讀,研究方向:通信工程。
陽(yáng)泳(1994—),男,湖南邵陽(yáng)人 ,瑤族,大學(xué)本科在讀,研究方向:電子信息工程。
胡湘娟(1980—),女,湖南湘潭人,講師,研究方向:嵌入式系統(tǒng)。