方天紅,陳 勇
(1.湖北工程學院 物理與電子信息工程學院,湖北 孝感 432000 ;2.深圳悠易閱科技有限公司,廣東 深圳 518000)
基于ATmega64L的MP3播放器設計
方天紅1,陳 勇2
(1.湖北工程學院 物理與電子信息工程學院,湖北 孝感 432000 ;2.深圳悠易閱科技有限公司,廣東 深圳 518000)
設計了一款以U盤作存儲介質的MP3文件播放系統。以ATmega64L為主控制器,音頻解碼芯片為VS1003B,CH375為U盤接口芯片,通過單片機控制實現對U盤的識別、文件的讀取和處理。利用相應按鍵來控制歌曲的播放、選擇、處理以及對音量、音效和循環模式進行設置,并把信息實時顯示在液晶顯示器上。實際使用表明,播放器可流暢播放U盤中的MP3文件,人機操作簡便,功能較齊全,具有良好的應用前景。
ATmega64L;VS1003B;CH375;MP3播放器
MP3播放器已成為高度商品化的產品,擁有很多的娛樂功能,具有容量大、音質好、易于攜帶、操作人性化和簡單化等特點,因而深受廣大消費者的喜愛。雖然播放器的存儲單元和播放單元一體化設計使MP3播放器攜帶方便,更加小巧,形式多樣,但是也帶來很多的問題。對于那些不便于移動的播放器,更新歌曲將會變得麻煩,比如嵌入了播放器的音響、DVD、車載MP3,如果想存儲更多的歌曲,則需要重新買一個更大容量的播放器,導致資源的浪費。若將存儲器和播放器分離,不僅能擴大MP3播放器的應用領域,通過對HOST USB的開發,能為各種測控系統中實時數據采集的移動存儲提供了一個成本低、通用性強、可靠性高的解決方案[1]。
本文設計并制作一個基于CH375的U盤MP3播放系統,系統功能包括:(1)播放歌曲,顯示歌曲名和歌詞;(2)顯示當前歌曲播放時長、當前循環模式、音效模式以及音量大小;(3)顯示當前目錄下的歌曲數目、當前歌曲序號和當前歌曲的播放狀態;(4)可調整音量大小、音效模式和循環模式;(5)瀏覽文件和刪除文件;(6)多級目錄瀏覽;(7)不在播放界面時,具有自動返回功能。
播放歌曲時,主控制器ATmega64L通過總線方式控制CH375來讀取U盤中的MP3文件,然后將讀取的文件數據緩存起來,通過SPI接口送到VS1003B中進行解碼從耳機或者音箱中輸出,利用按鍵改變音量、音效、歌曲文件的選擇、循環模式的設置、瀏覽U盤中的文件、U盤中MP3文件的刪除處理,并將這些信息實時顯示在液晶屏上。系統結構框圖如圖1所示。

圖1 MP3播放器結構框圖
1.1主控制器ATmega64L
ATmega64L是ATMEL公司設計的一款高性能低功耗的8位AVR微處理器,AVR單片機采用先進的RISC體系結構,而且采用了大型快速存取寄存器組、快速單周期指令系統以及單級流水線等先進技術,使得AVR單片機具有高達1MIPS/MHz的高速運行處理能力,有利于MP3文件的順暢播放。ATmega64L具有豐富的資源,64K字節的系統內設計了可編程Flash,具有獨立鎖定位的可選Boot代碼區,2K字節的EEPROM,4K字節的片內SRAM,64K字節可選外部存儲空間,能對鎖定位進行編程,以實現用戶程序的加密。通過SPI接口進行系統內編程,具有JTAG接口,符合標準JTAG的邊界掃描功能,支持擴展的片內調試功能,通過JTAG接口可以實現對Flash、EEPROM、熔絲位和鎖定位的編程,這樣極大地方便了用戶下載程序和調試程序。SPI串行接口可工作于主機和從機模式,擁有53個可編程的I/O口,32個8位通用工作寄存器,全靜態工作,只需要兩個時鐘周期的硬件乘法器,工作于8M時性能高達8MIPS,具一般單片機無法比擬的優點,而且具有很寬的工作電壓范圍(2.7V-5.5V),內部還具有經過標定的RC振蕩器[2-3]。
1.2電源電路
系統采用5V直流電源供電,經變換后獲得3.3V和2.5V電壓。5V電源電壓為USB設備和液晶屏背光燈提供工作電壓。3.3V電源電壓為單片機ATmega64L和VS1003B的I/O正電源與模擬正電源提供工作電壓,2.5V電源電壓為VS1003B的數字正電源提供工作電壓。3.3V電壓由電源芯片CYT8117T33產生,電路圖如圖2所示。2.5V電壓由電源芯片CYT8117T25產生,電路如圖3所示。

