摘 要: 提出了一種基于單片機(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)的簡(jiǎn)稱,MP3標(biāo)準(zhǔn)用盡可能低的碼流實(shí)現(xiàn)CD音質(zhì)的聲音而不會(huì)產(chǎn)生數(shù)據(jù)損失,。低數(shù)據(jù)量和高播放品質(zhì)的優(yōu)點(diǎn)使其成為音樂(lè)存儲(chǔ),、數(shù)字廣播、網(wǎng)上音樂(lè)傳輸?shù)闹饕绞?。從第一款MP3 MPMan10誕生到現(xiàn)在已經(jīng)十幾年了,。十幾年來(lái),MP3隨身聽以無(wú)可比擬的優(yōu)勢(shì),,逐漸成為傳統(tǒng)卡帶式隨身聽,、CD隨身聽、MD隨身聽之后市場(chǎng)新的競(jìng)爭(zhēng)者甚至是終結(jié)者[1],。但是目前市面上的MP3播放器的內(nèi)存已經(jīng)固定,,用戶只能被動(dòng)地選擇容量大小,而不能根據(jù)自己的實(shí)際需求使用可調(diào)的內(nèi)存容量,,例如內(nèi)存容量不夠使用時(shí),,只能去購(gòu)買新的產(chǎn)品,造成各方面的浪費(fèi),;況且隨著MP4和音樂(lè)手機(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芯片,,通過(guò)編程可實(shí)現(xiàn)固態(tài)介質(zhì)放音功能,,此時(shí)就更加接近真正意義上的便攜式MP3播放器了。
操作時(shí),,將SD卡插入系統(tǒng),,系統(tǒng)上電時(shí)主動(dòng)識(shí)別SD卡并由LED燈D1顯示系統(tǒng)自檢狀況,自檢通過(guò)時(shí)該指示燈亮,。系統(tǒng)讀取SD卡上存儲(chǔ)的MP3文件并將其送入音頻解碼芯片VS1003B進(jìn)行解碼播放,。在播放過(guò)程中,D3指示燈閃亮,,每讀取一個(gè)扇區(qū)的數(shù)據(jù)時(shí),,該指示燈的亮滅狀態(tài)改變一次,所以播放的音樂(lè)文件比特率越低,,閃爍的頻率也越低,。按鍵模塊可進(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通過(guò)SPI總線與LPC932A1進(jìn)行命令及數(shù)據(jù)的傳輸,,其接口電路如圖2所示。VS1003B主要通過(guò)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 編程與程序下載說(shuō)明
本設(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)的軟件在德國(guó)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),能以文件名或音樂(lè)文件的順序號(hào)來(lái)查找文件,,非常適合于工程應(yīng)用,,且能以定時(shí)器和狀態(tài)機(jī)來(lái)管理人機(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ì),。為了便于文件資料的分門別類存放,程序中約定所有的音樂(lè)文件存放在SD卡根目錄下的“播放音樂(lè)”子目錄下,,其他類型的文件或文件夾可以任意放置,。操作前,先在PC機(jī)上格式化SD卡并選取FAT格式,,然后建立“播放音樂(lè)”的文件夾,,接著就可以往里面拷貝文件了。
SD卡模塊(New_SD.c)主要提供SD卡驅(qū)動(dòng)以及部分對(duì)FAT文件系統(tǒng)操作的函數(shù),。New_SD.c文件主要包括以下函數(shù):
SD_Init:將SD卡設(shè)置成SPI-模式,;
SPI_ReadByte:通過(guò)SPI總線低速讀取1 B數(shù)據(jù),用于初始化SD卡時(shí)使用;
SPI_TransferByte:通過(guò)SPI總線發(fā)送1 B數(shù)據(jù),,用于初始化SD卡,;
SD_SPI_WriteByte:通過(guò)SPI高速發(fā)送數(shù)據(jù),,用于SD卡扇區(qū)讀過(guò)程中,;
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)行測(cè)試,;還預(yù)留了外接晶振的位置,,可外接12 MHz的晶體提高處理速度;利用單片機(jī)控制DSP核的MP3解碼芯片VS103B來(lái)解碼MP3文件,,解決了單片機(jī)的低速問(wèn)題,,便于播放控制;利用USB轉(zhuǎn)串口與PC機(jī)通信傳輸數(shù)據(jù),,速度快,;支持熱拔插,便于MP3音樂(lè)文件的上傳下載,;利用SD卡作為存儲(chǔ)介質(zhì),,容量大、易更換、體積小攜帶方便,。軟件方面,,程序中有進(jìn)入“指定文件夾”和“播放指定文件名”功能函數(shù),非常適合于選段或拼音語(yǔ)音的應(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í)語(yǔ)言編程與μ Vision2應(yīng)用實(shí)踐(第2版)[M].北京:電子工業(yè)出版社,2008:136.
[8] 洪家平.基于VS1003解碼器的MP3播放器設(shè)計(jì)[J].單片機(jī)與嵌入式應(yīng)用,,2010(11):53-56.