摘 要: 提出了一種基于單片機(jī)的MP3播放器的設(shè)計(jì)方法。采用NXP公司的低電壓、低功耗的LPC932A1高速單片機(jī)作為控制核心,采用SD卡作為歌曲存儲(chǔ)介質(zhì),使用芬蘭VLSL公司的VS1003B芯片(具有高速DSP芯)進(jìn)行音頻解碼和回放,使之具有高性能、便攜式、低成本的優(yōu)點(diǎn),實(shí)現(xiàn)了MP3播放器的播放部分與存儲(chǔ)部分的分離,達(dá)到了大容量存儲(chǔ)MP3播放器的目的。
關(guān)鍵詞: LPC932A1;單片機(jī);SD;VS1003B
MP3是MPEG-1音頻III(layer III)的簡稱,MP3標(biāo)準(zhǔn)用盡可能低的碼流實(shí)現(xiàn)CD音質(zhì)的聲音而不會(huì)產(chǎn)生數(shù)據(jù)損失。低數(shù)據(jù)量和高播放品質(zhì)的優(yōu)點(diǎn)使其成為音樂存儲(chǔ)、數(shù)字廣播、網(wǎng)上音樂傳輸?shù)闹饕绞?。從第一款MP3 MPMan10誕生到現(xiàn)在已經(jīng)十幾年了。十幾年來,MP3隨身聽以無可比擬的優(yōu)勢(shì),逐漸成為傳統(tǒng)卡帶式隨身聽、CD隨身聽、MD隨身聽之后市場新的競爭者甚至是終結(jié)者[1]。但是目前市面上的MP3播放器的內(nèi)存已經(jīng)固定,用戶只能被動(dòng)地選擇容量大小,而不能根據(jù)自己的實(shí)際需求使用可調(diào)的內(nèi)存容量,例如內(nèi)存容量不夠使用時(shí),只能去購買新的產(chǎn)品,造成各方面的浪費(fèi);況且隨著MP4和音樂手機(jī)的推出,MP3已經(jīng)受到很大沖擊。為此,本設(shè)計(jì)采用大容量、高速度、具有極大移動(dòng)靈活性的SD卡作為MP3播放器的存儲(chǔ)介質(zhì),實(shí)現(xiàn)MP3播放器的播放部分與存儲(chǔ)部分的分離,達(dá)到大容量存儲(chǔ)MP3播放器的目的。
1 系統(tǒng)總體方案設(shè)計(jì)
系統(tǒng)結(jié)構(gòu)框圖如圖1所示。系統(tǒng)硬件主要包括LPC932A1單片機(jī)最小系統(tǒng)、VS1003B音頻解碼模塊、SD卡讀寫模塊、4個(gè)LED燈指示模塊。本設(shè)計(jì)在電路板背面MCU附近設(shè)計(jì)了大容量的DataFlash芯片AT45DB161D的封裝,這部分屬于可選部分;只需焊上2~4 MB的Flash芯片,通過編程可實(shí)現(xiàn)固態(tài)介質(zhì)放音功能,此時(shí)就更加接近真正意義上的便攜式MP3播放器了。
操作時(shí),將SD卡插入系統(tǒng),系統(tǒng)上電時(shí)主動(dòng)識(shí)別SD卡并由LED燈D1顯示系統(tǒng)自檢狀況,自檢通過時(shí)該指示燈亮。系統(tǒng)讀取SD卡上存儲(chǔ)的MP3文件并將其送入音頻解碼芯片VS1003B進(jìn)行解碼播放。在播放過程中,D3指示燈閃亮,每讀取一個(gè)扇區(qū)的數(shù)據(jù)時(shí),該指示燈的亮滅狀態(tài)改變一次,所以播放的音樂文件比特率越低,閃爍的頻率也越低。按鍵模塊可進(jìn)行上下曲選取和音量加減的操作。
2 硬件模塊的具體實(shí)現(xiàn)
2.1 LPC932A1單片機(jī)最小系統(tǒng)
LPC900系列單片機(jī)是PHILIPS公司面向小型控制領(lǐng)域推出的一類性價(jià)比極佳的控制器,此系列兼容MCS-51單片機(jī),開發(fā)人員很容易掌握,開發(fā)工具和一些應(yīng)用例程也非常多;本播放器所用LPC932A1單片機(jī)采用高性能處理器結(jié)構(gòu),指令執(zhí)行時(shí)間只需2~4個(gè)時(shí)鐘周期,6倍于標(biāo)準(zhǔn)80C51器件[2];LPC932A1的寬電壓和低功耗是本播放器選為主控MCU的主要因素之一,整機(jī)播放時(shí)功耗在80 mA以內(nèi)。
LPC932A1 單片機(jī)最小系統(tǒng)是整體設(shè)計(jì)中最核心的部分,控制著系統(tǒng)各個(gè)子模塊之間的協(xié)調(diào)運(yùn)行,其設(shè)計(jì)的成功與否直接關(guān)系到整個(gè)設(shè)計(jì)能否正常運(yùn)行。最小系統(tǒng)包括穩(wěn)壓模塊、晶振電路、復(fù)位電路以及人機(jī)交互式按鍵輸入部分。電源開關(guān)接口為2.54間距的雙芯排針,便于外接電源開關(guān)。同時(shí),用下載程序用的USB轉(zhuǎn)串口模塊也可以為整機(jī)供電。AMS1117-2.5V是系統(tǒng)穩(wěn)壓芯片,為系統(tǒng)提供穩(wěn)定的2.5 V電源??紤]到MP3播放器的人機(jī)交互操作,本系統(tǒng)共用6個(gè)按鍵(SW1~SW6),即復(fù)位、暫停/播放、下一曲、上一曲、音量+、音量-功能鍵。
2.2 音頻解碼模塊
VS1003是芬蘭VLSI公司生產(chǎn)的單芯片MP3/WMA/MIDI音頻解碼器和ADPCM編碼器。它包含一個(gè)高性能、低功耗的DSP處理器核VS_DSP,為用戶提供工作數(shù)據(jù)存儲(chǔ)器;5 KB的指令RAM和0.5 KB的數(shù)據(jù)RAM,串行的控制和數(shù)據(jù)輸入接口;4個(gè)通用I/O口,1個(gè)UART口;擁有1個(gè)高品質(zhì)可變采樣率的ADC,1個(gè)立體聲DAC以及一個(gè)耳機(jī)放大器和地線緩沖器[3]。VS1003B通過SPI總線與LPC932A1進(jìn)行命令及數(shù)據(jù)的傳輸,其接口電路如圖2所示。VS1003B主要通過SPI的3條數(shù)據(jù)線(串行輸入SO、串行輸出SI、SCLK)和4條控制線(片選輸入XCS、數(shù)據(jù)片選端XDCS、數(shù)據(jù)請(qǐng)求DREQ、XRESET)實(shí)現(xiàn)與單片機(jī)的通信。
2.3 SD卡模塊
大小如一張郵票的SD卡(Secure Digital Memory Card)是基于半導(dǎo)體快閃記憶器的新一代記憶設(shè)備,擁有高記憶量、快速數(shù)據(jù)傳輸、極大的靈活性以及很好的安全性等特征,在便攜式裝置上廣泛使用,例如MP3、數(shù)碼相機(jī)和個(gè)人數(shù)碼助理(PDA)等[4]。
SD卡支持三種傳輸模式:SPI模式(獨(dú)立序列輸入和序列輸出)、1位SD模式(獨(dú)立指令和數(shù)據(jù)通道,獨(dú)有的傳輸格式)、4位SD模式(使用額外的針腳以及某些重新設(shè)置的針腳)。采用單片機(jī)對(duì)SD卡進(jìn)行讀寫時(shí)一般都采用SPI模式[5]。圖3為SD卡模塊(SPI模式)的接口電路。
3 系統(tǒng)軟件設(shè)計(jì)[6]
3.1 編程與程序下載說明
本設(shè)計(jì)考慮到串口(COM)不支持熱插拔及傳輸速率較低,且目前大部分便攜電腦已開始取消該接口的情況,增加了一個(gè)USB轉(zhuǎn)串口的模塊,選用PL-2303H轉(zhuǎn)換芯片使播放器使用通信口J9(標(biāo)準(zhǔn)的A型插座)與PC機(jī)相連,并可擔(dān)當(dāng)供電功能。要使用編程器在PC機(jī)上對(duì)LPC900系列單片機(jī)進(jìn)行編程,首先要在PC機(jī)上安裝好FlashMagic軟件,以燒寫LPC900系列各型號(hào)單片機(jī)。本系統(tǒng)的軟件在德國Keil公司推出的C51編輯器中的集成開發(fā)環(huán)境μ-Vision2進(jìn)行開發(fā)的,它具有強(qiáng)大的編譯、連接和調(diào)試功能[7]。
3.2 軟件功能分析
系統(tǒng)軟件中各模塊主要函數(shù)如圖4所示。其中,PlayMain()是播放控制模塊,在這一部分特意增加了播放程序中加入跳轉(zhuǎn)到ISP程序區(qū)的按鍵處理模塊,以便程序的升級(jí)和維護(hù);VS1003.c為播放器解碼驅(qū)動(dòng)程序,并且控制器與VS1003B采用硬件SPI接口進(jìn)行通信;New_SD.c為播放器SD卡驅(qū)動(dòng)程序,其中安排了初始化與讀扇區(qū)采用不同速度的底層硬件數(shù)據(jù)讀寫函數(shù);FileSys.c用于MP3播放器的文件系統(tǒng),能以文件名或音樂文件的順序號(hào)來查找文件,非常適合于工程應(yīng)用,且能以定時(shí)器和狀態(tài)機(jī)來管理人機(jī)接口,相當(dāng)方便和實(shí)用。播放器的軟件流程圖如圖5所示。
3.3 SD卡模塊分析
本文將重點(diǎn)介紹設(shè)計(jì)中的SD卡模塊。本系統(tǒng)目前支持的SD卡文件系統(tǒng)格式為FAT12和FAT16,可使用1 MB~16 GB的SD卡作為歌曲存儲(chǔ)介質(zhì)。為了便于文件資料的分門別類存放,程序中約定所有的音樂文件存放在SD卡根目錄下的“播放音樂”子目錄下,其他類型的文件或文件夾可以任意放置。操作前,先在PC機(jī)上格式化SD卡并選取FAT格式,然后建立“播放音樂”的文件夾,接著就可以往里面拷貝文件了。
SD卡模塊(New_SD.c)主要提供SD卡驅(qū)動(dòng)以及部分對(duì)FAT文件系統(tǒng)操作的函數(shù)。New_SD.c文件主要包括以下函數(shù):
SD_Init:將SD卡設(shè)置成SPI-模式;
SPI_ReadByte:通過SPI總線低速讀取1 B數(shù)據(jù),用于初始化SD卡時(shí)使用;
SPI_TransferByte:通過SPI總線發(fā)送1 B數(shù)據(jù),用于初始化SD卡;
SD_SPI_WriteByte:通過SPI高速發(fā)送數(shù)據(jù),用于SD卡扇區(qū)讀過程中;
SD_SPI_ReadByte:從SPI總線高速讀1 B,用于從SD卡讀數(shù)據(jù);
Write_Command_SD_HighSpeed與Write_Command_SD:向SD卡發(fā)送1 B的命令;
Read_OneSector_From_SDCard_To_SRAM:讀取SD卡里一個(gè)扇區(qū)的數(shù)據(jù);
SD_Read_Block是從SD卡中讀取一個(gè)塊的數(shù)據(jù)的函數(shù),在此函數(shù)里,當(dāng)發(fā)送完讀取命令后,此時(shí)CPU有少量空閑時(shí)間,在等待SD卡準(zhǔn)備數(shù)據(jù)就緒,故執(zhí)行反轉(zhuǎn)指示燈的操作:c_LED_Busy=~c_LED_Busy。
使4個(gè)LED燈中的D3紅燈反轉(zhuǎn),已達(dá)到閃爍的效果,非常有視覺上的感覺。
本著低成本、實(shí)用性強(qiáng)的原則,設(shè)計(jì)了一種解碼器與存儲(chǔ)器相分離的MP3播放器,可流暢地播放多種格式高音質(zhì)的MP3文件[8]。硬件方面,本播放器開發(fā)板在程序下載口擴(kuò)展了TXD、RXD,SDA、SCL等信號(hào)線,可連接I2C設(shè)備和串行通信設(shè)備進(jìn)行測試;還預(yù)留了外接晶振的位置,可外接12 MHz的晶體提高處理速度;利用單片機(jī)控制DSP核的MP3解碼芯片VS103B來解碼MP3文件,解決了單片機(jī)的低速問題,便于播放控制;利用USB轉(zhuǎn)串口與PC機(jī)通信傳輸數(shù)據(jù),速度快;支持熱拔插,便于MP3音樂文件的上傳下載;利用SD卡作為存儲(chǔ)介質(zhì),容量大、易更換、體積小攜帶方便。軟件方面,程序中有進(jìn)入“指定文件夾”和“播放指定文件名”功能函數(shù),非常適合于選段或拼音語音的應(yīng)用軟件開發(fā)。
參考文獻(xiàn)
[1] 新浪數(shù)碼.[EB/OL].http://tech.sina.com.cn/digi/2009-07-25/0034998509.shtml. 200-07-25/2011-10-08.
[2] Philips Semiconductors .P89LPC932A1 product data sheet rev.02 [Z]. 2005.
[3] VLSI.VS1003 Preliminary version 0.92[Z].2005.
[4] 百度百科.SD卡.[EB/OL].http://baike.baidu.com/view/2228.htm.2011-10-08.
[5] 楊善林,付超,馬溪駿.基于NANDFlash控制結(jié)構(gòu)復(fù)用的嵌入式存儲(chǔ)系統(tǒng)研究[J].儀器儀體表學(xué)報(bào),2006,27(8):845-851.
[6] 王宇炎,李明偉.基于C51單片機(jī)的MP3播放器設(shè)計(jì)[J].電子技術(shù),2009(10):29-30.
[7] 徐愛鈞,彭秀華.Keil Cx5151 V7.0單片機(jī)高級(jí)語言編程與μ Vision2應(yīng)用實(shí)踐(第2版)[M].北京:電子工業(yè)出版社,2008:136.
[8] 洪家平.基于VS1003解碼器的MP3播放器設(shè)計(jì)[J].單片機(jī)與嵌入式應(yīng)用,2010(11):53-56.