圖2 3.3V變換電路

圖3 2.5V變換電路

圖4 VS1003B音頻解碼電路
1.3音頻解碼電路
VS1003B是一個單片MP3/WMA/MIDI音頻解碼器和ADPCM編碼器。包含一個高性能,自主產權的低功耗DSP處理器核VS_DSP,擁有工作數據存儲器,為用戶應用提供5KB的指令RAM和0.5KB的數據RAM。串行的控制和數據端口,4個GPIO口,一個UART,有一個高品質可變采樣率的ADC和一個立體聲DAC,還有一個耳機放大器和地線緩沖器[4]。VS1003B音頻解碼電路如圖4所示。
VS1003B所有數據和控制命令都是通過SPI總線接口實現,它與主控制器的連接比較簡單,只有3條SPI數據線和4條控制線,其中SO、SI和SCLK是與主控制器連接的SPI接口,XRESET是VS1003B的異步復位端口,XCS是VS1003B的命令片選端口,XDCS是VS1003B的數據片選端口,DREQ是VS1003B的數據請求端口,當DREQ為高時,可以向VS1003B中發送數據。在不使用UART時,RX必須接IOVDD。為了能播放48KHz采樣率的音頻,至少要用12.288MHz的晶振才能獲得正確的播放速度,故本電路采用的是12.288MHz晶振,并且在晶振兩端并聯一個1M電阻,使振蕩電路容易起振。
1.4 U盤讀取電路
CH375是南京沁恒電子生產的一款USB總線的通用接口芯片,可支持HOST主機方式和SLAVE設備方式[5]。在本地端,CH375具有8位數據總線和讀、寫、片選控制線及中斷輸出,可以方便地接到單片機/DSP/MCU/MPU等控制器的系統總線上。在USB主機方式下,CH375提供有串行通訊方式,可通過串行輸入、串行輸出和中斷輸出與單片機/DSP/MCU/MPU等相連。外部單片機/DSP/MCU/MPU也可以通過CH375按照相應的USB協議與USB設備進行通信,簡化了設計人員設計開發USB的工作。CH375還內置了連接Mass-Storage海量存儲設備的專用通訊協議固件,外部單片機可以直接以扇區為基本單位讀寫常用的USB存儲設備(包括USB硬盤/USB閃存盤/U盤)。CH375在主機方式下,可以工作于并口和串口兩種方式。考慮到本系統需要快速讀取文件,實現流暢的MP3文件播放,本文在設計上選用并口方式,因此CH375芯片的TXD引腳應該接地。CH375 U盤讀取電路如圖5所示。

圖5 U盤讀取電路
1.5按鍵電路
按鍵電路由五個按鍵組成:包括播放鍵PLAY、音量鍵VOL、模式鍵MODE、向前鍵PREV和向后鍵NEXT。播放鍵具有播放、暫停、停止和返回等功能;音量鍵具有進入音量調節模式和瀏覽目錄時的返回功能;模式鍵具有進入不同模式和確定功能;向前鍵具有播放前一首歌曲、減小音量等功能;向后鍵具有播放下一首歌曲、增大音量等功能;向前鍵和向后鍵是“連發”的。按鍵電路如圖6所示。

