胡志強++張宏++趙瑞瑞++王洪斌



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