藍(lán)牙耳機(jī)是一種無線語音傳輸技術(shù),,是基于耳機(jī)在無線技術(shù)方面的延伸,。藍(lán)牙耳機(jī)的應(yīng)用范圍除了手機(jī)以外,,PDA、無繩電話應(yīng)用,、汽車免提工具,、電話終端等,也是藍(lán)牙耳機(jī)發(fā)揮技術(shù)優(yōu)勢的應(yīng)用領(lǐng)域,。本文設(shè)計的藍(lán)牙耳機(jī)支持藍(lán)牙規(guī)范1.2版本,,傳輸距離達(dá)10 m,傳輸速率達(dá)723.2 kb/s,,并且具有低功耗和(幾乎)無輻射等技術(shù)優(yōu)點和優(yōu)勢,。
1 藍(lán)牙技術(shù)
藍(lán)牙作為一種低成本、短距離的無線連接技術(shù)標(biāo)準(zhǔn),,是由Ericsson,、IBM、Intel,、Nokia和Toshiba五家公司共同倡導(dǎo)的一種全球無線技術(shù)標(biāo)準(zhǔn),,是一種無線數(shù)據(jù)與語音通信的開放性全球規(guī)范。它以低成本的短距離無線連接為基礎(chǔ),,為固定設(shè)備與移動設(shè)備通信環(huán)境建立一個特別連接,。其實質(zhì)是建立通用的無線空中接口及其控制軟件的公開標(biāo)準(zhǔn),實現(xiàn)設(shè)備問的電纜替代,。
藍(lán)牙技術(shù)規(guī)范包括協(xié)議和應(yīng)用規(guī)范兩個部分,。協(xié)議定義了各功能元素各自的工作方式,整個藍(lán)牙協(xié)議體系結(jié)構(gòu)分為4層,,即核心協(xié)議層,、線纜替代協(xié)議層、電話控制協(xié)議層和采納的其他協(xié)議層,;應(yīng)用規(guī)范則闡述了為了實現(xiàn)一個特定的應(yīng)用模型,,各層協(xié)議間的運轉(zhuǎn)協(xié)同機(jī)制,。較典型的應(yīng)用規(guī)范有撥號網(wǎng)絡(luò)、耳機(jī)(headset),、局域網(wǎng)訪問和文件傳輸?shù)取K{(lán)牙耳機(jī)的協(xié)議棧原理如圖1所示,。
2 硬件設(shè)計
硬件電路信號處理與控制部分采用Zeevo公司的基于ARM7的音頻處理器ZV4301,。ZV4301處理器是在一個單芯片收發(fā)器上加入一個集成RF、數(shù)字信號處理,、通信處理和運算及控制處理功能的48 MHz APM7微處理器,,片外擴(kuò)展閃存,以實現(xiàn)需要技術(shù)和高度最佳化的音頻處理,。
編解碼芯片采用飛利浦公司的UDAl380音頻芯片,。UDAl380是一顆專為便攜式產(chǎn)品所設(shè)計的單芯片立體聲音頻編解碼器,可以提供立即可用的先進(jìn)音頻功能,。這顆音頻編解碼器具有24位數(shù)據(jù)路徑,、多重時鐘支持、DC偏移消除,、支持多重數(shù)據(jù)格式以及數(shù)字靜音檢測等集成功能,。本設(shè)計中,UDAl380利用與微控器接口作音控處理.并利用L3接口來控制音量,。
3 I2S總線
本設(shè)計在硬件電路上使用基于I2S總線的音頻系統(tǒng)體系結(jié)構(gòu),。I2S(Inter-IC Sound bus)是飛利浦公司提出的串行數(shù)字音頻總線協(xié)議。
I2S總線只處理聲音數(shù)據(jù),,其他信號(如控制信號)必須單獨傳輸,。為了使芯片的引腳盡可能少,I2S只使用了三根串行總線,。這三根線分別是:提供分時復(fù)用功能的數(shù)據(jù)線(SD),、字段選擇線(聲道選擇WS)、時鐘信號線(SCK),。
此設(shè)計中采用電源統(tǒng)一供電,,ZV4301作為主設(shè)備,UDAl380作為從設(shè)備,。ZV4301使用3個通用I/O口來模擬I2S總線,。其讀寫I2S總線的數(shù)據(jù)主要包括以下幾個函數(shù);
word_selection(),; //字選擇函數(shù)
serial_clock(),; //時鐘信號函數(shù)
serial_data(); // 串行數(shù)據(jù)函數(shù)
shift_register(),; //寄存器移位函數(shù)
4 軟件設(shè)計
VxWorks操作系統(tǒng)是美國WindRiver公司于1983年設(shè)計開發(fā)的一種嵌入式實時操作系統(tǒng),。良好的持續(xù)發(fā)展能力,、支持多種硬件環(huán)境、高性能的內(nèi)核以及友好的用戶開發(fā)環(huán)境,,使之成為所有獨立于處理器實時系統(tǒng)中最具特色的操作系統(tǒng),。
在該設(shè)計中,軟件協(xié)議全部下載到藍(lán)牙設(shè)備內(nèi)核處理器的外置閃存中,,操作通過人機(jī)接口控制,。基于VxWorks的軟件編寫工作主要包括:BSP包的改動,、程序的編寫和操作系統(tǒng)的裁減,。由于VxWorks的高度靈活性,可以很容易地對這一操作系統(tǒng)進(jìn)行定制或作適當(dāng)開發(fā),,來滿足系統(tǒng)的實際應(yīng)用需要,。BSP包的改動指根據(jù)目標(biāo)硬件實際配置修改系統(tǒng)的配置參數(shù)宏(MAC-RO),主要修改config.h,、makefile.h,、bspname.h文件。
程序編寫函數(shù)主要包括以下7個,。
(1)系統(tǒng)引導(dǎo)函數(shù)
VxWorks操作系統(tǒng)在一些板級系統(tǒng)初始化后自動執(zhí)行tUsrRoot()函數(shù),,以完成初始化。
tUsrRoot()
…… //必要初始化程序
vInitializeLmp(),; //LMP初始化完成
vInitializeL2cap(),; //L2CAP初始化完成
vInitializeSdp(); //SDP初始化完成
vInitializeRf(),; //RFCOMM初始化完成
vInitializeHA(),; //HeadsetApplication初始化完成
exit(); //退出
(2)系統(tǒng)初始化函數(shù)(以L2CAP為例)
typedet
{MSG_IDSdpToL2cap,;
MSG_ID L2capToSdp,;
MSG_ID RfToL2cap;
MSG_ID L2capToRf,;
MSG_lD HAToSdp,;
MSG_ID SdpToHA;
MSG_ID HAToRf,;
MSG_ID RfToHA,;
}MSG_QUEUE_ID//定義消息隊列1D結(jié)構(gòu)體類型
MSG_QUEUE_ID MsgQueueld; //定義全局消息隊列ID結(jié)構(gòu)體,,用于存放每個消息隊列的ID
vInitlalizeL2caD(),;//L2CAP初始化,包括初始化全局變量、創(chuàng)建定時器,、創(chuàng)建消息
//隊列,、創(chuàng)建并啟動任務(wù)
(3)LMP軟件設(shè)計
基帶程序運行在藍(lán)牙芯片的信號處理單元中,而LMP程序運行在藍(lán)牙芯片的微處理器中,,它們通過郵箱來交換信息,。只要任何一方向郵箱發(fā)送了信息,郵箱就會產(chǎn)生中斷信號,,另外一方可以在中斷服務(wù)程序中進(jìn)行信息讀取和處理,。其處理函數(shù)為;
vLmpDealFromBB()
//處理來自BaseBand層的消息以建立連接,,對來自BaseBand層
//的操作碼
決定接受與否,并進(jìn)行鑒權(quán),、加密,、處理或斷開等操作
(4)L2CAP軟件的設(shè)計
tL2capDealMsgFromSdp()
//處理來自SDP層的消息SdpToL2eap,生成L2CAP數(shù)據(jù)包,,把數(shù)據(jù)傳BaseBand層
tL2capDealMsgFromRf()
//處理來自RFCOMM層的消息RfToL2cap,,生成L2CAP數(shù)據(jù)包,把數(shù)據(jù)傳BaseBand層
vL2capDealMsgFromBB()
//處理來自BaseBand層的消息,,在處理器郵箱中斷程序被調(diào)用
(5)SDP軟件的設(shè)計
tSdpDealMsgFromL2cap()
//處理來自L2CAP的消息L2capToSdp,,并上報搜索到的服務(wù)的屬性
tSdpDealMsgFromHA()
//處理來自HeadsetApplieation的消息HAToSdp,對上報信息進(jìn)行應(yīng)答
(6)RFOOMM軟件的設(shè)計
tRfDealMsgFromHA()
//處理來自HeadsetApplication的消息HAToRf,,生成RFCOMM數(shù)據(jù)包,,傳送給L2CAP
tRfDealMsgFromL2cap()
//處理來自L2CAP的消息L2capToRf,對不同的幀進(jìn)行處理
(7)HeadsetApplication軟件的設(shè)計
tHADealMsgFronaSdp()
//處理來自SDP的消息SdpToHA,,判斷是否正常并處理
tHADeaIMsgFromRf()
//處理來自RFCMM的消息RfToHA,,對AT命令及其應(yīng)答作出處理
5 語音傳輸建立過程
藍(lán)牙耳機(jī)系統(tǒng)工作時總是藍(lán)牙語音網(wǎng)關(guān)(AG)和藍(lán)牙耳機(jī)(HS)成對出現(xiàn)的。其通信所用到的協(xié)議棧及實體如圖4所示,。
藍(lán)牙設(shè)備連結(jié)的建立遵循底層到高層的原則,,即搜索藍(lán)牙設(shè)備、建立鏈路,、服務(wù)搜索,、建立信道、建立連接和數(shù)據(jù)傳輸,。
以下是音頻連接建立的全過程,。(以AG主動發(fā)起連接請求為例。)
?、貯G首先發(fā)起查詢,,通過查詢AG獲得HS的藍(lán)牙地址。
②AG在應(yīng)用層的驅(qū)動下向查詢到的HS發(fā)起一個page進(jìn)程,。當(dāng)接收到HS返回的應(yīng)答信號時,,AG與HS之間的ACL鏈接已經(jīng)成功建立。
?、垡坏〢CL鏈接建立,,即可以被用來傳送振鈴信號。振鈴信號的發(fā)送是通過AT命令RING來完成的,。
?、蹵CL鏈接好后,接著建立L2CAP鏈路,。AG首先在信令信道上發(fā)送一個鏈接請求信令L2CAP_req,,要求建立信道標(biāo)號為0x0040的L2CAP。當(dāng)HS返回鏈接響應(yīng)信號時,,表明0x0040信道已經(jīng)建立好,。然后對此信道進(jìn)行配置,配置完信道后,,就可以利用此CID(信道標(biāo)識符)為0x0040的L2CAP信道進(jìn)行SDP查詢,。
⑤AG在L2CAP信道上發(fā)送一個SDP查詢包,。SDP查詢包將查詢SDP服務(wù)器端HS是否具有所需要的服務(wù),。若查詢成功,在ACL鏈路上,,AG再建立一條標(biāo)號為0x0041的l.2CAP鏈路,,用來傳輸RFCOMM數(shù)據(jù);同時,,斷開用作SDP查詢的標(biāo)號為0x0040的L2CAP鏈路,。 ⑥當(dāng)CID為0x004l的L2CAP信道建立好之后,,首先建立控制信道DICIO,,AG在信道上發(fā)送一個SABM幀,即要求建立RFCOMM層上的Channel O,。如果響應(yīng)方HS希望建立鏈接,,返回一個VA幀,表明已經(jīng)建立好了Channel 0這條RFCOMM信道,。此信道為控制信道,用來傳送攜帶控制信息和命令的UIM幀,。如果響應(yīng)方HS不希望建立鏈接,返回一個DM幀,。其次建立數(shù)據(jù)信道,,先是對數(shù)據(jù)傳送信道的參數(shù)進(jìn)行協(xié)商,協(xié)商命令PN參數(shù)包括對將要建立的信道Channel 1的優(yōu)先級,最大幀長等,,當(dāng)雙方協(xié)商好后建立傳輸數(shù)據(jù)的信道Channell,。
⑦通過RFooMM信道傳輸HS控制層的AT命令,,即在RFCOMM數(shù)據(jù)傳送信道Channe1上利用UIH幀傳送AT+CKPD命令,。當(dāng)接收到對方的響應(yīng)后,就可以開始建立SCO鏈接,。
?、郒CI(主機(jī)控制接口)發(fā)一個WRITE_VOICE_SETTING命令,對音頻狀態(tài)進(jìn)行一些設(shè)置,。當(dāng)接收到AG的建立SC0鏈接的請求時,,若HS允許,發(fā)送一個接收的HCI命令,,在命令完成之后,,傳輸音頻信號的SC0鏈路就建立好了,此時就可以進(jìn)行語音通信,。
結(jié)語
由于采用專用的聲音編解碼芯片和標(biāo)準(zhǔn)音頻取樣率44.1 kHz,并經(jīng)過先進(jìn)的信號處理技術(shù),,能夠使聲音效果接近CD音質(zhì),,這樣也使藍(lán)牙耳機(jī)真正取代有線耳機(jī)成為可能。