帶SD/MMC存儲卡接口的MP3和弦芯片ft1780
隨著MP3手機(jī)的興起,用戶不僅對手機(jī)音樂的音量、音質(zhì)要求越來越高,而且對手機(jī)的存儲容量的要求也越來越大,總希望能多存些歌,可以省去頻繁換歌的煩惱。但目前一般手機(jī)自帶的內(nèi)存遠(yuǎn)遠(yuǎn)不能滿足這些要求,而且很多手機(jī)平臺也無法支持外接存儲卡,為了解決這一問題,就需要有配套的存儲管理芯片。
方泰電子的ft1780可以幫手機(jī)設(shè)計(jì)工程師很好的解決這個(gè)難題。它不僅可以提供專業(yè)的MP3音樂,而且集成了SD/MMC存儲卡接口,由于內(nèi)置文件管理系統(tǒng),可以方便地升級原有的手機(jī)產(chǎn)品,使之具有可更換外接SD/MMC存儲卡的功能。本文介紹了ft1780音頻處理芯片的功能特點(diǎn),并詳細(xì)敘述了其在手機(jī)上的應(yīng)用實(shí)例。
ft1780芯片內(nèi)部結(jié)構(gòu)和特點(diǎn)
圖1是ft1780芯片的內(nèi)部框圖,從中可以看出,ft1780主要由7部分組成。
圖1:ft1780芯片內(nèi)部框圖。 |
1. 主機(jī)接口:與Baseband相連,Baseband通過它向ft1780發(fā)命令和讀取狀態(tài);
2. 音頻/系統(tǒng)引擎:芯片的核心部分,完成64和弦MIDI合成,MP3解碼,七段數(shù)字均衡器,文件系統(tǒng)管理,系統(tǒng)控制等功能;
3. SD/MMC卡控制器:完成SD/MMC卡接口功能;
4. 輸入/輸出控制器:完成I2S接口,四路LED控制,馬達(dá)和背光控制等功能;
5. 電源管理系統(tǒng):可以關(guān)掉不用的功能模塊,節(jié)省系統(tǒng)功耗;
6. 立體聲耳機(jī)功放:可以直接驅(qū)動16ohm的耳機(jī),輸出功率可達(dá)到20mW以上;
7. 喇叭功放:可以直接驅(qū)動8ohm喇叭,輸出功率可達(dá)到500mW以上;
ft1780芯片采用6mmx7mm 48Pin的BGA封裝,與其它普通MP3解碼芯片相比,它有以下幾個(gè)主要特色:
1. 工作電流小,具有高效的省電設(shè)計(jì)電路,芯片內(nèi)各模塊可以單獨(dú)控制開和關(guān),可滿足手機(jī)上不同的工作模式要求;
2. 支持全系列采樣率和編碼率的MP3數(shù)據(jù),包括MPEG Version1 Layer3,MPEG Version2 Layer3和MPEG Version2.5 Layer3標(biāo)準(zhǔn),采樣率范圍是8~48kHz,編碼率是8~320kbps,解碼品質(zhì)高,聲音音質(zhì)好;
3. 支持64和弦的鈴聲,支持自有的人聲音效格式(FTF格式),同時(shí)支持自然音和背景音的播放;
4. 內(nèi)置SD/MMC卡的文件管理系統(tǒng)程序,不需要手機(jī)的基帶來解析SD/MMC卡上的文件系統(tǒng),基帶只要發(fā)簡單的命令就可以控制ft1780的播放功能,SD/MMC卡的數(shù)據(jù)可以不經(jīng)過基帶,由ft1780芯片自己讀取和播放,這樣可以大大減輕基帶的負(fù)擔(dān),也因此拓寬了ft1780的應(yīng)用面。
5. 內(nèi)置高品質(zhì)立體聲耳機(jī)功率放大電路,輸出功率大,并具有無耦合電容設(shè)計(jì)的耳機(jī)輸出電路。普通的耳機(jī)輸出需要兩個(gè)較大的隔直電容,若電容容量太小,會使低頻響應(yīng)變差,聲音低頻失真。而無耦合電容設(shè)計(jì)可以節(jié)省成本,節(jié)省手機(jī)電路板寶貴的空間,增加耳機(jī)輸出的保真度。
6. 內(nèi)置喇叭功率放大電路,在8ohm喇叭上可以輸出500mW以上的功率。
圖2:典型應(yīng)用示意圖。 |
ft1780芯片的曲型應(yīng)用
ft1780的應(yīng)用電路比較簡單,所需的外圍器件很少,只需要十幾個(gè)電阻和電容,典型應(yīng)用線路如2所示。通過調(diào)整R1和R3的比值可以調(diào)節(jié)ft1780內(nèi)部輸出到喇叭的增益,通過調(diào)整C1和C3可以調(diào)節(jié)喇叭輸出聲音的高頻和低頻特性,對于圖中所列參數(shù),R1=33k歐姆,C1=330pF,R3=33k歐姆,C3=0.1uF,增Gain=R1/R3=1,高頻截止頻率為FH=1/(2*π*R1*C1)=14.6kHz,低頻截止頻率為FL=1/(2*π*R3*C3)=48.2Hz。從Audio In進(jìn)來的音頻信號可以通過控制從喇叭或耳機(jī)出來,并且可以根據(jù)需要通過R2和C2調(diào)節(jié)它的低頻響應(yīng)曲線。圖中,耳機(jī)的輸出已用了無耦合電容設(shè)計(jì),所以圖上沒有輸出耦合電容,但要注意的是,耳機(jī)的公共端不是通常的“地”,需是芯片上的虛擬地腳“HPR”。另外芯片的VDDA腳可以直接與電池的正級相接,在不需芯片工作時(shí),可以用軟件來控制芯片進(jìn)入"Power Down"狀態(tài),這時(shí)芯片的耗電只有幾微安。
相關(guān)軟件和播放流程
ft1780芯片的工作需要相應(yīng)的驅(qū)動程序支持。驅(qū)動程序采用模塊化結(jié)構(gòu),各功能都有相應(yīng)的程序,在Design In過程中,只要修改硬件相關(guān)的地址參數(shù),加入中斷服務(wù)程序(也可以使用定時(shí)器相關(guān)的查詢模式),然后調(diào)用相應(yīng)的API就可以正常工作(發(fā)出聲音)了。圖3是軟件模塊示意圖,下面簡單介紹一下各模塊的功能:
圖3:軟件模塊示意圖。 |
1. 硬件平臺相關(guān)模塊:需要根據(jù)手機(jī)平臺的情況修改相應(yīng)的參數(shù),主要有芯片寄存器的操作地址,輸入時(shí)鐘的頻率等;
2. MIDI模塊:MIDI數(shù)據(jù)解析和處理,MIDI播放控制和回調(diào)控制;
3. ADPCM模塊:ADPCM數(shù)據(jù)解析和處理,ADPCM播放控制和回調(diào)控制;
4. FTF模塊:FTF數(shù)據(jù)解析和處理,F(xiàn)TF播放控制和回調(diào)控制;
5. SD/MMC模塊:SD/MMC命令解析和處理,SD/MMC播放控制和回調(diào)控制;
6. MP3模塊:MP3數(shù)據(jù)解析和處理,MP3播放控制和回調(diào)控制;
7. 中斷服務(wù)模塊:對芯片的各個(gè)中斷事件作相應(yīng)的處理,主要補(bǔ)充數(shù)據(jù),播放結(jié)束控制和出錯(cuò)信息處理等;
8. 驅(qū)動程序API模塊:提供用戶所需的所用功能的調(diào)用,用戶不必關(guān)心具體底層模塊的細(xì)節(jié),只需與上層API打交道;
9. 用戶參考模塊:如何使用API控制播放的一個(gè)例子,也可以作為API的進(jìn)一步包裝,供用戶直接使用。
下面我們介紹一下ft1780軟件的使用方法。
播放Baseband上文件的流程
圖4是播放Baseband上文件的流程圖。當(dāng)用戶想播放Baseband上的音頻數(shù)據(jù)時(shí),首先是要對ft1780芯片做初始化,然后對要播放的數(shù)據(jù)做預(yù)處理,驅(qū)動程序會分析數(shù)據(jù)格式,并根據(jù)格式自動調(diào)用底層處理函數(shù),再下一步是啟動中斷或定時(shí)器、消息等機(jī)制,這一步的目的是啟動后臺處理任務(wù),當(dāng)進(jìn)入播放狀態(tài)時(shí),需由后臺任務(wù)完成后續(xù)的處理工作,最后就是發(fā)播放開始命令,開始播放聲音,進(jìn)入播放狀態(tài)。
圖4:播放Baseband上文件的流程圖。 |
在播放狀態(tài)下,ft1780芯片會根據(jù)內(nèi)部運(yùn)作情況發(fā)出中斷請求,Baseband必需在一定時(shí)間內(nèi)處理相應(yīng)事件,否則會出現(xiàn)聲音停頓,不連續(xù)等現(xiàn)象。在ft1780芯片內(nèi)部有很大的FIFO(先進(jìn)先出存儲器)來保存播放的數(shù)據(jù),可以適應(yīng)低端Baseband中斷反應(yīng)延時(shí)比較大的問題,保證聲音播放的順暢。
在播放過程中,Baseband隨時(shí)可以調(diào)用相應(yīng)的API來停止當(dāng)前的播放,或讀取播放信息,暫停/恢復(fù)等操作。
播放SD/MMC卡上文件的流程
圖5是播放SD/MMC卡上文件的流程圖。當(dāng)用戶想播放SD/MMC卡上的聲音文件時(shí),首先是要對ft1780芯片做初始化,然后讀出卡上的聲音文件,選擇要播放的文件,調(diào)用簡單的API播放命令后,進(jìn)入播放狀態(tài),芯片會自動讀取卡上的數(shù)據(jù),播放出聲音,再下一步是啟動中斷或定時(shí)器、消息等機(jī)制,這一步的目的是啟動后臺處理任務(wù),處理中斷事務(wù)。
圖5:播放SD/MMC卡上文件的流程圖。 |
雖然看上去與播放Baseband上文件的流程差不多,但主要有以下不同:當(dāng)播放Baseband上文件時(shí),Baseband必須不斷地送數(shù)據(jù)到ft1780芯片內(nèi)部,中斷會比較頻繁(與所播放的文件的碼流率有關(guān)),而當(dāng)播放SD/MMC卡上的文件時(shí),ft1780芯片自己從SD/MMC卡里讀取所需數(shù)據(jù),不需要Baseband的干預(yù),在播放過程中基本上沒有中斷任務(wù),只有在播放結(jié)束時(shí)會發(fā)出中斷告知Baseband,由Baseband決定下一步的工作,如重復(fù)播放、或播放下一個(gè)文件,所以對Baseband的要求更低,適應(yīng)性更廣。
在播放過程中,Baseband隨時(shí)調(diào)用相應(yīng)的API函數(shù),完成停止播放,暫停/恢復(fù)等功能。