基于MCU和音頻解碼器設(shè)計磁帶式MP3播放器
卡式磁帶機(jī)播放功能:mTape和通用盒式磁帶一樣可以放入卡式磁帶機(jī)中進(jìn)行同步播放、快進(jìn)、快退、暫停等所有功能。之所以能夠?qū)崿F(xiàn)這些操作,完全在于它能夠測定卡式磁帶機(jī)導(dǎo)帶輪的轉(zhuǎn)動速度的快慢及方向。在mTape中有兩小一大三個互相咬合的齒輪,其中一個小齒輪可以隨卡式磁帶機(jī)中的導(dǎo)帶轉(zhuǎn)軸轉(zhuǎn)動,就可以通過大齒輪帶動另一小齒輪向同樣方向轉(zhuǎn)動。在大齒輪正上方的PCB板上安裝有兩個反射式光耦, 以大齒輪中心為交點(diǎn)兩光耦的軸心線夾角為45。,當(dāng)大齒輪的白色部分位于反射式光耦下部時,由反射式光耦組成的電路會產(chǎn)生低電平;反之,當(dāng)大齒輪的黑色部分位于反射式光耦下部時,由反射式光耦組成的電路會產(chǎn)生高電平。這樣,當(dāng)大齒輪勻速轉(zhuǎn)動時,兩個反射式光耦組成的電路就會產(chǎn)生A、B兩路方波。其中A路方波送入FS7821的通用GPIO,B路信號送到FS7821的外部中斷0引腳。A、B兩路方波相位總差90。。當(dāng)B方波下降沿觸犯外部中斷0后,如果判斷A方波電平為高,就為向前轉(zhuǎn);如果A方波為低電平,就為向后轉(zhuǎn)。轉(zhuǎn)動速度可以通過計算單位時間內(nèi)波形的數(shù)據(jù)進(jìn)行判斷。
USB充電:由于mTape內(nèi)置一塊大容量的鋰電池,采用一枚高效率的鋰電池充電芯片將來自USB口的+5V電源通過變?yōu)楹銐?.2V對鋰電池進(jìn)行充電。
自動上電/斷電功能:當(dāng)mTape插入卡式磁帶機(jī)并按下PLAY按鈕時,mTape上的磁頭會被磁帶機(jī)的磁頭下壓,mTape磁頭的托架下的小棒就會插入位于它下面的透射式光耦的間隙中,由透射式光耦組成的電路會啟動電源管理芯片為mTape供電。FS7821上電,并檢測系統(tǒng)狀態(tài),然后通過一個GPIO來控制電源管理芯片的狀態(tài),保持電源的穩(wěn)定性。當(dāng)卡式磁帶機(jī)處于暫停或停止?fàn)顟B(tài)時,mTape的磁頭會彈起,磁頭托架下的小棒會從透射式光耦的間隙中抽出。光耦電路就會發(fā)出一個待機(jī)信號。如果這個信號持續(xù)時間超過5分鐘,F(xiàn)S7821就會關(guān)閉電源,為mTape斷電。
軟件架構(gòu)
從軟件上來說,mTape主要有兩個功能,一個是音樂播放功能(包括便攜式MP3模式和卡式磁帶機(jī)播放模式),另一個是讀卡器功能。人-機(jī)界面管理(MMI management)程序根據(jù)mTape的按鍵、卡帶機(jī)傳來的信號、USB連接/斷開等自由的切換這兩種功能。具體軟件架構(gòu)見圖3。
音樂程序流程:音樂功能部分的主要任務(wù)是FS7821從SD/MMC卡中讀取一個音頻文件然后送到解碼器FS2401進(jìn)行解碼。當(dāng)所有的音樂文件播放完畢之后,mTape又返回播放第一首曲子,因此這是一個循環(huán)播放的模式。
讀卡器功能:讀卡器程序可以分為兩個部分:USB連接偵測部分和讀卡器實(shí)體部分。當(dāng)PC機(jī)的USB接口和mTape連接上以后,系統(tǒng)就進(jìn)入USB模式,執(zhí)行讀卡器實(shí)體程序。
MMI部分:MMI(人-機(jī)界面)管理部分處理用戶的發(fā)出的命令。用戶可以通過mTape上的按鍵、卡式磁帶機(jī)上的按鍵以及USB線的斷開/連接對mTape發(fā)出命令。這些命令分為兩種:一種是USB命令,另一種是音樂播放命令。因?yàn)镸MI沒有嚴(yán)格的實(shí)時性要求,而且程序不是十分復(fù)雜,所以在mTape中沒有必要采用實(shí)時操作系統(tǒng)。當(dāng)FS2401沒有音頻數(shù)據(jù)傳送要求時,F(xiàn)S7821就處于空閑狀態(tài)。利用這段空閑時間就足可以處理用戶發(fā)出的命令。
評論