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