周雙飛++黃海波++簡煒++高云++王志虎
摘要:基于STM32F103VET6增強型微控制器設(shè)計了一款MP3播放器,基于硬件解碼實現(xiàn)了多頁顯示歌曲播放列表、換頁、觸摸換歌以及支持MP3、WAV等格式歌曲的播放等功能的操作。硬件系統(tǒng)包括VS1003音頻解碼器、TDA1308功放模塊、MicroSD卡以及液晶觸摸屏;軟件系統(tǒng)基于VS1003驅(qū)動、液晶觸摸屏的驅(qū)動、μC/OS- 實時操作系統(tǒng)和FATFS文件系統(tǒng)等進行實現(xiàn),系統(tǒng)實現(xiàn)表明具有很好的播放和界面操作效果。
關(guān)鍵詞:STM32;MP3播放器;μC/OS-
中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2016)01-0260-03
Design and Implementation of MP3 Player Based on STM32
ZHOU Shuang-fei1, HUANG Hai-bo1, JIAN Wei1, GAO Yun2, WANG Zhi-hu2
(School of Electrical & Information Engineering, Hubei University of Automotive Technology, Shiyan 442002, China; 2. Power Equipment Plant of Dongfeng Motor Group Co., Ltd., Shiyan 442000, China)
Abstract: A MP3 player was designed based on STM32F103VET6, which is an enhanced micro controller. Based on hardware decode, main functions are achieved, such as multiple pages show the songs list, paging, touch to change songs and support MP3,WAV format songs play, and so on. The hardware system included VS1003 audio decoder, TDA1308 power amplifier module, MicroSD card and LCD touch screen. The software was implemented based on VS1003 driver, LCD touch screen driver, μC/OS-II real-time operating system and FATFS file system. The implementation shows that the MP3 player has the very good play and interface operation effect.
Key words: STM32;MP3 player;μC/OS-
MP3播放器被廣泛應(yīng)用于各種消費類電子領(lǐng)域,如新型的車載音頻設(shè)備、移動手機、網(wǎng)絡(luò)MP3等,所以對MP3的研究還具有很高的市場價值。國內(nèi)外現(xiàn)有的MP3解碼方案實現(xiàn)有2種方案:硬件和軟件解碼,由于軟件解碼借助軟件提供的算法來實現(xiàn)音頻的分析、解碼等工作,程序復(fù)雜,實現(xiàn)難度大且相對來講非常耗電,所以本文采用硬件解碼設(shè)計MP3播放器。
1 硬件設(shè)計
1.1 硬件系統(tǒng)方案設(shè)計
基于STM32F103VET6微控制器所設(shè)計的MP3播放器,主要包括三個模塊:存儲模塊、播放模塊和顯示模塊。系統(tǒng)方案設(shè)計的系統(tǒng)框圖如圖1所示。音頻文件存儲在MicroSD卡內(nèi)(支持文件夾),通過微控制器讀取歌曲數(shù)據(jù)發(fā)送到VS1003音頻解碼器,經(jīng)解碼后發(fā)送給TDA1308功放模塊,放大后在通過耳機外放出來,同時通過液晶顯示器實時的顯示播放的狀態(tài)信息。
圖1 系統(tǒng)框圖
STM32F103VET6增強型微控制器使用的是高性能、低成本、低功耗的Cortex-M3內(nèi)核,支持睡眠、停機、待機三種低功耗模式[1]。工作頻率為72MHZ,內(nèi)置64KB的SRAM和 512KB的閃存,包含2個USART、2個SPI、1個USB和1個CAN等通信接口,還具有豐富外設(shè)和增強I/O端口。下面對系統(tǒng)中的幾個主要模塊進行設(shè)計說明。
1.2 MicroSD卡模塊
MicroSD卡與STM32開發(fā)板的連接采用SDIO接口,其中SDIO有多種工作模式,本次采用SDIO的DMA模式,管腳連接如圖2所示。MicroSD卡的驅(qū)動采用FATFS文件系統(tǒng),F(xiàn)ATFS是面向小型嵌入式系統(tǒng)的一種通用的FAT文件系統(tǒng)模塊,F(xiàn)ATFS完全獨立于底層的I/O介質(zhì),因此獨立于硬件架構(gòu),可以很方便的移植到處理器當(dāng)中,F(xiàn)ATFS里面的各個函數(shù)都是封裝好的函數(shù),只需要添加底層介質(zhì)函數(shù),就可以對MicroSD卡進行讀寫操作。
圖2 MircroSD管腳連接圖
1.3 液晶模塊
LCD與CPU的連接采用FSMC接口,F(xiàn)SMC接口初始化完成后,就可以對液晶屏控制芯片ILI9341進行控制,其中液晶屏的掃描方式、像素點的顏色及橫/豎屏的控制都是通過調(diào)用液晶屏寄存器初始配置函數(shù)向ILI9341寫控制參數(shù)來實現(xiàn)。對不同圖片及文字的顯示實質(zhì)是控制液晶的所有像素點的顏色來達到預(yù)期的結(jié)果。顯示器的觸摸屏使用的是電阻觸摸屏,通過TSC2046芯片控制。要實現(xiàn)觸摸功能首先要對觸摸屏進行觸摸校準,校準成功后,保存校準參數(shù)(為避免每次開機都進行校準,將參數(shù)保存在MircroSD中),當(dāng)再次點擊時,就可以把測量出來的觸點電壓經(jīng)轉(zhuǎn)換公式計算出對應(yīng)的液晶屏坐標。
1.4 VS1003解碼模塊和TDA1308功放模塊
VS1003音頻解碼芯片為VS10xx系列的第三代產(chǎn)品,是芬蘭VLSI Solution公司出品的單片MP3/WMA/MIDI解碼和ADPCM編碼芯片[2]。VS1003使用的是數(shù)字信號處理器VS_DSP,具有功耗低,性能高等特點。VS1003具有串行的控制和數(shù)據(jù)接口,片內(nèi)帶有一個高品質(zhì)可變采樣的ADC和多速立體聲DAC,其工作的主時鐘為12.288MHz,VS1003通過開發(fā)板中的SPI2來控制,解碼電路如圖3所示。數(shù)據(jù)的寫入主要通過DREQ信號控制,當(dāng)VS1003的FIFO能夠接收數(shù)據(jù)時,DREQ為高向VS1003發(fā)送32Byte的數(shù)據(jù)(當(dāng)DREQ變低時停止發(fā)送數(shù)據(jù)),接收數(shù)據(jù)后進行解碼、高低音配置,然后流向音量控制單元和音頻FIFO,最后通過低通濾波輸送到音頻放大器。
圖3 MP3解碼電路
由于從VS1003輸出的功率太小,播放的音效不佳,所以將輸出的信號送往TDA1308功放模塊,放大后在經(jīng)過耳機播放出來。
2 軟件系統(tǒng)設(shè)計
要實現(xiàn)本系統(tǒng)的MP3功能,需要做的準備工作有在SD卡內(nèi)新建兩個文件夾,分別命名為MP3Ready和Music。MP3Ready文件夾內(nèi)存放list1.txt和list2.txt兩個空文件, list1.txt用于存放掃描到的可播放文件名及路徑, list2.txt用于存放播放歌曲列表不添加路徑,同時還要將預(yù)先制作好的用于LCD顯示的字模及圖片存放到此文件夾下;Music文件夾用于存放要播放的音頻文件。做完這些工作后,把液晶屏驅(qū)動、觸摸屏驅(qū)動、MicroSD卡驅(qū)動、VS1003驅(qū)動等驅(qū)動程序添加到工程中,通過μC/OS-Ⅱ?qū)崟r操作系統(tǒng)調(diào)度整個程序的運行,軟件部分總體框圖如圖4所示。
圖4 軟件部分總體框架
2.1 μC/OS-Ⅱ?qū)崟r操作系統(tǒng)
μC/OS-Ⅱ是一個代碼完全開放的多任務(wù)實時操作系統(tǒng),其結(jié)構(gòu)簡單明了,代碼嚴謹,雖然它只是一個內(nèi)核,但包括了一個操作系統(tǒng)基本的特性:中斷管理、內(nèi)存管理、多任務(wù)的管理、定時管理等,而且具有很強的移植性,很容易被移植到各種微處理器上,它還具有可裁剪、實時性好、高可靠性等特點[3],所以MP3的設(shè)計選擇μC/OS-Ⅱ?qū)崟r操作系統(tǒng)。
本系統(tǒng)使用μC/OS-Ⅱ?qū)崟r操作系統(tǒng),涉及μC/OS-Ⅱ?qū)崟r操作系統(tǒng)的移植,移植成功后,還要對任務(wù)的建立、任務(wù)的堆棧及任務(wù)優(yōu)先級配置等進行編程。要實現(xiàn)μC/OS-Ⅱ的運行首先要對操作系統(tǒng)的所有變量和數(shù)據(jù)結(jié)構(gòu)初始化,創(chuàng)建一個空任務(wù),然后創(chuàng)建播放器運行、指示燈等任務(wù),最后通過多任務(wù)任務(wù)調(diào)度及中斷實現(xiàn)就緒表中最高優(yōu)先級任務(wù)的切換。
2.2 主程序的流程實現(xiàn)
要實現(xiàn)MP3的功能,其主程序首先要完成對開發(fā)板所用到的外設(shè)進行初始化和文件系統(tǒng)的初始化,進而將MicroSD卡中可播放的音頻文件(支持長文件名,如果文件名過長,超出部分忽略不顯示)掃描到播放列表中,同時將播放列表中的文件名以列表的形式在LCD上顯示出來,然后按照播放指令將要播放的音頻文件發(fā)送給VS1003模塊,經(jīng)過VS1003的解碼、高低音配置等處理,最后發(fā)送給功放模塊將歌曲播放出來,一首歌播放完之后,自動播放歌曲列表的下一首,直至所有歌曲播放完畢。主程序流程框圖如圖5所示。
圖5 主程序流程框圖
3 系統(tǒng)實現(xiàn)效果
MP3播放器的設(shè)計用到多種調(diào)試手段,主要通過JTAG接口調(diào)試,其次通過指示燈的狀態(tài)和串口在電腦屏幕上打印MP3播放器運行過程的參數(shù)協(xié)助調(diào)試。設(shè)計的界面效果如圖6所示,歌曲名稱以列表的形式顯示,單頁最多顯示8首歌曲,正在播放的歌曲用三角圖標指示。開始按鍵兩邊的按鍵實現(xiàn)直接切換上一首、下一首歌曲的功能;左下角菱形的左右頂角區(qū)域分別是上一頁、下一頁的按鍵;對于歌曲的切換還可以直接點擊列表歌曲名稱進行切換。
圖6 界面效果
4結(jié)束語
本文對MP3硬件解碼技術(shù)進行了研究,并成功開發(fā)了一款MP3播放器。在硬件上解碼器與存儲器分離,增加了歌曲存儲容量(可支持4G的MicroSD卡),既節(jié)省了成本,又極大地方便了應(yīng)用,同時還采用了觸摸屏顯示器,使操作更加便捷,具有一定的使用和推廣價值。
參考文獻:
[1] 馬忠梅,徐琰.ARM Cortex 微控制器教程[M]. 北京:北京航空航天大學(xué)出版社,2010:59-61.
[2] VLSI Solusion.VS1003.Version:1.06,2012-03-16.
[3] 任哲.嵌入式實時操作系統(tǒng)μC/OS-Ⅱ原理及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2014:7-13.