摘要:隨著電子技術的發展,MP3播放器向著大容量、小型化發展。本文敘述了由STC89C58RD+單片機和VS1011E解碼芯片構成的MP3播放器硬件結構,采用CH375USB芯片讀取數據,通過Nokia5110液晶顯示,以及軟件編程思路,實現了一種解碼器與存儲器分離的MP3播放器設計。該播放器具有文件傳輸、存儲、顯示及音樂播放功能,具有播放聲音流暢,操作簡單,功耗低,體積小及容量大等特點。本文網絡版地址:http://www. eepw.com.cn/article/145484.htm
關鍵詞:STC89C58RD+單片機;MP3;CH375芯片;VS1011E芯片
DOI: 10.3969/j.issn.1005-5517.2013.6.015
隨著人們對便攜式音樂播放器要求的提高,MP3播放器以其較小的體積和較好的音質受到廣大音樂愛好者的青睞。起初,MP3文件由電腦來播放,后來互聯網的發展促進了MP3播放器的產生,同時MP3播放器也發生了一系列的變化,其更加小巧精致,更人機化和情趣化。現在市場上MP3的款式越來越多,功能越來越豐富,但現有MP3播放器大多是將解碼器
與存儲器一體化的。這種設計使MP3播放器方便攜帶,但也帶來了問題:一是存儲容量不易擴展;二是不利于MP3播放器在其他領域的應用。將播放器與存儲器分離是MP3播放器目前發展的一個方向[1-3]。本系統采用STC89C58RD+單片機,結合USB接口芯片CH375、解碼芯片VS1011E、Nokia5110液晶等外圍設備設計并實現MP3播放器,該系統以USB-HOST方式讀取U盤的MP3文件并將其解碼播放,同時具備讀取音樂標簽,U盤電子書和貪吃蛇游戲等功能。
系統總體設計
數據讀取模塊
單片機讀取MP3數據模塊包括STC89C58RD+單片機、USB接口芯片CH375和MP3格式數據存儲U盤三部分。
STC89C58RD+單片機
系統采用STC89C58RD+單片機,該單片機是美國STC公司設計,國內宏晶公司生產的新一代51增強型單片機,引腳和指令系統均與51單片機兼容。它具有加密性強、超強抗干擾、超低功耗、在系統可編程、內含MAX810專用復位電路等特點[4]。
該單片機采用MCS51內核,其內含32KB的FLASH和1 6 K B的EEPROM,同時內含1KB的內部SRAM存儲空間。因而可用于音頻數據處理和顯示數據處理需要進行較大數據緩沖的情況下。該單片機最高可工作于33MHz時鐘,本系統中,它工作在30MHz時鐘下,能滿足系統對數據帶寬的要求。
CH375接口芯片
CH375是一種通用USB總線接口芯片,其內部集成PLL倍頻器、數據緩沖區、主從USB接口SIE、被動并行接口、異步串行接口、命令解釋器、控制傳輸的協議處理器和通用的固件程序等[5]。它有USB-HOST和USB- SLAVE兩種方式,其中USB-HOST方式支持各種常用的USB全速設備,外部單片機、MCU、DSP可以通過CH375按照相應的USB協議與USB設備通信,這是由于在本地端,CH375具有讀、寫、片選控制線以及中斷輸出四條控制總線和八位數據總線,可以方便地掛接到單片機等控制器的系統總線上。CH375芯片內部各部分的功用如下:①PLL倍頻器用于將外部輸入的12MHz時鐘倍頻到48MHz,作為USB接口SIE時鐘。②數據緩沖區用于緩沖USB接口SIE收發的數據。③主從USB接口SIE用于完成物理的USB數據接收和發送。④被動并行接口與異步串行接口用于與外部單片機交換數據。⑤URT串行接口用于代替并行接口與外部單片機交換數據。⑥命令解釋器用于分析并執行外部單片機提交的各種命令。⑦控制傳輸的協議處理器用于自動處理常用的控制傳輸的多個階段,簡化外部固件的編程,降低了開發難度。⑧通用的固件程序實現USB傳輸的相關協議。
系統采用VS1011E芯片對MP3音頻進行解碼。VS1011E音頻解碼芯片為VS10XX系列的第三代產品,是芬蘭VLSI Solution Oy公司生產的單片MP3/WMA/MIDI音頻解碼芯片,其內部結構如圖3所示。它包含一個高性能、低功耗的DSP處理核(VSDSP),5KB的指令RAM,0.5KB的數據RAM,串行的控制和數據輸入接口,四個通用I/O口,一個UART口,一個可變采樣率的ADC,一個立體聲DAC以及音頻耳機放大器。芯片可工作于12.288~14MHz或24.576~28MHz時鐘下。可用于解碼MPEG12Layer1,2,3以及MPEG2.5Layer3格式、和WAV等格式文件[6]。
VS1011E芯片工作流程
VS1011E芯片工作時,首先將M P 3或WAV格式音頻文件通過SDI總線送入芯片內部并解碼。解碼后,如果SCL_ AIADDR!=0,則執行應用區代碼(代碼地址由相應的地址寄存器提供),然后再按照SCL_BASS寄存器(SB_AMPLITUDE位和ST_AMPLITUDE位)的設置,將數據送到低音和高音優化器進行音效處理,之后再將數據通過音量控制單元備份到音頻FIFO中。音頻FIFO用于保持數據,并將數據作為采樣率轉換器和DAC的輸入。采樣率轉換器可將所有不同采樣率轉換成CLKI/512信號送給DAC,再由DAC按位依次產生立體聲模擬信號,然后由系統將這些信號送到耳機功放。VS1011E的工作流程如圖4所示。
實現VS1011E芯片控制協議
VS1011E芯片與主機進行數據和控制信息的通信需要利用工作于從模式的SPI串行總線,通過串行數據接口(SDI)傳送音頻數據,通過串行控制接口(SCI)傳送控制數據。VS1011E的SPI接口具有VS1002新模式(SM_ SDINEW=1)和VS1001兼容模式(SM_ SDINEW=0)兩種工作模式。當SM_ SDISHARED=1時,數據信號和控制信號的傳送共用xCS作同步信號;SM_SDISHARED=0時,則分別采用 xDCS和xCS為同步信號。作為從機工作模式,VS1011E可通過一個信號線DREQ指示是否允許主機傳送數據。當DREQ為高時,VS1011E至少可以接收32KB的SDI數據或SCI控制命令。下面以VS1002模式簡單分析SPI協議:
(1)SDI數據協議線
xDCS為同步控制線,低電平時激活,可輸入數據,高電平時結束當前操作,以使串行接口處于等待狀態,當SM_SDISHARED=1時,由xCS替換該引腳。SCK為時鐘線,由主控芯片提供時鐘。SI為數據輸入線,可在SCK上升沿采樣輸入SI數據。
(2)SCI控制命令線
xCS為同步控制線,低電平時激活,高電平結束當前操作,以使串口處于等待狀態,同時使SO輸出線為高阻態。SCK(復用)為時鐘線。SI(復用)為控制命令輸入,可在SCK上升沿采樣輸入SI數據,若xCS被拉低,則在SCK的第一個上升沿寫入數據線的第一個數據位。SO為數據輸出線,當主控制器讀VS1011E內部控制寄存器狀態時,可在SCK下降沿輸出數據,如果當前為寫操作,MJH SO為高阻態。
VS1011E芯片與單片機的接口電路
系統軟件設計
圖7為MP3播放器的軟件流程。采用C51語言對本系統單片機的軟件設計進行編寫,源程序共分單片機驅動CH375程序、單片機控制VS1011E實現音頻解碼程序及按鍵與顯示驅動程序三個部分。為了簡化程序設計,采用從官方網站下載CH375的API函數庫“CH375HF4.LIB”文件對CH375模塊部分程序進行編寫。由于單片機的硬件資源比較有限,在硬件調試過程中,當出現傳送頻率較高的MP3文件時可能會造成聲音失真,因此為了保證MP3文件播放流暢,在系統開發過程中應優化程序。
系統啟動后,先進行初始化,然后等待U盤插入,再通過CH375芯片將U盤中的MP3文件傳送至單片機內部RAM緩沖。單片機是通過SPI總線方式讀出音頻信息的,并將MP3的碼流信息送入到VS1011E芯片中,通過 VS1011E芯片及其內含的高質量立體聲DAC和耳機驅動電路,實現MP3文件的播放功能。在按鍵的控制下,通過Nokia5110中菜單選項的選擇,實現對MP3文件選擇及音量控制等功能;播放時,顯示在Nokia5110上的信息包括MP3文件名稱、播放進度和音量等。經過運行測試,該系統可正常流暢地播放出320kb/s的高音質MP3文件,而且其功耗比較低,使用500mA鋰電池可連續正常播放十小時。
參考文獻:
[1] 王道乾,劉定智,等.基于ARM處理器的MP3播放器分析與實現[J].計算機工程與設計,2007,(07)
[2] 徐英欣.基于ARM的多通道專業MP3播放器設計[J].微計算機信息,2008,(14)
[3] 宋艷紅,孫涌.基于FS7821的磁帶式mp3播放器設計[J].電腦知識與技術,2008,(S2)
[4] 王海濤,蔣德云,等.一種基于單片機STC89C58RD+的稱重顯示控制器[J].機電工程,2008,(06)
[5] 譚保華.基于CH375的低成本嵌入式系統USB Host構建[J].黃石理工學院學報,2010,(04)
[6] 郭穩濤,何怡剛.基于CPLD和VS1011E解碼器的電梯語音系統設計[J].國外電子元器件,2008,(01)