摘 要:本文將闡述基于ID200和Micro SD卡的DAB音頻解碼系統(tǒng)的軟件設(shè)計(jì),該設(shè)計(jì)的主要任務(wù)就是為用戶提供一個(gè)信息豐富而且操作簡(jiǎn)單的可視化液晶界面,同時(shí)實(shí)現(xiàn)存儲(chǔ)在Micro SD卡上的DAB音頻數(shù)據(jù)流的回放功能。
關(guān)鍵詞:DAB Micro SD 音頻解碼
中圖分類號(hào):TP2文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1672-3791(2012)09(a)-0015-01
1 設(shè)計(jì)總體思想
基于ID200芯片和MicroSD卡的DAB音頻解碼部分的軟件設(shè)計(jì)[1]總體上是按照操作性強(qiáng)、可視化、穩(wěn)健性等特點(diǎn)出發(fā),進(jìn)行了整體設(shè)計(jì),盡可能讓結(jié)構(gòu)更加靈活,以便于移植和擴(kuò)展。
2 軟件設(shè)計(jì)流程
本軟件程序設(shè)計(jì)采用按鍵中斷,信息顯示,確認(rèn)選擇,調(diào)用操作函數(shù)的流程進(jìn)行。
首先,用戶按下回放啟動(dòng)按鍵給MCU產(chǎn)生中斷信息,MCU識(shí)別該按鍵信息后轉(zhuǎn)入執(zhí)行回放啟動(dòng)程序,同時(shí)顯示進(jìn)入回放進(jìn)程。此時(shí)MCU將配置基帶解碼芯片(ID200)為回放模式;啟動(dòng)SPI總線并設(shè)置供給Micro SD卡啟動(dòng)的時(shí)鐘(250kHz),然后上電Micro SD卡并進(jìn)行初始化,使其進(jìn)入SPI模式,緊接著就是獲取卡的配置參數(shù),計(jì)算出當(dāng)前接入系統(tǒng)的Micro SD卡的基本結(jié)構(gòu)扇區(qū)。然后重新配置Micro SD卡工作的時(shí)鐘,提高其工作頻率,此時(shí)需要的工作頻率為8MHz。自此Micro SD卡將開始正常工作,MCU先驅(qū)動(dòng)SPI總線通道選擇Micro SD卡,根據(jù)已經(jīng)讀取并計(jì)算出的各種參數(shù)信息,直接讀取根目錄表(FDT表)的第一個(gè)文件登記項(xiàng),并提取文件名稱、文件存儲(chǔ)的首簇號(hào)、文件長(zhǎng)度等信息,然后關(guān)閉選擇Micro SD卡的SPI總線通道。當(dāng)MCU獲得的文件名稱,文件編號(hào)后,通過ASCII碼轉(zhuǎn)換,再打開SPI通道選擇液晶模塊,驅(qū)動(dòng)液晶將這些信息顯示出來供用戶查看,此時(shí)液晶屏上會(huì)將顯示文件名稱、文件編號(hào)、按鍵指南等信息供用戶查看和操作。然后MCU將再次關(guān)閉SPI總線通道。
接著,MCU將等待用戶的選擇命令——按鍵選擇操作。如果用戶在查看文件名稱等信息后需要回放DAB音頻文件,那么就按鍵操作“確認(rèn)播放”;如果用戶在查閱文件名稱等信息后想繼續(xù)查看下一個(gè)文件信息,那么用戶可以按鍵選擇“NEXT”,選擇下一曲,MCU將再次打開SPI通道選擇Micro SD卡,開始訪問Micro SD卡的根目錄表(FDT表),讀取下一個(gè)文件的登記信息,同時(shí)提取相應(yīng)的文件名稱、文件存儲(chǔ)的首簇號(hào)、文件長(zhǎng)度等信息,并驅(qū)動(dòng)液晶顯示這些信息,以供用戶查閱。此時(shí)用戶可以根據(jù)自己的喜好進(jìn)行“前一曲”或者“下一曲”的選擇,然后進(jìn)行按鍵“確認(rèn)回放”。
在確認(rèn)回放之后,MCU開始根據(jù)文件存儲(chǔ)的首簇號(hào)計(jì)算獲取該文件在數(shù)據(jù)區(qū)中存儲(chǔ)的起始扇區(qū),同時(shí)根據(jù)文件長(zhǎng)度計(jì)算該文件所占的扇區(qū)數(shù),然后啟動(dòng)SPI總線通道選擇Micro SD卡,根據(jù)文件存儲(chǔ)的起始扇區(qū)從Micro SD卡中讀取第一個(gè)扇區(qū)的信息(512個(gè)字節(jié)),存入MCU的專用緩存器中,提取DAB音頻幀的幀頭信息,用來識(shí)別采樣率、比特率、聲音模式等信息,同時(shí)驅(qū)動(dòng)液晶并將這些信息顯示在液晶上供用戶查閱。在識(shí)別了采樣率之后,如果采樣率為48kHz的節(jié)目,MCU將每隔24ms向基帶的SRAM相應(yīng)地址空間存儲(chǔ)一幀數(shù)據(jù),供基帶在此段時(shí)間里完成一幀數(shù)據(jù)的解碼。48kHz采樣率節(jié)目的一幀數(shù)據(jù)長(zhǎng)度如式(1)所示。
在這24ms中,基帶將對(duì)這一幀數(shù)據(jù)進(jìn)行MPEG L2的音頻解碼,但是此時(shí)SPI總線已經(jīng)釋放,未進(jìn)行任何操作。MCU將檢測(cè)片內(nèi)緩沖區(qū)中的數(shù)據(jù)是否還能夠保證下一幀的發(fā)送數(shù)據(jù)量,如果該數(shù)據(jù)量(Bytes)能夠滿足下一幀的發(fā)送量,SPI將繼續(xù)等待啟用;但是如果該數(shù)據(jù)量(Bytes)不能夠滿足下一幀的發(fā)送量時(shí),MCU將立即啟動(dòng)SPI總線通道,選擇Micro SD卡,再次讀取下一個(gè)扇區(qū)的數(shù)據(jù),按順序保存到MCU的片內(nèi)緩沖區(qū)內(nèi),以供下一個(gè)24ms發(fā)送給基帶芯片。
對(duì)于基帶解碼部分,當(dāng)DAB音頻數(shù)據(jù)幀的幀頭被解碼后,其內(nèi)部時(shí)鐘均已配置完成,通過它將配置通往Audio DAC芯片的I2S通道的時(shí)鐘。此時(shí)MCLK為12.5MHz,LRCK為48kHz,SCLK為3MHz。采用RIGOL DS5102CA示波器測(cè)得的時(shí)鐘頻率分別為12.49MHz、48.08kHz、3.028MHz。基帶解碼芯片完成一幀解碼后輸出PCM采樣點(diǎn)給Audio DAC芯片,經(jīng)其轉(zhuǎn)換后通過耳機(jī)或者通過功放芯片驅(qū)動(dòng)喇叭就可以聽到美妙的DAB節(jié)目的聲音了。
如果識(shí)別的采樣率為24kHz,那么MCU將每隔24ms向基帶的SRAM相應(yīng)地址空間存儲(chǔ)半幀(1/2)數(shù)據(jù),供基帶在此段時(shí)間里完成1/2幀數(shù)據(jù)的解碼。24kHz采樣率節(jié)目的半幀數(shù)據(jù)長(zhǎng)度如式(2)所示。
在這24ms中,基帶將對(duì)這半幀數(shù)據(jù)進(jìn)行MPEG L2的音頻解碼,此時(shí)SPI總線已經(jīng)釋放,等待被啟動(dòng)。MCU將檢測(cè)片內(nèi)緩沖區(qū)中的數(shù)據(jù)是否還能夠保證下一幀的發(fā)送數(shù)據(jù)量,如果該數(shù)據(jù)量(Bytes)能夠滿足下一幀的發(fā)送量,SPI將繼續(xù)等待啟用;但是如果該數(shù)據(jù)量(Bytes)不能夠滿足下一幀的發(fā)送量時(shí),MCU將立即啟動(dòng)SPI總線通道選擇Micro SD卡,讀取下一個(gè)扇區(qū)的數(shù)據(jù),按順序保存到MCU的片內(nèi)緩沖區(qū)內(nèi),以供下一個(gè)24ms發(fā)送給基帶芯片。對(duì)于基帶解碼部分,當(dāng)24kHz采樣率節(jié)目的數(shù)據(jù)幀的幀頭被解碼后,其內(nèi)部時(shí)鐘也已配置完成,通過它將配置通往Audio DAC芯片的I2S通道的時(shí)鐘,此時(shí)MCLK為6.25MHz,LRCK為24kHz,SCLK為1.5MHz。采用RIGOL DS5102CA示波器測(cè)得的時(shí)鐘頻率分別為6.16MHz、23.98kHz、1.528MHz。基帶解碼芯片完成半幀解碼后輸出PCM采樣點(diǎn)給Audio DAC芯片(MAX9850),經(jīng)其轉(zhuǎn)換后通過耳機(jī)或者通過功放芯片驅(qū)動(dòng)喇叭就可以聽到美妙的DAB節(jié)目的聲音了。
如此逐幀逐幀(或者半幀)連續(xù)的解碼和DAC轉(zhuǎn)換,就能在時(shí)間上連續(xù)的回放出原來存儲(chǔ)在Micro SD卡里的DAB音頻文件了。
在音頻文件的回放期間,如果用戶覺得當(dāng)前的文件不好聽,或者想提前結(jié)束該段音頻,可以通過按鍵操作使MCU響應(yīng)中斷停止文件數(shù)據(jù)的傳輸回到選擇節(jié)目。如果用戶在文件的回放期間,MCU將會(huì)根據(jù)文件長(zhǎng)度計(jì)算出該文件存儲(chǔ)的扇區(qū)總數(shù),當(dāng)基帶解碼完成這個(gè)總數(shù)的數(shù)據(jù)量之后,MCU將停止從Micro SD卡讀取數(shù)據(jù),同時(shí)也停止向基帶解碼芯片(ID200)發(fā)送解碼數(shù)據(jù)。此時(shí)標(biāo)志著當(dāng)前用戶選擇的DAB音頻節(jié)目回放結(jié)束。此時(shí)MCU將啟動(dòng)SPI總線通道選擇液晶,并驅(qū)動(dòng)液晶顯示“節(jié)目結(jié)束”和“前一曲,后一曲”,以供用戶選擇。
如果用戶想結(jié)束回放模式,回到DAB正常接收狀態(tài),只需按鍵確認(rèn)退出回放模式即可,MCU將設(shè)置基帶解碼芯片的相應(yīng)模式寄存器,使其退出回放模式,進(jìn)入正常接收解碼模式。
參考文獻(xiàn)
[1]馮濤.數(shù)字音頻廣播的數(shù)據(jù)應(yīng)用,201