《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于LPC932A1的SD卡MP3播放器設計
基于LPC932A1的SD卡MP3播放器設計
來源:微型機與應用2012年第5期
肖啟洋,方 元
(南京大學 電子科學與工程學院,江蘇 南京 210093)
摘要: 提出了一種基于單片機的MP3播放器的設計方法。采用PHILIPS公司的低電壓、低功耗的LPC932A1高速單片機作為控制核心,采用SD卡作為歌曲存儲介質(zhì),使用芬蘭VLSL公司的VS1003B芯片(具有高速DSP芯)進行音頻解碼和回放,使之具有高性能、便攜式、低成本的優(yōu)點,實現(xiàn)了MP3播放器的播放部分與存儲部分的分離,達到了大容量存儲MP3播放器的目的。
Abstract:
Key words :

摘  要: 提出了一種基于單片機的MP3播放器的設計方法。采用NXP公司的低電壓、低功耗的LPC932A1高速單片機作為控制核心,采用SD卡作為歌曲存儲介質(zhì),使用芬蘭VLSL公司的VS1003B芯片(具有高速DSP芯)進行音頻解碼和回放,使之具有高性能、便攜式、低成本的優(yōu)點,實現(xiàn)了MP3播放器的播放部分與存儲部分的分離,達到了大容量存儲MP3播放器的目的。
關鍵詞: LPC932A1;單片機;SD;VS1003B

 MP3是MPEG-1音頻III(layer III)的簡稱,MP3標準用盡可能低的碼流實現(xiàn)CD音質(zhì)的聲音而不會產(chǎn)生數(shù)據(jù)損失。低數(shù)據(jù)量和高播放品質(zhì)的優(yōu)點使其成為音樂存儲、數(shù)字廣播、網(wǎng)上音樂傳輸?shù)闹饕绞健牡谝豢頜P3 MPMan10誕生到現(xiàn)在已經(jīng)十幾年了。十幾年來,MP3隨身聽以無可比擬的優(yōu)勢,逐漸成為傳統(tǒng)卡帶式隨身聽、CD隨身聽、MD隨身聽之后市場新的競爭者甚至是終結者[1]。但是目前市面上的MP3播放器的內(nèi)存已經(jīng)固定,用戶只能被動地選擇容量大小,而不能根據(jù)自己的實際需求使用可調(diào)的內(nèi)存容量,例如內(nèi)存容量不夠使用時,只能去購買新的產(chǎn)品,造成各方面的浪費;況且隨著MP4和音樂手機的推出,MP3已經(jīng)受到很大沖擊。為此,本設計采用大容量、高速度、具有極大移動靈活性的SD卡作為MP3播放器的存儲介質(zhì),實現(xiàn)MP3播放器的播放部分與存儲部分的分離,達到大容量存儲MP3播放器的目的。
1 系統(tǒng)總體方案設計
 系統(tǒng)結構框圖如圖1所示。系統(tǒng)硬件主要包括LPC932A1單片機最小系統(tǒng)、VS1003B音頻解碼模塊、SD卡讀寫模塊、4個LED燈指示模塊。本設計在電路板背面MCU附近設計了大容量的DataFlash芯片AT45DB161D的封裝,這部分屬于可選部分;只需焊上2~4 MB的Flash芯片,通過編程可實現(xiàn)固態(tài)介質(zhì)放音功能,此時就更加接近真正意義上的便攜式MP3播放器了。

 操作時,將SD卡插入系統(tǒng),系統(tǒng)上電時主動識別SD卡并由LED燈D1顯示系統(tǒng)自檢狀況,自檢通過時該指示燈亮。系統(tǒng)讀取SD卡上存儲的MP3文件并將其送入音頻解碼芯片VS1003B進行解碼播放。在播放過程中,D3指示燈閃亮,每讀取一個扇區(qū)的數(shù)據(jù)時,該指示燈的亮滅狀態(tài)改變一次,所以播放的音樂文件比特率越低,閃爍的頻率也越低。按鍵模塊可進行上下曲選取和音量加減的操作。
