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