《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 設(shè)計(jì)應(yīng)用 > 藍(lán)牙車載音頻流播放器的設(shè)計(jì)與實(shí)現(xiàn)
藍(lán)牙車載音頻流播放器的設(shè)計(jì)與實(shí)現(xiàn)
來源:微型機(jī)與應(yīng)用2010年第9期
馬建輝1,,馬共立2,王 勇1
1.山東省科學(xué)院自動化研究所 汽車電子實(shí)驗(yàn)室,,山東 濟(jì)南 250014;2.哈爾濱威克科技股份有限公
摘要: 設(shè)計(jì)了一款在車載娛樂系統(tǒng)中使用的藍(lán)牙音頻流播放器,,采用A2DP實(shí)現(xiàn)音樂數(shù)字音頻流的傳輸,,采用AVRCP實(shí)現(xiàn)對音樂的遠(yuǎn)程控制和信息讀取,介紹了該播放器的若干設(shè)計(jì)技術(shù),。
Abstract:
Key words :

摘  要: 設(shè)計(jì)了一款在車載娛樂系統(tǒng)中使用的藍(lán)牙音頻流播放器,,采用A2DP實(shí)現(xiàn)音樂數(shù)字音頻流的傳輸,采用AVRCP實(shí)現(xiàn)對音樂的遠(yuǎn)程控制和信息讀取,,介紹了該播放器的若干設(shè)計(jì)技術(shù),。
關(guān)鍵詞: 藍(lán)牙;音頻流,;A2DP,;AVRCP

    現(xiàn)在的車載信息娛樂系統(tǒng)中標(biāo)準(zhǔn)配置有帶CD播放功能的收音機(jī)、液晶屏,,其他可選配置有GPS和藍(lán)牙免提裝置等設(shè)備,。隨著藍(lán)牙技術(shù)在音視頻傳輸中的應(yīng)用,一種可以增強(qiáng)用戶娛樂體驗(yàn)的藍(lán)牙音頻流播放功能正逐步在車載信息娛樂系統(tǒng)中得到應(yīng)用,。藍(lán)牙音頻流播放功能是指將藍(lán)牙MP3或藍(lán)牙手機(jī)上的音樂通過藍(lán)牙以流媒體的方式傳輸?shù)竭h(yuǎn)端設(shè)備上進(jìn)行解碼后通過遠(yuǎn)端設(shè)備的功放系統(tǒng)播放,,同時(shí)遠(yuǎn)端設(shè)備還帶有遠(yuǎn)程控制功能,,使得用戶可以在遠(yuǎn)端設(shè)備上操作音樂,使其暫停,、播放,、快進(jìn)快退或進(jìn)行上下首切換。筆者設(shè)計(jì)實(shí)現(xiàn)了一款藍(lán)牙車載音頻流播放器,,該播放器和收音機(jī)及液晶屏之間通過CAN總線進(jìn)行連接,,控制操作在收音機(jī)上實(shí)現(xiàn),液晶屏顯示音樂的tagID3,、播放時(shí)間,、音軌、總音軌等信息,,控制命令和播放信息都是通過CAN總線進(jìn)行傳輸,。從用戶的使用角度來說,該藍(lán)牙音頻流播放器是和收音機(jī),、液晶屏組成一套系統(tǒng)的,。
1 系統(tǒng)結(jié)構(gòu)
    系統(tǒng)結(jié)構(gòu)如圖1所示。音頻流播放器,、液晶屏和收音機(jī)組成一個車載娛樂系統(tǒng)的CAN網(wǎng)絡(luò),,控制命令及狀態(tài)信息均通過CAN總線傳輸,其中收音機(jī)帶有功放,,直接驅(qū)動汽車?yán)?,并統(tǒng)一管理包括FM、CD和音頻流播放器的音頻輸出在內(nèi)的音源,。音頻流播放器和藍(lán)牙手機(jī)通過藍(lán)牙進(jìn)行交互,,采用A2DP(Advanced Audio Distribution Profile)完成音樂音頻流數(shù)據(jù)及相關(guān)格式信息的傳輸,通過AVRCP(Audio/Video Remote Control Profile)完成對音樂的遠(yuǎn)程播放控制及播放信息及狀態(tài)的讀取,。在A2DP中引入了2個終端名:SRC(Source)和SNK(Sink),。在這里,數(shù)字音頻流的數(shù)據(jù)發(fā)送端藍(lán)牙手機(jī)稱為SRC,,數(shù)字音頻流的接收端藍(lán)牙音頻流播放器稱為SNK,。

