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