胡志強++張宏++趙瑞瑞++王洪斌
摘要:針對如何保證音頻數(shù)據(jù)流暢的問題,在音樂播放器系統(tǒng)設(shè)計中使用了一種新型接口芯片CH378.系統(tǒng)主要由微處理器(MPU) STC12C5A60S2,音頻文件存儲器U盤、SD/TF卡,音頻解碼芯片VS1003等組成,在分析U盤接口芯片的基礎(chǔ)上,采用新型接口芯片CH378實現(xiàn)對U盤,SD/TF卡直接管理,設(shè)計了CH378接口電路,介紹了CH378操作的主要過程,程序設(shè)計要點.CH378以其具有大的數(shù)據(jù)緩存RAM,可以與MPU并行接口,支持FAT文件操作等優(yōu)點,使系統(tǒng)結(jié)構(gòu)設(shè)計得到優(yōu)化,操作方便,避免了音頻播放中音頻數(shù)據(jù)流堵塞現(xiàn)象,音樂播放流暢.
關(guān)鍵詞:接口芯片CH378;U盤,SD/TF卡;音樂播放器
DOI:10.15938/j.jhust.2015.05.020
中圖分類號:TN912.3
文獻標志碼:A
文章編號:1007-2683(2015)05-0103-05
0 引言
目前市場上很多種便攜式的音樂播放器很受歡迎,但是受到存儲容量的限制,因此出現(xiàn)了解碼器與存儲器分離的要求,以加大存儲擴展,同時USB接口因其方便快捷的特點得到眾多領(lǐng)域廣泛的應(yīng)用.音樂播放器也逐漸發(fā)展能夠直接識別U盤,但是有的不能識別SD卡,或者在與SD卡連接時多通過串行輸入(RXD)、串行輸出(TXD)或者SPI等方式,這些方式增加了MPU的負擔(dān),操作也比較繁瑣,本設(shè)計采用一種新型接口芯片CH378,實現(xiàn)MPU對U盤和SD卡的操作.與之前的CH375不同,CH378支持直接與SD/TF卡的連接,所以嵌入式系統(tǒng)的MPU可以通過CH378,將U盤(USB閃存盤、USB外置硬盤)和SD/TF卡作為可移動的大容量存儲器,通過CH378操作命令,可以實現(xiàn)對U盤和SD/TF卡上的文件進行操作,而不需要詳細了解USB通信協(xié)議,具有成本低、方便快捷、可利用性高、可靠性好等優(yōu)點.
1 系統(tǒng)設(shè)計方法
1.1 芯片CH378簡介
作為存儲器文件管理芯片,CH378支持MPU系統(tǒng)可以快速方便的對U盤、SD/TF卡中的文件進行讀寫.CH378支持USB主機方式,內(nèi)部集成了處理海量存儲設(shè)備(Mass-Storage)的專用通訊協(xié)議的固件、FAT16和FAT32以及FAT12文件系統(tǒng)的管理固件、USB和SD/TF卡的通信接口固件,并且支持常用的各種USB存儲設(shè)備.其良好的兼容性涵蓋了各種U盤/USB硬盤/USB閃存盤/USB讀卡器,以及各種SD卡,包括標準容量SD卡和高容量HC-SD卡以及協(xié)議兼容的MMC卡和TF卡.MPU可以通過這3種通信接口中任何一種,實現(xiàn)對CH378芯片控制,對U盤或者SD卡中的文件操作,并與單片機(MPU)進行通信.CH378芯片有兩種型號CH378L和CH378Q,分別具有128和64管腳腳,應(yīng)用框圖如圖1.其中CH378L還同時支持SPI接口、8位并口、異步串口3種通訊接口.
1.2 芯片比較選擇
CH375芯片支持DEVICE設(shè)備方式和HOST主機方式,內(nèi)部有數(shù)據(jù)緩沖區(qū)、主從USB接口、被動并行接口、異步串行接口、控制傳輸?shù)膮f(xié)議處理器、通用的固件程序等.雖然CH375可以很方便地與USB設(shè)備通信,但是其不能與SD卡直接連接.MPU通常是通過SPI總線與SD卡相連,在程序設(shè)計上,要具有嵌入式文件系統(tǒng),比如ZnFAT,對SD卡上的文件操作.工作量較大,并且文件系統(tǒng)需要占用大量內(nèi)存.作為改進的接口芯片CH376是一個通用的USB-HOST硬件接口芯片,而且內(nèi)置了Bulk-Only協(xié)議傳輸固件程序,內(nèi)置了相關(guān)的USB底層傳輸固件程序,F(xiàn)AT文件系統(tǒng)管理固件程序,所以實際的單片機程序只需要發(fā)出讀寫命令即可完成對U盤和SD卡的操作,雖然CH376較CH375有了較大的進步,但其上沒有數(shù)據(jù)緩存RAM.為了保證音頻播放中,音頻文件數(shù)據(jù)流傳輸流暢性,接口芯片的數(shù)據(jù)緩存是必要的.CH378具有20K的RAM,適合應(yīng)用在在音樂播放系統(tǒng)設(shè)計中.本設(shè)計采用CH378L則支持12 Mbps全速和480 Mbps高速USB通信,外圍元器件只需要晶體和電容.自動檢測USB設(shè)備或SD卡的連接和斷開,提供設(shè)備連接和斷開的事件通知.提供SPI主機接口,支持SD卡以及TF卡等,支持容量高達32GB的U盤和SD卡,具有大的存儲空間,不僅更加方便快捷,而且播放音樂更加流暢.
2 硬件電路設(shè)計
2.1 系統(tǒng)總體設(shè)計
本設(shè)計MPU采用STC12C5 A60S2為系統(tǒng)控制芯片,CH378L作為U盤,SD/TF卡接口芯片,利用并口方式進行連接方式.CH378L并口數(shù)據(jù)可以直接與MPU數(shù)據(jù)相連,通過CH378L讀取U盤或SD/TF卡上的音頻數(shù)據(jù),并將其按照操作時序,傳輸給頻解碼器VS1003,VS1003對音頻文件數(shù)據(jù)進行解碼,輸出音頻信號驅(qū)動音箱,實現(xiàn)音樂播放.系統(tǒng)總體框圖如圖2.
2.2 接口電路設(shè)計
CH378L與MPU共有并口,串口,SPI3種通信方式,如果需要將CH378 L配置為并口方式,那么TXD引腳應(yīng)該懸空,SEL引腳應(yīng)該接地.接口引腳包括有AO、PCS#、RD#、WR#、DO-D7、INT#.
如果需要將CH378L配置為SPI串行通訊方式SPI,那么SEL引腳應(yīng)該懸空,TXD引腳應(yīng)該接地.該接口與MPU通信,連接的引腳包括SCS、SCK、SDO、SDI、INT#.如果需要將CH378L配置為異步串口通信方式,那么TXD引腳和SEL引腳應(yīng)該都懸空.該接口與MPU通信的引腳有TXD、RXD、INT#.CH378L的接口電路如圖3所示.
MPU與CH378L以并口的方式進行操作,速度更快,在并口方式下,通過CH378L的狀態(tài)端口即INT#引腳,獲取接口狀態(tài),為0時表示有中斷請求.并口信號線包括:地址輸入引腳AO、片選輸入引腳PCS#、讀選通輸入引腳RD#、寫選通輸入引腳WR#以及8位雙向數(shù)據(jù)總線D7~DO. CH378L與SD/TF卡是通過SD_IN,SD_WP,SD_CS,SD_CK,SD_DO,SD_DI這些信號線連接的.CH378L與U盤接口總線包括SV電源線,地(GND)線,和一對數(shù)據(jù)信號線UD -與UD+連接.接口電路如圖4所示.
CH3781.芯片的PCS#可以由地址譯碼電路產(chǎn)生,也可以占有一個I/O線.CH378L芯片的RD#引腳和WR#引腳可以分別連接到單片機的讀選通輸出引腳和寫選通輸出引腳,表1為并口I/O操作的真值表(X代表不關(guān)心此位,Z代表CH378L高阻態(tài))
2.3 音頻解碼VS1003接口電路
VS1003通過串行總線SPI與主機進行控制和數(shù)據(jù)信息的交換,并且SPI總線有兩種功能特性:串行控制接口(SCI)和串行數(shù)據(jù)接口(SDI).VS1003芯片主要通過這兩個接口來接收主機傳送過來的控制命令和音頻數(shù)據(jù).其中SCI的數(shù)據(jù)傳輸長度固定為16位,通過對SCI接口的16個位寄存器進行讀寫操作來控制.系統(tǒng)開始運行后,單片機將歌曲的信息傳送到VS1003解碼芯片中.音頻解碼模塊對單片機從U盤或者SD卡里讀取的數(shù)字音頻數(shù)據(jù)流進行解析,并轉(zhuǎn)換成模擬信號進行輸出.
3 系統(tǒng)軟件設(shè)計
由于CH378L內(nèi)置了USB控制傳輸?shù)膮f(xié)議處理器,內(nèi)置FAT16和FAT32以及FAT12文件系統(tǒng)的管理固件,支持Bulk-Only傳輸協(xié)議和SCSI、UFI、RBC或等效命令集的USB存儲設(shè)備,MPU可以通過CH378L直接讀取U盤和SD卡中的音頻文件信息.CH378L芯片包含的主要常用文件管理控制類命令碼如表2所示.
MPU在FAT規(guī)范下通過文件的形式存取U盤中的數(shù)據(jù),且實際的單片機程序只需要發(fā)出文件管理和文件讀寫命令.由于使用通用I/O模塊并口讀寫時序,所以首先進行初始化CH378L_PORT_INIT(),如果通過PC機監(jiān)測系統(tǒng)工作狀態(tài),需要通過串口調(diào)試窗口進行,對系統(tǒng)串口進行初始化mlnitSTDIO(),初始化CH378L芯片后查詢CH378L中斷并更新中斷狀態(tài),等待U盤或SD卡的插入,需要注意的是,對于某些U盤必須檢查U盤是否準備好,查詢完磁盤的容量后就可以開始操作U盤或SD了,具體程序操作過程為:對于U盤上的某子目錄,尋找文件,如果沒有發(fā)現(xiàn)該子目錄,則對根目錄下各音頻文件(這里以mp3文件為例),進行枚舉打開,并通過串口調(diào)試窗口顯示.之后對找到的mp3文件信息進行顯示.
4 實驗結(jié)果測試
音樂播放過程在于,MPU對SD卡/U盤以文件形式訪問,前面重點論述的,為采用CH378L接口芯片的實現(xiàn)方案,當(dāng)MPU讀取了SD卡/U盤上的音頻數(shù)據(jù),只有按照正確的方法將音頻文件,比如MP3文件發(fā)給VS1003,音樂才能正確播放出來.MPU通過SPI串行總線對音頻解碼芯片VS1003進行操作.VS1003等待接收MPU從SD卡/U盤上讀取的MP3文件數(shù)據(jù)流.以U盤為例,從U盤讀出MP3文件到MPU的緩沖區(qū),緩沖區(qū)的大小設(shè)置為512Byte,然后將數(shù)據(jù)發(fā)往VS1003. VS1003內(nèi)置有32Byte的數(shù)據(jù)緩沖區(qū),MPU可以發(fā)送一組32Byte的數(shù)椐,然后檢測DREQ,當(dāng)DREQ為低停止等待發(fā)送,只有當(dāng)DREQ為高時,才可以送下一組32Byte的數(shù)據(jù).為了實現(xiàn)音樂播放的連續(xù)性,MPU要保證音頻數(shù)據(jù)流不間斷,要保持對U盤音頻文件數(shù)據(jù)的讀取,并且按32Byte -組數(shù)據(jù),按上述操作發(fā)送給VS1003,直到把整個音頻文件發(fā)完為止,完成一首音樂的完整播放.流程如下:
1)打開一個指定的MP3文件;
2)讀一個扇區(qū)數(shù)據(jù)( 512Byte);
3)發(fā)32Byte的數(shù)據(jù)到VS1003;
4)檢測DREQ,當(dāng)DREQ為高時發(fā)下一個32個printf(”lFFFile MP3%s\n”,Ptr);delayx(50);while(*Ptr!=,\0'Ptr++;Ptr++;}}
程序流程圖如圖5.字節(jié)的數(shù)據(jù);
5)是否發(fā)完512Byte,否,則回到3);
6)是否發(fā)完打開的MP3文件,否,則回到2);
7)關(guān)閉打開的文件.
對關(guān)鍵的系統(tǒng)硬件電路器件進行調(diào)試,測試CH378L,VS1003,確認硬件電路正常,并將U盤/SD卡插入.在Keil version4環(huán)境下,采用C語言對相應(yīng)的功能進行了軟件調(diào)試,編譯連接,通過ISP軟件,將程序代碼下載到STC12C5A60S2.此時系統(tǒng)開始對U盤/SD卡操作,讀取音頻文件信息,在串口調(diào)試窗口可以觀察得到調(diào)試信息,如圖6.這些顯示的信息表明,CH378L,已經(jīng)正常工作,并檢查U盤,總?cè)萘繛?899MB,對存儲在其上的音頻文件進行的查詢,總共有14個文件.之后系統(tǒng)進行音樂播放.
5 結(jié)論
本設(shè)計采用新型接口芯片CH378L進行單片機對U盤和SD卡控制的設(shè)計,簡化了對U盤和SD卡的讀寫控制部分,具有簡單、方便、快捷的特點,優(yōu)化了對SD卡讀寫的部分,而且CH378L具有20KRAM存儲的空間,支持容量高達32 GB的U盤和SD卡,為解決對大的存儲設(shè)備管理,并避免音樂播放不流暢的問題提供了一種有效可靠的方案,本文介紹的基于CH378L的音頻播放器,可以實現(xiàn)對存儲在SD卡/U盤上任意音頻文件的操作,播放形式也是可以選擇,可以按順序進行,也可以通過按鍵隨機選擇,并實現(xiàn)了暫停、繼續(xù)、上一曲、下一曲等功能.達到了設(shè)計效果,