圖6 按鍵電路
2.1讀取U盤數據
CH375提供了U盤文件級子程序庫,單片機可以直接調用子程序讀寫U盤中的文件數據,CH375的U盤文件級子程序庫支持常用的FAT12、FAT16和FAT32文件系統,支持U盤最大容量100GB。一個U盤中可以有多個文件,每個文件都是一組數據的集合,通過按名存取。本系統直接采用沁恒公司提供的子程序庫讀取U盤數據的,U盤文件的讀寫方式采取扇區模式。下面列舉系統軟件中用到的函數:CH375的初始化函數CH375LibInit();查詢U盤是否準備就緒函數CH375DiskReady();打開指定名稱的文件或目錄、搜索枚舉文件函數CH375FileOpen();關閉當前文件CH375FileClose();搜索枚舉指定目錄下的文件,返回文件名函數CH375FileEnumer();以扇區為單位移動當前文件指針函數CH375FileLocate();刪除文件并關閉函數CH375FileErase();以扇區為單位從當前文件讀取數據函數CH375FileReadX()和CH375FielRead()。CH375FileReadX()支持雙緩沖區讀操作,可以指定讀取數據存放的位置[6]。
2.2 VS1003B控制協議
VS1003B工作在從模式下,通過SPI串行總線與主控制器進行通訊。當數據信號XDCS為低時表示傳送數據,當控制信號XCS為低時表示傳送控制命令。控制命令為16位,通過讀、寫不同的寄存器實現對VS1003的控制[7]。當信號線DREQ為高時,表示可以向VS1003B發送至少32Byte的SDI數據或一個SCI命令,當DREQ變低時,發送器必須停止發送新的數據。在設置VS1003B時鐘頻率的時候,內部的時鐘會暫時運行在12.288MHz,所以在寫命令的時候,統一使SPI工作在低速模式,保證命令的正確發送。在發送數據的時候,將SPI的速度提高,以便MP3文件順暢播放。在播放WMA格式的音頻文件之前,要對VS1003B進行軟復位。
2.3軟件實現
上電后,首先對CH375、VS1003B、按鍵、液晶屏所使用端口進行初始化,設置定時器,對VS1003B芯片進行初始化,液晶屏初始化,然后對CH375芯片進行初始化,檢查是否有U盤插入,判斷U盤是否準備好,再獲取根目錄信息,從EEPROM中讀取上次對音效、音量、循環模式的設置信息,根據這些信息對系統進行配置,初始化播放界面,開中斷,判斷是否有按鍵按下。如果有,則進行相應的菜單處理,否則,進行自動返回處理,接著進行音樂播放處理。如果歌曲名、歌詞或目錄有更新,則立即進行顯示處理,最后返回到按鍵檢查。菜單處理主要是通過按鍵完成對VS1003B的音量、音效的設置,歌曲循環模式的設置,歌曲的選擇,瀏覽U盤中的文件和對U盤文件的刪除處理,這些信息會實時顯示在液晶屏上。自動返回處理是指在沒有任何按鍵按下,并且當前不在播放界面下,系統會自動跳到播放界面。音樂播放處理是負責播放當前所選擇的歌曲。系統軟件的流程圖如圖7所示,音樂播放界面和瀏覽界面分別如圖8和圖9所示。

圖7 軟件流程圖

圖8 播放界面

圖9 瀏覽界面
本文以ATmega64L為主控制器,設計了一個MP3播放器。經過測試,設計的MP3播放器不僅能流暢播放U盤中的MP3文件,音質效果好,突破了MP3播放器中播放單元與存儲單元的一體化限制,而且能實現對歌曲文件播放、選取、處理、音量的調節以及對音效、循環模式的設置。該MP3在音響、汽車電子、DVD以及測控系統中數據采集存儲方面具有很好的應用前景。
[1] 陳博,劉天宏,劉錦高.基于CH375的USB-HOST MP3播放器[J].華東師范大學學報:自然科學版,2009(2):136-140.
[2] ATMEL.ATmega64L[EB/OL].http://www.atmel.com/devices/ATMEGA64.aspx?tab=documents.
[3] 馬潮.AVR單片機嵌入式系統原理與應用實踐[M].北京:北京航空航天大學出版社,2007:9-14.
[4] VLSI.VS1003 datasheet[EB/OL].http://www.21icsearch.com/pdf-DB4EF1C4E54F180F/VS1003.html#.
[5] 肖踞雄.USB技術及應用設計[M].北京:清華大學出版社,2003:15-20.
[6] 沁恒電子.CH375中文手冊[EB/OL].(2007-11-09). http://www.wch.cn/download/list.asp?id=13.
[7] 王輝,何永剛.嵌入式Linux下基于VS1003B的播放系統的設計與實現[J].電聲技術,2012,36(4):59-62.
(責任編輯:張凱兵)
DesignofMP3PlayerBasedonATmega64L
Fang Tianhong1,Chen Yong2
(1.SchoolofPhysicsandElectronicInformationEngineering,HubeiEngineeringUniversity,Xiaogan,Hubei432000,China;2.ShenzhenUmidoCo.,Ltd,Shenzhen,Guangdong518000,China)
This paper develops an MP3 player system using U disk storage media. The proposed system uses ATmega64L as a main controller, VS1003B as audio decoder chip, and CH375 as U disk interface chip, to achieve the recognition of U disk, reading and processing of MP3 files controlled by microprocessor. It may control the playing, selecting, volume, audio selection and cycle mode settings of songs by the corresponding keys. Moreover, the playing information can be displayed on the LCD monitor in real time. Practice shows that the designed player has the features of smooth playing, simple man-machine interface, and complete functions with certain practical value.
ATmega64L; VS1003B; CH375; MP3 player
TP368.1
A
2095-4824(2013)06-0011-05
2013-09-29
湖北工程學院教學研究項目(2009B18)
方天紅(1979- ),男,湖北赤壁人,湖北工程學院物理與電子信息工程學院講師,碩士。
陳 勇(1987- ),男,湖北赤壁人,深圳悠易閱科技有限公司工程師。