2 硬件模塊的具體實現(xiàn)
2.1 LPC932A1單片機最小系統(tǒng)

 LPC900系列單片機是PHILIPS公司面向小型控制領域推出的一類性價比極佳的控制器,此系列兼容MCS-51單片機,開發(fā)人員很容易掌握,開發(fā)工具和一些應用例程也非常多;本播放器所用LPC932A1單片機采用高性能處理器結構,指令執(zhí)行時間只需2~4個時鐘周期,6倍于標準80C51器件[2];LPC932A1的寬電壓和低功耗是本播放器選為主控MCU的主要因素之一,整機播放時功耗在80 mA以內(nèi)。
 LPC932A1 單片機最小系統(tǒng)是整體設計中最核心的部分,控制著系統(tǒng)各個子模塊之間的協(xié)調(diào)運行,其設計的成功與否直接關系到整個設計能否正常運行。最小系統(tǒng)包括穩(wěn)壓模塊、晶振電路、復位電路以及人機交互式按鍵輸入部分。電源開關接口為2.54間距的雙芯排針,便于外接電源開關。同時,用下載程序用的USB轉串口模塊也可以為整機供電。AMS1117-2.5V是系統(tǒng)穩(wěn)壓芯片,為系統(tǒng)提供穩(wěn)定的2.5 V電源。考慮到MP3播放器的人機交互操作,本系統(tǒng)共用6個按鍵(SW1~SW6),即復位、暫停/播放、下一曲、上一曲、音量+、音量-功能鍵。
2.2 音頻解碼模塊
 VS1003是芬蘭VLSI公司生產(chǎn)的單芯片MP3/WMA/MIDI音頻解碼器和ADPCM編碼器。它包含一個高性能、低功耗的DSP處理器核VS_DSP,為用戶提供工作數(shù)據(jù)存儲器;5 KB的指令RAM和0.5 KB的數(shù)據(jù)RAM,串行的控制和數(shù)據(jù)輸入接口;4個通用I/O口,1個UART口;擁有1個高品質(zhì)可變采樣率的ADC,1個立體聲DAC以及一個耳機放大器和地線緩沖器[3]。VS1003B通過SPI總線與LPC932A1進行命令及數(shù)據(jù)的傳輸,其接口電路如圖2所示。VS1003B主要通過SPI的3條數(shù)據(jù)線(串行輸入SO、串行輸出SI、SCLK)和4條控制線(片選輸入XCS、數(shù)據(jù)片選端XDCS、數(shù)據(jù)請求DREQ、XRESET)實現(xiàn)與單片機的通信。
2.3 SD卡模塊
 大小如一張郵票的SD卡(Secure Digital Memory Card)是基于半導體快閃記憶器的新一代記憶設備,擁有高記憶量、快速數(shù)據(jù)傳輸、極大的靈活性以及很好的安全性等特征,在便攜式裝置上廣泛使用,例如MP3、數(shù)碼相機和個人數(shù)碼助理(PDA)等[4]。
 SD卡支持三種傳輸模式:SPI模式(獨立序列輸入和序列輸出)、1位SD模式(獨立指令和數(shù)據(jù)通道,獨有的傳輸格式)、4位SD模式(使用額外的針腳以及某些重新設置的針腳)。采用單片機對SD卡進行讀寫時一般都采用SPI模式[5]。圖3為SD卡模塊(SPI模式)的接口電路。

 

 

3 系統(tǒng)軟件設計[6]
3.1 編程與程序下載說明

 本設計考慮到串口(COM)不支持熱插拔及傳輸速率較低,且目前大部分便攜電腦已開始取消該接口的情況,增加了一個USB轉串口的模塊,選用PL-2303H轉換芯片使播放器使用通信口J9(標準的A型插座)與PC機相連,并可擔當供電功能。要使用編程器在PC機上對LPC900系列單片機進行編程,首先要在PC機上安裝好FlashMagic軟件,以燒寫LPC900系列各型號單片機。本系統(tǒng)的軟件在德國Keil公司推出的C51編輯器中的集成開發(fā)環(huán)境μ-Vision2進行開發(fā)的,它具有強大的編譯、連接和調(diào)試功能[7]。
