基于S3C4480X的藍(lán)牙音頻網(wǎng)關(guān)(AG)系統(tǒng)
本文設(shè)計了一種基于S3C4480X的藍(lán)牙音頻網(wǎng)關(guān)(AG)系統(tǒng),該系統(tǒng)可實(shí)現(xiàn)與藍(lán)牙耳機(jī)之間的點(diǎn)對點(diǎn)連接,以建立一個音頻連接,從
而實(shí)現(xiàn)兩者之間的配對與語音數(shù)據(jù)傳輸。
1藍(lán)牙體系結(jié)構(gòu)
藍(lán)牙無線通信協(xié)議標(biāo)準(zhǔn)包括核心協(xié)議和應(yīng)用框架兩大部分。藍(lán)牙協(xié)議標(biāo)準(zhǔn)的目的是在遵循規(guī)范應(yīng)用的情況下能夠進(jìn)行相互間的操作,為了實(shí)現(xiàn)相互間的操作,在遠(yuǎn)程設(shè)備上的對應(yīng)應(yīng)用程序必須以同一協(xié)議棧運(yùn)行。藍(lán)牙協(xié)議的體系結(jié)構(gòu)可分為物理層、數(shù)據(jù)鏈路層、中間協(xié)議層和應(yīng)用層,圖1所示是藍(lán)牙系統(tǒng)協(xié)議棧的系統(tǒng)組成框圖。藍(lán)牙的核心協(xié)議包括4部分,即基帶、鏈路管理、邏輯鏈路控制與適應(yīng)協(xié)議(L2CAP)、業(yè)務(wù)搜尋協(xié)議(SDP)等。其中L2CAP負(fù)責(zé)建立邏輯鏈路連接,提供協(xié)議復(fù)用、高層與底層間數(shù)據(jù)分組的分段與重組等任務(wù)。SDP可提供服務(wù)搜索和服務(wù)瀏覽功能,負(fù)責(zé)藍(lán)牙設(shè)備間服務(wù)的查詢和訪問。
藍(lán)牙主機(jī)控制接口(HCl)可為基帶控制器、連接控制器、硬件狀態(tài)、控制寄存器提供命令接口,并可在藍(lán)牙設(shè)備的主機(jī)和基帶之間提供一個通用接口。HCI層以上的協(xié)議在主機(jī)上運(yùn)行,而以下的協(xié)議由藍(lán)牙主機(jī)控制器硬件來完成。這樣既可保證底層協(xié)議傳輸?shù)姆€(wěn)定性,又支持了上層應(yīng)用協(xié)議的可擴(kuò)展性。
2 系統(tǒng)硬件結(jié)構(gòu)與設(shè)計
本文選用三星公司的32位內(nèi)核ARM7TDMIS3C44BOX為處理器,并通過藍(lán)牙模塊、音頻編/解碼器(CODEC)、以太網(wǎng)接口等來構(gòu)建系統(tǒng)硬件平臺。本系統(tǒng)基于藍(lán)牙BlueStack協(xié)議棧,可以實(shí)現(xiàn)藍(lán)牙的所有功能,藍(lán)牙音頻網(wǎng)關(guān)系統(tǒng)就是基于BlueStack實(shí)現(xiàn)的。S3C44BOX 與RTL8019用于開發(fā)10Mbps的以太網(wǎng)接口,可使系統(tǒng)連通以太網(wǎng),并通過以太網(wǎng)進(jìn)行操作。圖2為其系統(tǒng)構(gòu)成框圖。
2.1 藍(lán)牙模塊ROKl01008的結(jié)構(gòu)特點(diǎn)
本系統(tǒng)選用ERICSSON公司的ROKl0l008模塊,該藍(lán)牙模塊集成度高,功耗小,可提供高至控制接口HCI層的功能,并具有UART、I2C和PCMCIA三種主機(jī)控制接口,可方便地與主機(jī)進(jìn)行藍(lán)牙語音和數(shù)據(jù)的傳輸。ROKl0l008支持藍(lán)牙規(guī)范v1.OB,其接收器的最大輸入電平為+13 dBm,動態(tài)范圍較廣,能確保發(fā)送器可靠的通信,其輸出功率可達(dá)Class2,UART最大數(shù)據(jù)流為460 kbps。同時ROKl01008可支持語音和數(shù)據(jù)傳輸功能,能夠?qū)崿F(xiàn)點(diǎn)對點(diǎn)的連接。
ROKl01008模塊的組成如圖3所示。該模塊內(nèi)部帶有無線收發(fā)器、基帶控制器、閃存、電源管理和時鐘五個模塊。其中無線收發(fā)模塊由藍(lán)牙收發(fā)器和天線組成。其功能是為網(wǎng)關(guān)和終端設(shè)備提供無線通道?;鶐Э刂破骺赏瓿深l率的合成,同時完成基帶模塊的數(shù)據(jù)比特信號到無線電信號的轉(zhuǎn)換過濾,并將無線電信號以一定的功率和跳頻頻率發(fā)送出去。ROKOl008的工作頻段在2.4 GHz~2.5 GHz ISM之間,有79個信道,每個信道l MHz。
2.2 藍(lán)牙音頻網(wǎng)關(guān)硬件結(jié)構(gòu)
藍(lán)牙音頻網(wǎng)關(guān)的硬件包括藍(lán)牙芯片和音頻編/解碼器(CODEC)。嵌入式藍(lán)牙音頻網(wǎng)關(guān)電路主要用于提供音頻輸入/輸出接口,并建立音頻連接。圖 4為藍(lán)牙音頻網(wǎng)關(guān)的硬件電路。藍(lán)牙模塊電壓為+3.3 V。利用藍(lán)牙模塊的UART與單片機(jī)S3C44BOX的UART進(jìn)行相互連接??蓸?gòu)成通信通道。而S3C44BOX也可與PC機(jī)通過UART接口進(jìn)行通信并互操作。CODEC負(fù)責(zé)音頻的輸入輸出。
3 藍(lán)牙音頻網(wǎng)關(guān)的軟件設(shè)計
藍(lán)牙音頻網(wǎng)關(guān)的實(shí)現(xiàn)主要基于Bluestack協(xié)議棧來完成,音頻網(wǎng)關(guān)軟件分為三層機(jī)構(gòu),即BlueStack協(xié)議棧、AG客戶機(jī)程序和連接管理器。
BlueStack是劍橋咨詢有限公司的藍(lán)牙協(xié)議軟件棧,可用C語言實(shí)現(xiàn)。它遵循藍(lán)牙特殊興趣小組提出的分層模型,可支持邏輯鏈路控制并適配協(xié)議上使用串口仿真協(xié)議或二進(jìn)制電話控制協(xié)議,并將其作為傳輸協(xié)議的規(guī)范層?;贐lueStack協(xié)議??蓪?shí)現(xiàn)Bluetooth的所有功能。
整個BlueStack的協(xié)議棧實(shí)現(xiàn)采用消息驅(qū)動,層與層之間使用消息隊列傳遞。在嵌入式藍(lán)牙音頻網(wǎng)關(guān)應(yīng)用程序中,一般會涉及兩大類消息:CM 消息和BlueStack消息。CM消息可在客戶機(jī)和連接管理器之間進(jìn)行傳遞,而BlueStack消息則在BlueStack協(xié)議棧之間傳遞。 BlueStack原語類型有DM PRIM、RFC_PRIM、SDP_PRIM 及L2CAP_PRIM四種,在AG應(yīng)用中,一般會用到前三種。BlueStack消息格式為DM (RFC、SDC或SDS)_原語_擴(kuò)展名。
AG應(yīng)用中通常會定義兩個任務(wù),一個是CM任務(wù),任務(wù)號與隊列號為O;另一個是AG任務(wù),任務(wù)號與隊列號為1。AG客戶機(jī)將所要傳遞給CM的消息提交給隊列l(wèi),CM則將要傳遞給AG的消息提交給隊列0。
應(yīng)用程序應(yīng)為ARM與藍(lán)牙之間提供通信接口,主要是在主機(jī)間建立兩個L2CAP信道(控制信道與數(shù)據(jù)信道)。初始化時,藍(lán)牙模塊應(yīng)被喚醒,并進(jìn)行寫數(shù)據(jù)操作(隊列形式),然后通過請求建立連接。當(dāng)AG客戶機(jī)發(fā)出請求信號時,如果CM有回應(yīng),說明可以建立連接。數(shù)據(jù)收發(fā)過程中,數(shù)據(jù)要進(jìn)行封裝/解封、分類等操作。圖5所示為藍(lán)牙數(shù)據(jù)收發(fā)過程的軟件流程圖。
4 結(jié)束語
S3C44BOX內(nèi)核的功能強(qiáng)大,并可實(shí)現(xiàn)操作系統(tǒng)的內(nèi)嵌,因而可通過單片機(jī)系統(tǒng)構(gòu)建嵌入式操作系統(tǒng)平臺。本文在ARM平臺的基礎(chǔ)上,設(shè)計了一種基于S3C44BOX的藍(lán)牙音頻網(wǎng)關(guān)。經(jīng)測試,該網(wǎng)關(guān)可實(shí)現(xiàn)藍(lán)牙耳機(jī)的接入,并成功實(shí)現(xiàn)配對與語音數(shù)據(jù)傳輸。藍(lán)牙耳機(jī)與音頻網(wǎng)關(guān)在進(jìn)行相互操作前,需要建立配對連接,也就是說,這種連接是要通過藍(lán)牙鑒權(quán)和綁定來實(shí)現(xiàn)的。而這種關(guān)系一旦建立,之后就不用再執(zhí)行此操作了。