繆賢浩 劉凱
摘 要:以基于雙核單片機(jī)AT89C51SND1C以及K9F5608U,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)MP3播放系統(tǒng),該播放系統(tǒng)能夠?qū)崿F(xiàn)mp3播放、歌曲信息顯示、歌曲選擇等功能,操作簡(jiǎn)單方便,成本低、系統(tǒng)可靠、易于擴(kuò)展。
關(guān)鍵詞:MP3;單片機(jī);AT89C51SND1C
隨著嵌入式技術(shù)的不斷發(fā)展,MP3播放器已經(jīng)在大眾生活中越來(lái)越普遍?;趩纹瑱C(jī)的MP3播放器設(shè)計(jì)包含了很多當(dāng)今流行的技術(shù)。由于各種技術(shù)的誕生,MP3播放器設(shè)計(jì)呈現(xiàn)出多樣化的趨勢(shì)。
1 系統(tǒng)整體設(shè)計(jì)
本系統(tǒng)主要實(shí)現(xiàn)一個(gè)MP3播放器的功能,其中包括文件傳輸和存儲(chǔ)功能。為簡(jiǎn)化設(shè)計(jì),降低成本,整個(gè)系統(tǒng)主控CPU采用的是雙核AT89C51SNDIC,整個(gè)系統(tǒng)還包括K9F5608U,電源部分、音頻部分、串行通信部分和人機(jī)接口部分組成。
2 主要硬件電路設(shè)計(jì)
本設(shè)計(jì)的主控CPU自帶MP3解碼模塊,因此本設(shè)計(jì)主要硬件電路為音頻放大以及文件存儲(chǔ)模塊。
2.1 音頻模塊
本系統(tǒng)采用的芯片是CS4330,該芯片能夠支持48KHz,44.1KHz和32KHz的標(biāo)準(zhǔn)音頻數(shù)據(jù)。音頻數(shù)據(jù)通過(guò)SDATA引腳輸入,LRCK引腳控制著左右聲道以及相應(yīng)數(shù)據(jù)的劃分,而SCLK為即將輸入懂啊緩沖區(qū)的數(shù)據(jù)提供時(shí)鐘。CS4330沒(méi)有配置引腳,無(wú)需軟件配置。
CS4330的數(shù)據(jù)格式是右對(duì)齊的18位數(shù)據(jù)格式,支持內(nèi)部以及外部SCLK工作模式,且數(shù)據(jù)在SCLK信號(hào)的上升沿有效,可在軟件中通過(guò)配置AT89C51SND1C的音頻部件,確保正確工作。聲音信號(hào)將數(shù)字音頻信息送到芯片CS4330中,再通過(guò)TDA2822放大后進(jìn)入音頻輸出設(shè)備,電路如下圖所示。
2.2 文件存儲(chǔ)模塊
K9F5608U是Nand Flash芯片,韓國(guó)三星公司產(chǎn)品。這種Flash芯片被大量的應(yīng)用在存儲(chǔ)設(shè)備上,比如U盤(pán)、MP3、數(shù)碼相機(jī)等。因AT89C51SND1C沒(méi)有集成Nand Flash的訪問(wèn)控制器,故只能用單片機(jī)I/O口來(lái)模擬該芯片的通信時(shí)序?qū)崿F(xiàn)數(shù)據(jù)的訪存。K9F5608U外圍電路圖如圖2所示。
3 系統(tǒng)的軟件設(shè)計(jì)
3.1 軟件整體設(shè)計(jì)方案
根據(jù)系統(tǒng)的實(shí)際需求,軟件可分為主程序、MP3、U盤(pán)控制等模塊,在U盤(pán)控制模塊中則有簡(jiǎn)單的文件系統(tǒng)和Flash讀寫(xiě)程序用于U盤(pán)的讀寫(xiě)。通信模塊主要功能是用于調(diào)試為加強(qiáng)用戶(hù)體驗(yàn),該系統(tǒng)還加入了LCD模塊顯示歌曲信息,鍵盤(pán)模塊用于切換歌曲。
系統(tǒng)從主程序啟動(dòng)后,通過(guò)選擇單片機(jī)的P口中的一個(gè)二進(jìn)制位作為考察位,當(dāng)它的電平為高電平的時(shí)候進(jìn)入U(xiǎn)盤(pán)模式,相反則為MP3播放模式。在需要進(jìn)行程序的調(diào)試時(shí),需要借助通信模塊從串口輸出一些信息。
3.2 U盤(pán)控制模塊
U盤(pán)插入,主機(jī)得到U盤(pán)描述符后識(shí)別出U盤(pán)是支持bulk-only的海量存儲(chǔ)設(shè)備。于是兩者就通過(guò)bulk端點(diǎn)進(jìn)行通信,主機(jī)和設(shè)備的通信過(guò)程即傳輸定義好的數(shù)據(jù)包的過(guò)程。
對(duì)于一個(gè)USB海量存儲(chǔ)設(shè)備而言,必須支持三個(gè)端點(diǎn)的數(shù)據(jù)處理。即:?jiǎn)?號(hào)端點(diǎn)和雙非0端點(diǎn)。在程序結(jié)構(gòu)設(shè)計(jì)上可以采取中斷或者查詢(xún)的方式,在不影響系統(tǒng)運(yùn)行速度的情況下,這里采用程序查詢(xún)的模式進(jìn)行,即:逐步查詢(xún)端點(diǎn)0、1、2是否產(chǎn)生中斷,若有則執(zhí)行相應(yīng)的操作。本設(shè)計(jì)中端點(diǎn)0、1、2分別用于處理標(biāo)準(zhǔn)的USB,Bulk-In以及Bulk-Out請(qǐng)求[1]。
3.3 MP3播放模塊
在每首MP3歌曲開(kāi)始播放的時(shí)候,需要初始化MP3文件,即:從MP3文件的頭部提取采樣率等信息,通過(guò)設(shè)置,讓采樣率與MP3解碼器模塊中的時(shí)鐘相匹配。如果開(kāi)始檢測(cè)到有標(biāo)簽ID3V2.3的標(biāo)簽頭,則獲得標(biāo)簽大小后將這些標(biāo)簽幀全部跳過(guò),然后將幀頭讀取到內(nèi)存中,根據(jù)MP3幀頭的格式,分離出MPEG版本和采樣率標(biāo)識(shí)來(lái),設(shè)置PLL時(shí)鐘來(lái)滿足MP3解碼器和音頻要求。
MP3歌曲的采樣率設(shè)置好以后,就播放該歌曲。在默認(rèn)情況下,播放完一首歌曲,主控程序會(huì)繼續(xù)播放下一首歌曲。
在MP3播放程序中,數(shù)據(jù)是從K9F5608芯片到存儲(chǔ)器然后再到解碼器的緩沖區(qū)中,數(shù)據(jù)量是相當(dāng)大的,因此,需要充分考慮到考慮到數(shù)據(jù)在傳輸過(guò)程中,程序的運(yùn)行時(shí)間要與數(shù)據(jù)傳輸時(shí)間相匹配的問(wèn)題,也就是程序的執(zhí)行效率問(wèn)題。實(shí)際上此類(lèi)的程序的分析屬于按數(shù)據(jù)流程思考問(wèn)題的例子。具體地說(shuō),不能因?yàn)槌绦蜻\(yùn)行的效率不夠高導(dǎo)致MP3解碼器緩沖區(qū)填充的數(shù)據(jù)出現(xiàn)“斷點(diǎn)”,聲音緩沖區(qū)出現(xiàn)斷電,播放出來(lái)的mp3必然有“斷音”的情況出現(xiàn),這就是因程序設(shè)計(jì)導(dǎo)致聲音雜亂的原因所在。為了保證不出現(xiàn)間斷的問(wèn)題,需要保證MP3解碼的速率不能比填充到緩沖區(qū)的速率大,不能讓解碼這個(gè)步驟“停止工作”。具體到程序中,從SRAM緩沖區(qū)復(fù)制到MP3解碼器的時(shí)間要足夠短,能夠等待解碼器確認(rèn)信號(hào),然后再進(jìn)行下次操作。在這個(gè)時(shí)間里可以處理例如鍵盤(pán)中斷服務(wù)程序設(shè)置標(biāo)志位的查詢(xún)與響應(yīng),本程序中判斷是否暫停。
另外一方面,MP3解碼器也不能處于等待狀態(tài)。與上面的情況相反,在等待的過(guò)程中處理太多的事情,最后解碼器會(huì)出現(xiàn)等待的狀況,這樣也會(huì)影響到聲音的播放。另外的一點(diǎn)就是,由于每一級(jí)的數(shù)據(jù)的讀取都需要時(shí)間,從數(shù)據(jù)從FLASH中讀取的最初階段需要有一定的的提前量,不能出現(xiàn)解碼器要數(shù)據(jù)才開(kāi)始讀的情況出現(xiàn)。
4 系統(tǒng)的實(shí)現(xiàn)
本文對(duì)MP3系統(tǒng)的設(shè)計(jì)進(jìn)行了深入的研究,并借助AT89C51SND1C芯片設(shè)計(jì)了一個(gè)MP3播放器為例,實(shí)現(xiàn)一個(gè)MP3播放功能。整個(gè)系統(tǒng)由AT89C51SND1C、K9F5608U,供電模塊、音頻處理模塊、串行調(diào)試模塊部分和其他輸入/輸出模塊組成。
以下是MP3播放器功能正在運(yùn)行,當(dāng)前Flash里面存放了四首歌,系統(tǒng)將會(huì)不斷地循環(huán)的播放這四首歌,并能調(diào)節(jié)音量,音調(diào),曲目的切換操作。
[參考文獻(xiàn)]
[1]張景璐,于京,馬澤明.51單片機(jī)項(xiàng)目教程[M].北京:人民郵電出版社,2010.3:121-139.
[2]陳海宴.51單片機(jī)原理及應(yīng)用:基于Keil C與Proteus[M].北京:北京航空航天大學(xué)出版社,2010.
[3]李軍.51系列單片機(jī)高級(jí)開(kāi)發(fā)指南名[M].北京:北京航空航天大學(xué)出版社,2004.
[4]李華,主編.MCS-51系列單片機(jī)實(shí)用接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,1996.
[5]張毅剛,彭喜元,姜守達(dá).新編MCS-51單片機(jī)應(yīng)用設(shè)計(jì)[M].哈爾濱:工業(yè)大學(xué)出版社,2008.