3.2 軟件功能分析
 系統(tǒng)軟件中各模塊主要函數(shù)如圖4所示。其中,PlayMain()是播放控制模塊,在這一部分特意增加了播放程序中加入跳轉到ISP程序區(qū)的按鍵處理模塊,以便程序的升級和維護;VS1003.c為播放器解碼驅動程序,并且控制器與VS1003B采用硬件SPI接口進行通信;New_SD.c為播放器SD卡驅動程序,其中安排了初始化與讀扇區(qū)采用不同速度的底層硬件數(shù)據(jù)讀寫函數(shù);FileSys.c用于MP3播放器的文件系統(tǒng),能以文件名或音樂文件的順序號來查找文件,非常適合于工程應用,且能以定時器和狀態(tài)機來管理人機接口,相當方便和實用。播放器的軟件流程圖如圖5所示。

3.3 SD卡模塊分析
 本文將重點介紹設計中的SD卡模塊。本系統(tǒng)目前支持的SD卡文件系統(tǒng)格式為FAT12和FAT16,可使用1 MB~16 GB的SD卡作為歌曲存儲介質(zhì)。為了便于文件資料的分門別類存放,程序中約定所有的音樂文件存放在SD卡根目錄下的“播放音樂”子目錄下,其他類型的文件或文件夾可以任意放置。操作前,先在PC機上格式化SD卡并選取FAT格式,然后建立“播放音樂”的文件夾,接著就可以往里面拷貝文件了。
 SD卡模塊(New_SD.c)主要提供SD卡驅動以及部分對FAT文件系統(tǒng)操作的函數(shù)。New_SD.c文件主要包括以下函數(shù):
 SD_Init:將SD卡設置成SPI-模式;
 SPI_ReadByte:通過SPI總線低速讀取1 B數(shù)據(jù),用于初始化SD卡時使用;
 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卡里一個扇區(qū)的數(shù)據(jù);
 SD_Read_Block是從SD卡中讀取一個塊的數(shù)據(jù)的函數(shù),在此函數(shù)里,當發(fā)送完讀取命令后,此時CPU有少量空閑時間,在等待SD卡準備數(shù)據(jù)就緒,故執(zhí)行反轉指示燈的操作:c_LED_Busy=~c_LED_Busy。    
使4個LED燈中的D3紅燈反轉,已達到閃爍的效果,非常有視覺上的感覺。
本著低成本、實用性強的原則,設計了一種解碼器與存儲器相分離的MP3播放器,可流暢地播放多種格式高音質(zhì)的MP3文件[8]。硬件方面,本播放器開發(fā)板在程序下載口擴展了TXD、RXD,SDA、SCL等信號線,可連接I2C設備和串行通信設備進行測試;還預留了外接晶振的位置,可外接12 MHz的晶體提高處理速度;利用單片機控制DSP核的MP3解碼芯片VS103B來解碼MP3文件,解決了單片機的低速問題,便于播放控制;利用USB轉串口與PC機通信傳輸數(shù)據(jù),速度快;支持熱拔插,便于MP3音樂文件的上傳下載;利用SD卡作為存儲介質(zhì),容量大、易更換、體積小攜帶方便。軟件方面,程序中有進入“指定文件夾”和“播放指定文件名”功能函數(shù),非常適合于選段或拼音語音的應用軟件開發(fā)。
參考文獻
[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控制結構復用的嵌入式存儲系統(tǒng)研究[J].儀器儀體表學報,2006,27(8):845-851.
[6] 王宇炎,李明偉.基于C51單片機的MP3播放器設計[J].電子技術,2009(10):29-30.
[7] 徐愛鈞,彭秀華.Keil Cx5151 V7.0單片機高級語言編程與μ Vision2應用實踐(第2版)[M].北京:電子工業(yè)出版社,2008:136.
[8] 洪家平.基于VS1003解碼器的MP3播放器設計[J].單片機與嵌入式應用,2010(11):53-56.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉載。