基于AVR單片機(jī)的U盤MP3設(shè)計(jì)與實(shí)現(xiàn)
隨著電子技術(shù)的發(fā)展,MP3播放器向著大容量,小型化發(fā)展。但播放器與存儲器一體化的設(shè)計(jì)使得MP3難以擴(kuò)充容量以容納更多的歌曲。將播放器與存儲器分離是MP3目前發(fā)展的另一方向。本文介紹了一種利用AVR控制以HOST USB方式讀取U盤的音樂文件并將其解碼的播放的解決方案。本方案同時(shí)具備讀取音樂標(biāo)簽,U盤電子書,貪吃蛇游戲等功能,具有商業(yè)價(jià)值。
本文引用地址:http://m.butianyuan.cn/article/262816.htm1 系統(tǒng)功能簡介
本設(shè)計(jì)主要完成對存儲在U盤中的音樂及文本等信息的讀取操作,能夠完成U盤內(nèi)MP3音樂數(shù)據(jù)的播放及標(biāo)簽信息的顯示,實(shí)現(xiàn)播放器與存儲器分離,并在此基礎(chǔ)上完成電子書,貪吃蛇游戲等功能。
2 系統(tǒng)芯片選擇
本設(shè)計(jì)MCU選擇ATMEL公司的ATmega64作為主控芯片。ATmega64是高性能、低功耗的8位AVR微處理器,具有先進(jìn)的RISC結(jié)構(gòu)。64K字節(jié)系統(tǒng)內(nèi)可編程Flash,2K字節(jié)EEPROM,4K字節(jié)片內(nèi)SRAM,64個(gè)引腳,53個(gè)可編程I/O口,具有可工作于主機(jī)/從機(jī)模式的SPI串行接口音頻解碼芯片選擇芬蘭VLSI公司生產(chǎn)的VS1003。VS1003是一款具有MP3/WMA/MIDI音頻解碼及ADPCM編碼功能的芯片,它包含一個(gè)高性能,低功耗的DSP內(nèi)核VS_DSP,工作數(shù)據(jù)存儲器,為用戶應(yīng)用提供5KB的指令RAM和0.5KB的數(shù)據(jù)RAM。一個(gè)串行的控制和數(shù)據(jù)接口,4個(gè)通用I/O口,一個(gè)UART,一個(gè)高質(zhì)量可變采樣率的ADC和立體聲DAC,一個(gè)耳機(jī)放大器和地線緩沖器。
USB通信芯片選擇CH375,CH375是一個(gè)USB總線的通用接口芯片,支持USB-host主機(jī)方式和USB-DEVICE/SLAVE設(shè)備方式。在本地端,CH375具有8位數(shù)據(jù)總線和讀、寫、片選控制線以及終端輸出,可以方便地掛接到單片機(jī)等控制其的系統(tǒng)總線上。內(nèi)置控制傳輸?shù)膮f(xié)議處理器,簡化常用的控制傳輸。支持低功耗模式。
3 系統(tǒng)硬件電路設(shè)計(jì)
3.1 MP3解碼芯片與ATmega64的硬件連接
VS1003使用同步串行總線SPI通信,ATmega64內(nèi)部集成有SPI總線控制器,故將SCLK,MOSO,MOSI直接與MCU的SPI控制引腳相連接即可。另外將XCS,XRES,DREQ,XDCS分別于PB4~PB7相連接,即可完成對解碼芯片的控制。
3.2 CH375與ATmega64的硬件連接
本設(shè)計(jì)中,CH375工作在HOST模式下,八位雙向數(shù)據(jù)總線D0~D7分別于MCU的PD0~PD7相連接,實(shí)現(xiàn)數(shù)據(jù)與命令的并行傳輸。A0,RD,WR,INT,CS分別于PC3~PC7相連接。這種連接可以很方便的將CH375掛接到各種MCU系統(tǒng)總線上。
3.3 彩屏與ATmega64的硬件連接
彩屏與MCU實(shí)現(xiàn)并口數(shù)據(jù)命令傳輸,將其16位數(shù)據(jù)命令口與MCU的PA0~PA7以及PE0~PE7相連接,另外將彩屏的片選CS,數(shù)據(jù)命令選通RS,寫選通WR,讀選通RD,及復(fù)位RST分別于MCU的PG0~PG4相連接。
系統(tǒng)啟動(dòng)后,在ATmega64的控制下,首先將數(shù)據(jù)從U盤中取出,如果是音頻數(shù)據(jù),則直接送入VS1003進(jìn)行解碼,VS1003將接收到的數(shù)據(jù)解碼后轉(zhuǎn)換為模擬音頻后,通過功率放大器輸出。若收到的是文本數(shù)據(jù),則進(jìn)行字符格式轉(zhuǎn)換,并在液晶屏上顯示出來。
4 系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)軟件的設(shè)計(jì)主要分為VS1003的驅(qū)動(dòng)程序,CH375的驅(qū)動(dòng)程序,彩屏的驅(qū)動(dòng)程序以及整體的整合。(分別為:vs1003.cch375.c TFT_ili9320.c mp3_play.c )
4.1 FAT文件系統(tǒng)管理
一個(gè)FAT文件系統(tǒng)包括四個(gè)不同的部分。保留扇區(qū),F(xiàn)AT區(qū),根目錄區(qū),數(shù)據(jù)區(qū)。其中保留區(qū)中的第一個(gè)分區(qū)必須是BPB,也稱作“引導(dǎo)扇區(qū)”,因?yàn)樗袑ξ募到y(tǒng)進(jìn)行識別的關(guān)鍵信息,計(jì)算機(jī)將以此信息識別存儲器文件格式,因此十分重要。
FAT區(qū)包含有兩份文件分配表,這是出于系統(tǒng)冗余考慮,盡管它很少使用,即使是磁盤修復(fù)工具也很少使用它。它是分區(qū)信息的映射表,指示簇是如何存儲的。根目錄區(qū)是在根目錄中存儲文件和目錄信息的目錄表。在FAT32下它可以存在分區(qū)中的任何位置,但是在早期的版本中它永遠(yuǎn)緊隨FAT區(qū)域之后。數(shù)據(jù)區(qū)是實(shí)際的文件和目錄數(shù)據(jù)存儲的區(qū)域,它占據(jù)了分區(qū)的絕大部分。
4.2 U盤的讀取
由于CH375內(nèi)置控制傳輸?shù)膮f(xié)議處理器,因此讀取U盤可以通過控制CH375的寄存器來進(jìn)行U盤的讀取。CH375以C語言子程序庫提供了USB存儲設(shè)備的文件級接口,這些應(yīng)用層接口API包含了常用的文件級操作,可以移植并嵌入到常用的單片機(jī)程序中。CH375的U盤文件級子程序庫具有以下特性:支持常用文件系統(tǒng),支持多級子目錄,可以支持小寫字母或者長文件名,支持文件打開、新建、刪除、讀寫以及搜索等。CH375的文件級子程序庫需要大約600Byte的隨機(jī)存儲器RAM作為緩沖區(qū)。文件級子程序庫的所有API在調(diào)用后都有操作狀態(tài)返回,但不一定有應(yīng)答數(shù)據(jù)。主要子程序如下:
(1)初始化CH375芯片: CH375Init; ( 2 )打開文件:CH375Fileopen;(3)枚舉或者搜索文件:CH375FileEnumer;(4)關(guān)閉文件: CH375FileClose; (5)以扇區(qū)為單位從文件讀數(shù)據(jù):CH375FileReadX; ( 6 )以扇區(qū)為單位向文件寫數(shù)據(jù):CH375FilewriteX。
pa相關(guān)文章:pa是什么
c語言相關(guān)文章:c語言教程
評論