基于DSP的觸摸式MP3播放器的設(shè)計(jì)
TMS320LF2407A是美國(guó)TI公司推出的高性能16 bit定點(diǎn)數(shù)字信號(hào)處理器,它采用了高性能靜態(tài)CMOS技術(shù),使得供電電壓降為3.3 V,減小了控制器的功耗;40 MIPS的執(zhí)行速度使指令周期縮短到25 ns(40 MHz),從而提高了控制器的實(shí)時(shí)控制能力。它專門為數(shù)字控制設(shè)計(jì),集DSP的高速信號(hào)處理能力及適用于控制的優(yōu)化外圍電路于一體,在數(shù)字控制系統(tǒng)中得以廣泛應(yīng)用;MP3是指MPEG國(guó)際標(biāo)準(zhǔn)音頻第三層編/解碼[1],本文采用硬件解碼方式(軟件解碼代價(jià)高,速度慢),利用TMS320LF2407A實(shí)現(xiàn)MP3播放器的設(shè)計(jì)。
1 系統(tǒng)硬件組成
1.1 微控制器TMS320LF2407A
系統(tǒng)硬件結(jié)構(gòu)如圖1所示,TMS320LF2407A作為主控芯片,內(nèi)部資源十分豐富,具有40個(gè)可編程/復(fù)用的GPIO腳,具有事件管理器EV模塊、CAN總線模塊、SCI模塊以SPI模塊等。其中,同步串行SPI模塊具有4個(gè)通信引腳:主出從入SPIMOSI、主入從出SPIMISO、同步時(shí)鐘SPICLK、總線片選SPISTE。本系統(tǒng)中,SD卡、VS1003B以及TM7843都是SPI總線接口設(shè)備,DSP采用SPI總線擴(kuò)展了SD卡與VS1003B音頻解碼芯片,而并未將觸摸屏控制器TM7843也擴(kuò)展到SPI總線上,采用了IO口模擬SPI的方案,原因是在對(duì)SD卡操作的同時(shí)(數(shù)據(jù)還未讀入RAM),是不可能向VS1003B傳送數(shù)據(jù)的,SPI處在間歇的切換狀態(tài)中,不會(huì)導(dǎo)致?tīng)?zhēng)用、沖突,但是對(duì)屏幕的觸碰是難免的,所以共用總線不可靠。
1.2 VS1003B解碼芯片
VS1003B是由荷蘭VLSI公司出品的一款單芯片的MP3/WMA/MIDI音頻解碼和ADPCM編碼芯片,其擁有一個(gè)高性能低功耗的DSP處理器核VS_DSP,5 KB的指令RAM,0.5 KB的數(shù)據(jù)RAM,串行的控制和數(shù)據(jù)輸入接口,4個(gè)通用IO口,一個(gè)UART口;同時(shí)片內(nèi)帶有一個(gè)可變采樣率的ADC、一個(gè)立體聲DAC以及音頻耳機(jī)放大器。
如圖2所示,VS1003B各部分的供電電壓不同,AVDD(模擬電路電壓)與IOVDD(IO電壓)須用3.3 V供電,CVDD(數(shù)字電路電壓)必須用2.5 V供電;VS1003與DSP連接的引腳主要有7個(gè),分別為DREQ、SO、SI、SCLK、XRESET、XCS、XDCS。只有保證它們與DSP正確可靠的連接,才能對(duì)VS1003進(jìn)行有效的操作與控制;操作時(shí),只有當(dāng)DREQ為高(準(zhǔn)備好)時(shí)才能讀寫(xiě)VS1003B,它具有2個(gè)讀寫(xiě)端口,即命令端口和數(shù)據(jù)端口,分別由XCS(命令片選)與XDCS(數(shù)據(jù)片選)決定,由DSP的IO口控制。SO、SI、SCLK是SPI接口,與DSP的SPI總線對(duì)接。圖2的左側(cè)與右側(cè)原理圖分別為MIC音頻模擬信號(hào)輸入電路與音頻輸出電路,由于內(nèi)部具有耳機(jī)驅(qū)動(dòng)器,VS1003B輸出信號(hào)不需經(jīng)過(guò)任何功放電路,簡(jiǎn)化了硬件電路。
1.3 SD卡電路
SD卡有9個(gè)引腳,支持2種可選的通信協(xié)議:SD模式和SPI模式[2]。如前所述,本設(shè)計(jì)采用SPI模式。圖3中,DI、DO、SCLK分別對(duì)應(yīng)微控器SPI模塊的3個(gè)引腳;CS腳是SD卡SPI模式的片選引腳,與DSP的IO口連接,DSP的SPISTE腳并未使用(因?yàn)樾枰獢U(kuò)展多個(gè)SPI芯片,需要多個(gè)片選腳),對(duì)SD卡操作時(shí),CS腳才拉低有效,避免了與VS1003B沖突。SENS與WP分別為SD卡的插入檢測(cè)與寫(xiě)保護(hù)腳。
1.4 彩屏與觸摸屏驅(qū)動(dòng)電路
ILI9320是手機(jī)上常用的彩屏控制器,采用16 bit并行總線方式,端口被映射到DSP的IO空間,彩屏具有4個(gè)背光LED燈(控制端為L(zhǎng)ED1~LED4),采用三極管9012連接共陽(yáng)極LEDA,使背光受控于DSP的PE3腳,若一段時(shí)間內(nèi)未觸摸屏幕,控制PE3腳為高,使背光熄滅,降低系統(tǒng)功耗。彩屏與4線電阻式觸摸屏緊貼一起,2塊屏是一個(gè)整體,輸出軟排線中的XR、YD、XL、YU(參見(jiàn)圖4中的U3)即為4線電阻采樣端,與TM7843(芯片U4)對(duì)應(yīng)腳連接,TM7843的DCLK、DIN、DOUT、/CS腳與TMS320LF2407A的IO腳連接,模擬SPI總線。PENIRQ是筆落下信號(hào),程序中判斷此腳為低電平時(shí)(或采用中斷方式),則有觸摸屏幕事件發(fā)生,再進(jìn)一步做區(qū)域識(shí)別處理。
2 軟件設(shè)計(jì)
軟件主要分為3個(gè)任務(wù):顯示任務(wù)、觸摸識(shí)別任務(wù)、MP3播放任務(wù),由?滋C/OS操作系統(tǒng)負(fù)責(zé)調(diào)度。MP3播放任務(wù)完成了最主要的功能,即從SD卡FAT32文件系統(tǒng)中讀取數(shù)據(jù)再送入VS1003B解碼。然而μC/OS系統(tǒng)只是完成了基本的任務(wù)調(diào)度及相關(guān)機(jī)制,并無(wú)其他內(nèi)嵌實(shí)用模塊,所以基于SD卡的FAT32文件系統(tǒng)的實(shí)現(xiàn)必須設(shè)計(jì)完成。
FAT32文件系統(tǒng)如圖5所示,物理扇區(qū)0可以引導(dǎo)程序定位到正確的文件系統(tǒng)邏輯扇區(qū)0的位置。引導(dǎo)區(qū)DBR的第一扇區(qū)包括一個(gè)引導(dǎo)程序和BPB參數(shù)塊[3]。啟動(dòng)區(qū)BPB是文件系統(tǒng)最重要的部分,它記錄了每扇區(qū)字節(jié)數(shù)、根目錄簇號(hào)、FAT表號(hào)等重要信息,依據(jù)它可以找到每個(gè)文件的簇號(hào),依據(jù)文件的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),可以依次找到文件的所有存儲(chǔ)簇號(hào)。
軟件中設(shè)計(jì)了對(duì)應(yīng)的結(jié)構(gòu)體,描述了BPB塊結(jié)構(gòu)、目錄結(jié)構(gòu)、文件記錄體結(jié)構(gòu)等。其中,BPB結(jié)構(gòu)如下:
struct FAT32_BPB
{
unsigned char BS_jmpBoot[3]; //跳轉(zhuǎn)指令 offset:0
unsigned char BS_OEMName[8]; //系統(tǒng)字符串 offset:3
unsigned char BPB_BytesPerSec[2]; //每扇區(qū)字節(jié)數(shù)offset:11
unsigned char BPB_SecPerClus[1]; //每簇扇區(qū)數(shù) offset:13
……
unsigned char BS_FilSysType[11]; // offset:71
unsigned char BS_FilSysType1[8]; //串″FAT32″ offset:82
};
再利用SD卡硬件層API接口函數(shù)FAT32_ReadSector將BPB所在扇區(qū)讀入RAM緩沖區(qū),利用指針指向內(nèi)部成員即可獲得以上信息,從而可以定位到文件位置并讀取數(shù)據(jù)。MP3通常只是讀取文件,并不會(huì)進(jìn)行刪除、保存等操作,所以為了提高效率、精簡(jiǎn)代碼,本FAT32系統(tǒng)只實(shí)現(xiàn)了文件定位及讀取功能。圖6為主流程圖與播放任務(wù)流程圖。
TMS320LF2407A具有較高的性能,資源豐富,將其應(yīng)用到MP3播放器中,提高了整體性能;采用觸摸屏可以隨意點(diǎn)選歌曲以及拖動(dòng)播放進(jìn)度等,使系統(tǒng)可控性提高;彩屏使系統(tǒng)展現(xiàn)能力提高,系統(tǒng)不僅可以播放音頻,而且能夠顯示全彩BMP圖片、文檔文件等,類似于小型PDA。
評(píng)論