2 硬件設(shè)計(jì)
    藍(lán)牙音頻流播放器的硬件設(shè)計(jì)中,包括CAN通訊,、藍(lán)牙子系統(tǒng)和音頻系統(tǒng)3個部分,,其中藍(lán)牙子系統(tǒng)和音頻系統(tǒng)部分采用CSR的藍(lán)牙單芯片Bluecore5-MutiMedia(以下簡稱BC5)實(shí)現(xiàn)。該芯片集成了MCU實(shí)現(xiàn)藍(lán)牙協(xié)議棧及應(yīng)用,,集成了性能高達(dá)64MIPS的DSP實(shí)現(xiàn)音樂文件的編解碼,,集成了CODEC、音頻ADC及DAC,,實(shí)現(xiàn)了音頻輸入輸出功能,,圖2描述了基于該芯片的硬件設(shè)計(jì),。
    由圖2可見,BC5內(nèi)部集成了藍(lán)牙射頻及基帶控制,、MCU,、DSP和音頻CODEC,只需要很少的外圍元件便能完成電路設(shè)計(jì),。

3 播放控制狀態(tài)機(jī)的設(shè)計(jì)
    藍(lán)牙音頻流的遠(yuǎn)程播放控制使得用戶可以使用車載收音機(jī)上控制CD音樂的按鍵來控制藍(lán)牙手機(jī)上的音樂,,控制操作包括播放、暫停,、上一首,、下一首、快進(jìn)和快退,,通過AVRCP(音視頻遠(yuǎn)程控制剖面)命令實(shí)現(xiàn),。考慮到用戶操作隨機(jī)性很強(qiáng)及藍(lán)牙手機(jī)的音頻流支持特性不同的問題,,需要設(shè)計(jì)一個完善的遠(yuǎn)程播放控制狀態(tài)機(jī)來保證良好的操作體驗(yàn),。
    遠(yuǎn)程播放控制狀態(tài)機(jī)是個組合式狀態(tài)機(jī),包括2個小的狀態(tài)機(jī):(1)狀態(tài)為藍(lán)牙手機(jī)音樂狀態(tài),,輸入為人機(jī)接口操作,,在人機(jī)接口操作的處理中判斷當(dāng)前音樂狀態(tài),決定輸出的AVRCP命令,;(2)狀態(tài)為人機(jī)接口操作或者說“期望狀態(tài)”,,輸入為藍(lán)牙手機(jī)音樂當(dāng)前狀態(tài)的更新,在音樂狀態(tài)更新的處理中根據(jù)期望狀態(tài)決定輸出的AVRCP命令,。把人機(jī)接口操作稱為“期望狀態(tài)”,,把當(dāng)前音樂狀態(tài)稱為“實(shí)際狀態(tài)”,這兩個狀態(tài)機(jī)的原理便是當(dāng)期望狀態(tài)和實(shí)際狀態(tài)不一致時(shí),,發(fā)送可以達(dá)到期望狀態(tài)的AVRCP命令。下面詳細(xì)介紹下狀態(tài)機(jī)的設(shè)計(jì)要點(diǎn),。
    首先每個人機(jī)操作的控制命令在AVRCP上都對應(yīng)2個命令,,對于播放、暫停,、上一首,、下一首操作,命令是連續(xù)執(zhí)行的,,比如暫停操作便是在AVRCP上連續(xù)執(zhí)行PAUSE_PRESS和PAUSE_RELEASE命令,;而對于快進(jìn)命令,則是先執(zhí)行FF_PRESS命令,,在快進(jìn)按鍵松開時(shí)再執(zhí)行FF_RELEASE命令,。
    音樂狀態(tài)(包括期望狀態(tài)和實(shí)際狀態(tài))包括2個穩(wěn)定狀態(tài)(播放狀態(tài)PLAY,、暫停狀態(tài)PAUSE)和2個中間狀態(tài)(快進(jìn)狀態(tài)FF和快退狀態(tài)FB)。對于PLAY和PAUSE狀態(tài),,由于藍(lán)牙手機(jī)的播放鍵和暫停鍵是一個乒乓按鍵,,即暫停狀態(tài)下按下會啟動播放,播放狀態(tài)下按下會引起暫停,,所以如果實(shí)際狀態(tài)和期望狀態(tài)一致時(shí)便不發(fā)送AVRCP命令,,而且對于用戶在手機(jī)上進(jìn)行操作引起的實(shí)際狀態(tài)和期望狀態(tài)的不一致,也不發(fā)送任何AVRCP命令,,否則會造成本該暫停卻播放或本該播放卻暫停的錯誤,。對于快進(jìn)快退,首先在快進(jìn)快退中不要判斷當(dāng)前音樂是暫停還是播放,,其次因?yàn)椴糠质謾C(jī)在快進(jìn)快退結(jié)束后會先把音樂暫停一下再播放,,所以不要在快進(jìn)快退剛結(jié)束時(shí)便調(diào)用播放控制狀態(tài)機(jī),需要延遲一段時(shí)間處理,。
