基于C51單片機(jī)的MP3播放器設(shè)計(jì)與實(shí)現(xiàn)
0 引言
便攜式MP3播放器作為一種集音頻播放、數(shù)據(jù)存儲(chǔ)為一身的數(shù)碼產(chǎn)品,其功能結(jié)構(gòu)為電子設(shè)計(jì)人員所津津樂(lè)道。MP3是MPEG一1音頻III(1ayerIII)的簡(jiǎn)稱。MPEG一1音頻(ISO/IECll 172—3)是目前普遍應(yīng)用的音頻壓縮標(biāo)準(zhǔn),其中層III的算法最為復(fù)雜,但壓縮比最大,效果也最好,在低碼率的條件下基本能達(dá)到CD的音質(zhì)效果。MP3標(biāo)準(zhǔn)用盡可能低的碼流實(shí)現(xiàn)CD音質(zhì)的聲音而不會(huì)產(chǎn)生數(shù)據(jù)損失。如果對(duì)于一段聲音不進(jìn)行壓縮的話,那么每存儲(chǔ)一秒鐘的立體聲CD音質(zhì)音樂(lè)必須用1.4Mbit,這是個(gè)十分大的開(kāi)銷。通過(guò)運(yùn)用MPEG音頻標(biāo)準(zhǔn)的壓縮技術(shù),我們可以把存儲(chǔ)空間壓縮到原來(lái)的1/12而不會(huì)降低聲音的音質(zhì)。即使使用1/24的壓縮因子,仍然比單純降低采樣率的音質(zhì)要好。低數(shù)據(jù)量和高播放品質(zhì)的優(yōu)點(diǎn)使其成為音樂(lè)存儲(chǔ)、數(shù)字廣播、網(wǎng)上音樂(lè)傳輸?shù)闹饕绞?。人們不僅可以使用計(jì)算機(jī)軟件,還可以通過(guò)數(shù)字隨身聽(tīng)來(lái)欣賞音樂(lè)。本設(shè)計(jì)以C51內(nèi)核單片機(jī)為核心,設(shè)計(jì)了MP3播放器。
1 MP3硬件設(shè)計(jì)
在該硬件系統(tǒng)的設(shè)計(jì)中,采用Atme 1公司生產(chǎn)的AT89C51SNDlC作為主控MCU。AT89C5lSNDlC是ATMEL公司專門針對(duì)MP3的需求而設(shè)計(jì)的一款多媒體8位微處理器,使用通用的C51內(nèi)核,片上集成了多種外設(shè),為MP3產(chǎn)品提供了一套方便的解決方案。該芯片對(duì)電路的高度集成大大降低了系統(tǒng)的耗電和發(fā)熱,提高了系統(tǒng)的穩(wěn)定性和速度,抗干擾能力也顯著增強(qiáng)。AT89C51SNDlC具有如下外設(shè)的集成,大大簡(jiǎn)化了電路的設(shè)計(jì):a.MP3硬件解碼器;b.可編程音頻輸出接口DAC;c.8位MCU C51:d.USBl.1控制器;e.內(nèi)建鎖相環(huán)PLL;f.多媒體卡接口適配器;g.SPI接口適配器;h.IDE/ATAPI接口;i.兩路10位ADC,8kHz;j.44個(gè)通用I/0;k.兩個(gè)16位定時(shí)器/計(jì)數(shù)器;1.硬件看門狗定時(shí)器;m.標(biāo)準(zhǔn)全工UART;n.兩線主被動(dòng)模式控制器;o.SPI主被動(dòng)模式控制器;p.電源管理模塊。
整個(gè)播放器的結(jié)構(gòu)框圖如圖l所示。PC機(jī)通過(guò)USB接口實(shí)現(xiàn)對(duì)U盤的MP3歌曲、文檔等數(shù)據(jù)信息的存儲(chǔ)。系統(tǒng)啟動(dòng)后,由MCU控制將儲(chǔ)存于Flasht辛歌曲的碼流信息送入MP3解碼芯片中解碼,并產(chǎn)生解碼輸出。在系統(tǒng)的DAC模塊通過(guò)CS4340芯片把解碼輸出轉(zhuǎn)換為模擬音頻聲音后, 經(jīng)功放電路一級(jí)音頻放大并驅(qū)動(dòng)耳機(jī),實(shí)現(xiàn)MP3歌曲的播放。系統(tǒng)硬件包括主控MCU、解碼器、Flash存儲(chǔ)系統(tǒng)、供電系統(tǒng)、按鍵和D/A轉(zhuǎn)換器等幾部分。
1.1 解碼部分
這是MP3播放器的核心部件, 本設(shè)計(jì)采用硬件解碼技術(shù)。在本系統(tǒng)中筆者采用AT89C51SNDlC芯片。該芯片是一塊自帶MPEG I/II—Layer硬件解碼器和Human Interface的51內(nèi)核單片機(jī)。它可支持對(duì)8~320kbps基本數(shù)據(jù)流的解碼,支持的取樣頻率范圍為16~48kHz,非常適合于MPEG的音頻解碼, 并帶有數(shù)字語(yǔ)音錄音的MPEG播放模塊, 具有很高的性價(jià)比。解碼后的信號(hào)是可以直接輸出到DAC的立體聲、單聲道或雙聲道的數(shù)字信號(hào),SP—CA751A與DAC的接口是可編程的。只要通過(guò)通用的串行I/0口和控制接口就能對(duì)MPEG比特流進(jìn)行I/0和回放控制,系統(tǒng)控制器能很輕易地對(duì)MPEG音頻信號(hào)進(jìn)行解碼。通過(guò)一個(gè)通用的可編程I2S接口,就能把一解碼的音頻PCM數(shù)據(jù)輸出到外部的DAC中,因此,大多數(shù)常用的音頻DAC都能和本芯片兼容,本設(shè)計(jì)采用的是CS4340芯片。
1.2 存儲(chǔ)部分
現(xiàn)采用1GB的FLASH存儲(chǔ)器,該存儲(chǔ)器能夠存儲(chǔ)19小時(shí)128kbps(達(dá)到CD音質(zhì))的音樂(lè),該系統(tǒng)采用了SAMSUNG公司的1GB FLASH存儲(chǔ)芯片K9F5608UOB。
1.3 接口部分
一般通過(guò)PC的USB接口進(jìn)行MP3文件的下載,傳輸速率為12Mbps。由于Atmel公司生產(chǎn)的AT89C5lSNDlC芯片僅支持USBl.1技術(shù)規(guī)范,因此接口速度稍慢。但對(duì)于MP3播放來(lái)說(shuō),可以滿足需要。
1.4 電源管理
便攜式MP3的體積小,可以使用兩節(jié)7號(hào)電池(3VDC)供電,同時(shí)也可以通過(guò)USB接口取電,因此采用低電壓以及進(jìn)行有效的功率管理是非常必要的。
2 MP3軟件設(shè)計(jì)
硬件是設(shè)計(jì)的基礎(chǔ),軟件是設(shè)計(jì)的靈魂。MP3程序由兩大部分組成:MP3播放功能模塊和USB通訊功能模塊。此外,為了調(diào)試方便,還有調(diào)試功能模塊。此模塊在系統(tǒng)軟件調(diào)試中使用,當(dāng)MP3系統(tǒng)正常工作時(shí)去除。
MP3播放功能模塊的工作分為兩個(gè)部分:
第一部分是循環(huán)播放MP3歌曲,該功能需要首先做一些初始化工作,MP3解碼器一旦開(kāi)始工作,就會(huì)一直向CPU請(qǐng)求數(shù)據(jù),直至歌曲結(jié)束,只有通過(guò)鍵盤操作才會(huì)使該功能提前結(jié)束。因?yàn)镸P3文件的數(shù)據(jù)量較大,在flash存儲(chǔ)器內(nèi)是以頁(yè)為單位進(jìn)行存儲(chǔ)的,所以MP3的播放程序初始化就是要把該文件的首地址和頁(yè)數(shù)先讀出到CPU中,然后CPU可以根據(jù)如上數(shù)據(jù)進(jìn)行取數(shù)據(jù)工作。
第二部分則一直在等待中斷發(fā)生,該程序是與鍵盤結(jié)合起來(lái)的,主要用于使用者對(duì)播放過(guò)程的控制。鍵盤操作對(duì)MP3播放過(guò)程的控制還包括后退、躍進(jìn)、跳到下一首、音量控制等。因?yàn)檎麄€(gè)播放過(guò)程的鍵盤控制功能比較單一,沒(méi)有鍵的復(fù)合操作,所以程序都很容易實(shí)現(xiàn)。當(dāng)MP3播放器插入到USB接口時(shí),系統(tǒng)執(zhí)行USB通訊功能模塊,該模塊主要用于對(duì)flash存儲(chǔ)器內(nèi)的文件數(shù)據(jù)進(jìn)行管理。固件程序是該模塊開(kāi)發(fā)的主要工作,由于AT89C5lSNDlC沒(méi)有外部中斷引腳,USB中斷沒(méi)有中斷向量地址入口,因此該固件程序的框架采用查詢工作方式。
3 FAT文件格式
因?yàn)樵撓到y(tǒng)還要具有U盤的功能,所以存儲(chǔ)器中的文件還要能夠讓計(jì)算機(jī)讀寫和識(shí)別,也就是所有的文件還要嚴(yán)格滿足計(jì)算機(jī)文件系統(tǒng)格式的要求。在所有計(jì)算機(jī)文件系統(tǒng)中,F(xiàn)AT是比較常用的一種。
一個(gè)FAT文件系統(tǒng)卷由4個(gè)部分組成:保留區(qū)、FAT區(qū)、根目錄區(qū)、文件和目錄數(shù)據(jù)區(qū)。其中保留區(qū)中的第一個(gè)分區(qū)必須是BPB,也稱作“引導(dǎo)扇區(qū)”,因?yàn)樗袑?duì)文件系統(tǒng)進(jìn)行識(shí)別的關(guān)鍵信息,計(jì)算機(jī)將以此信息識(shí)別存儲(chǔ)器文件格式,因此十分重要。
FAT區(qū)存放的是文件分配表。操作系統(tǒng)的存儲(chǔ)空間是按簇來(lái)分配的,簇是操作系統(tǒng)分配的最小存儲(chǔ)單元,每個(gè)簇在FAT表中占據(jù)一個(gè)16位的位置,稱為一個(gè)表項(xiàng)。同一個(gè)文件的數(shù)據(jù)并不一定存放在存儲(chǔ)區(qū)的一個(gè)連續(xù)的區(qū)域內(nèi),往往會(huì)分成若干段,像一條鏈子一樣的存放,這種存儲(chǔ)方式稱為文件的鏈?zhǔn)酱鎯?chǔ)。為了實(shí)現(xiàn)文件的鏈?zhǔn)酱鎯?chǔ),必須準(zhǔn)確地記錄哪些簇已經(jīng)被占用,還必須為每一個(gè)已經(jīng)占用的簇指明后繼內(nèi)容的下一個(gè)簇的簇號(hào),對(duì)于一個(gè)文件的最后一個(gè)簇,則要指明本簇沒(méi)有后繼簇,這些就是由FAT表來(lái)存儲(chǔ)的。
根目錄區(qū)存放的是目錄項(xiàng),每個(gè)目錄項(xiàng)為32個(gè)字節(jié),記錄一個(gè)文件或目錄的信息。目錄項(xiàng)所占的空間與目錄項(xiàng)的個(gè)數(shù)有關(guān)。
文件和目錄數(shù)據(jù)區(qū)是真正存放文件數(shù)據(jù)的位置,所有數(shù)據(jù)都是按照以上信息分配存儲(chǔ)的。
4 結(jié)束語(yǔ)
MP3為取得較好的壓縮效果而采用相對(duì)復(fù)雜的技術(shù),寬帶音頻信號(hào)的取樣率也較高(一般為44.1kHz以上),所以MP3編解碼的運(yùn)算量和數(shù)據(jù)量都相當(dāng)龐大。MPEGLayer III解碼算法在AT89C51SNDlC上驗(yàn)證通過(guò)并獲得較好的效果,在通過(guò)優(yōu)化后可流暢播放。由于51內(nèi)核單片機(jī)的性能限制,在緩沖時(shí)可能會(huì)有停頓。以上內(nèi)容敘述了由AT89C51SNDlC構(gòu)成的最小系統(tǒng)的結(jié)構(gòu),具備了便攜式MP3播放器的基本功能。其實(shí)AT89C51SNDlC還支持LCD顯示和IDE接口,還可以通過(guò)對(duì)以上接口模塊進(jìn)行擴(kuò)展,構(gòu)成更大更復(fù)雜的系統(tǒng)。
評(píng)論