4 音頻流狀態(tài)處理及信息解析
    流媒體信息包括編解碼格式及采樣率設(shè)置,、音樂播放狀態(tài)、當(dāng)前播放時(shí)間,、TagID3信息等,。首先藍(lán)牙傳輸?shù)臄?shù)據(jù)為編碼后的音樂文件,SRC端實(shí)現(xiàn)編碼,,SINK端實(shí)現(xiàn)解碼,,所以首先要按照編碼格式選擇相應(yīng)的解碼器,其次還需要在本地音頻輸出端設(shè)置同樣的采樣頻率,。
    播放狀態(tài)對應(yīng)于播放模式,,包括播放、暫停,、快進(jìn),、快退4種狀態(tài),其中播放和暫停是對播放控制狀態(tài)機(jī)非常關(guān)鍵的狀態(tài),。對無法把播放和暫停狀態(tài)發(fā)送上來的藍(lán)牙手機(jī),,需要設(shè)計(jì)一種方法來判斷當(dāng)前音樂處于哪種狀態(tài)。音樂在播放狀態(tài)時(shí),,流媒體音樂數(shù)據(jù)通過藍(lán)牙從SRC端傳輸?shù)絊NK端,,SNK端將該藍(lán)牙數(shù)據(jù)傳輸?shù)紹C5的DSP中進(jìn)行解碼,所以可以通過判斷DSP的解碼器緩存中是否有數(shù)據(jù)來判斷當(dāng)前音樂狀態(tài),,如果沒有數(shù)據(jù)則音樂處于暫停狀態(tài),。
    當(dāng)前播放時(shí)間、TagID3信息需要AVRCP V1.3的支持,AVRCP V1.3定義了一種獨(dú)特格式的TagID3信息,,下面以邁克杰克遜的Billie Jean這首音樂為實(shí)例分析AVRCP中的TagID3格式,,其Tag ID3數(shù)據(jù)為十六進(jìn)制形式的“0 0 0 1 0 6a 0 b 42 69 6c 6c 69 65 20 4a 65 61 6e 0 0 0 2 0 6a 0 f 4d 69 63 68 61 65 6c 20 4a 61 63 6b 73 6f 6e 0 0 0 3 0 6a 0 0 0 0 0 4 0 6a 0 1 32”。TagID3包括標(biāo)題名,、演唱者,、專輯名稱、音軌(第幾首),、總音軌(音樂總數(shù))5個屬性,,每條屬性采用“4個字節(jié)的屬性ID+2個字節(jié)的字符集信息+2個字節(jié)的屬性長度+屬性數(shù)據(jù)”的格式,其中屬性ID“0 0 0 1”表示標(biāo)題名,,“0 0 0 2”表示演唱者,,“0 0 0 3”表示專輯名稱,“0 0 0 4”表示音軌,,“0 0 0 5”表示總音軌,,常用字符集為avrcp_char_set_ascii=0 3,avrcp_char_set_utf_8=0 6a,。按照上述格式,,該音樂標(biāo)題名為長度為11(0 b)的“42 69 6c 6c 69 65 20 4a 65 61 6e”,即Billie Jean,,演唱者為長度為15(0 f)的“4d 69 63 68 61 65 6c 20 4a 61 63 6b 73 6f 6e”,,即Michael Jachson,沒有專輯名稱和總音軌(長度為0),,音軌為0x32,,即第2首歌。
    根據(jù)該格式設(shè)計(jì)屬性提取器如下:
    While(m<TagID3_length)
    {
        for (k=0,;k<4,;k++)
        {   av_streaming[n].attri[k]=TagID3[m];
            m++,;
        }                   
       if((av_streaming[n].attri[0]!=0)‖(av_streaming[n].attri[1]!=0)‖(av_streaming[n].attri[2]!=0)‖(av_streaming[n].attri[3]>5))
       {     errorflag=1,;
       }
    if(errorflag==0)
    {                                                       for(k=0;k<2,;k++)
       {     av_streaming[n].charset[k]=TagID3[m],;    
             m++;    
       }
       for (k=0,;k<2,;k++)       
       {     av_streaming[n].datalength[k]=TagID3[m],;       
             m++,;
       }            
       av_streaming[n].datalen=av_streaming[n].datalength[1]|(av_streaming[n].datalength[0]<<8);
       for (k=0,;k<av_streaming[n].datalen,;k++)
       {     av_streaming[n].tagid3data[k]=TagID3[m],;
             m++;
       }
             av_streaming[n].tagid3data[av_streaming[n].datalen]=‘\0’,;
             n++,;
       }
       else
       {     errorflag=0;
       }
    }
    經(jīng)上述代碼的解析,,屬性ID在av_streaming[n].attri中,,屬性數(shù)據(jù)在長度為av_streaming[n].datalen的數(shù)據(jù)av_streaming[n].tagid3data中。
    本文設(shè)計(jì)了一款藍(lán)牙車載音頻流播放器,。該播放器運(yùn)行穩(wěn)定可靠,,兼容性好,大大方便了用戶的使用,,有很好的實(shí)用價(jià)值,。
參考文獻(xiàn)
[1] 蘇民生.藍(lán)牙A2DP技術(shù)與音頻應(yīng)用測試[J].電子設(shè)計(jì)應(yīng)用,2008(11):92-94.
[2] 胡沛茹,,芮亞楠.一種藍(lán)牙音頻流傳輸方案的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),,2006(3):31-33.
[3] BluetoothSIG. AUDIO/VIDEO REMOTE CONTROL PROFILE Revision 1.3. 2007-04-16.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。