新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 藍牙無線耳機設計及VxWorks移植方法

        藍牙無線耳機設計及VxWorks移植方法

        作者: 時間:2014-11-21 來源:網絡 收藏

          程序編寫函數主要包括以下7個。

        本文引用地址:http://www.104case.com/article/265769.htm

          (1)系統引導函數

          操作系統在一些板級系統初始化后自動執行tUsrRoot()函數,以完成初始化。

          tUsrRoot()

          …… //必要初始化程序

          vInitializeLmp(); //LMP初始化完成

          vInitializeL2cap(); //L2CAP初始化完成

          vInitializeSdp(); //SDP初始化完成

          vInitializeRf(); //RFCOMM初始化完成

          vInitializeHA(); //HeadsetApplication初始化完成

          exit(); //退出

          (2)系統初始化函數(以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結構體類型

          MSG_QUEUE_ID MsgQueueld; //定義全局消息隊列ID結構體,用于存放每個消息隊列的ID

          vInitlalizeL2caD();//L2CAP初始化,包括初始化全局變量、創建定時器、創建消息

          //隊列、創建并啟動任務

          (3)LMP軟件設計

          基帶程序運行在芯片的信號處理單元中,而LMP程序運行在芯片的微處理器中,它們通過郵箱來交換信息。只要任何一方向郵箱發送了信息,郵箱就會產生中斷信號,另外一方可以在中斷服務程序中進行信息讀取和處理。其處理函數為;

          vLmpDealFromBB()

          //處理來自BaseBand層的消息以建立連接,對來自BaseBand層

          //的操作碼

          決定接受與否,并進行鑒權、加密、處理或斷開等操作

          (4)L2CAP軟件的設計

          tL2capDealMsgFromSdp()

          //處理來自SDP層的消息SdpToL2eap,生成L2CAP數據包,把數據傳BaseBand層

          tL2capDealMsgFromRf()

          //處理來自RFCOMM層的消息RfToL2cap,生成L2CAP數據包,把數據傳BaseBand層

          vL2capDealMsgFromBB()

          //處理來自BaseBand層的消息,在處理器郵箱中斷程序被調用

          (5)SDP軟件的設計

          tSdpDealMsgFromL2cap()

          //處理來自L2CAP的消息L2capToSdp,并上報搜索到的服務的屬性

          tSdpDealMsgFromHA()

          //處理來自HeadsetApplieation的消息HAToSdp,對上報信息進行應答

          (6)RFOOMM軟件的設計

          tRfDealMsgFromHA()

          //處理來自HeadsetApplication的消息HAToRf,生成RFCOMM數據包,傳送給L2CAP

          tRfDealMsgFromL2cap()

          //處理來自L2CAP的消息L2capToRf,對不同的幀進行處理

          (7)HeadsetApplication軟件的設計

          tHADealMsgFronaSdp()

          //處理來自SDP的消息SdpToHA,判斷是否正常并處理

          tHADeaIMsgFromRf()

          //處理來自RFCMM的消息RfToHA,對AT命令及其應答作出處理

          5 語音傳輸建立過程

          耳機系統工作時總是藍牙語音網關(AG)和藍牙耳機(HS)成對出現的。其通信所用到的協議棧及實體如圖4所示。

          

         

          藍牙設備連結的建立遵循底層到高層的原則,即搜索藍牙設備、建立鏈路、服務搜索、建立信道、建立連接和數據傳輸。

          以下是音頻連接建立的全過程。(以AG主動發起連接請求為例。)

          ①AG首先發起查詢,通過查詢AG獲得HS的藍牙地址。

          ②AG在應用層的驅動下向查詢到的HS發起一個page進程。當接收到HS返回的應答信號時,AG與HS之間的ACL鏈接已經成功建立。

          ③一旦ACL鏈接建立,即可以被用來傳送振鈴信號。振鈴信號的發送是通過AT命令RING來完成的。

          ④ACL鏈接好后,接著建立L2CAP鏈路。AG首先在信令信道上發送一個鏈接請求信令L2CAP_req,要求建立信道標號為0x0040的L2CAP。當HS返回鏈接響應信號時,表明0x0040信道已經建立好。然后對此信道進行配置,配置完信道后,就可以利用此CID(信道標識符)為0x0040的L2CAP信道進行SDP查詢。

          ⑤AG在L2CAP信道上發送一個SDP查詢包。SDP查詢包將查詢SDP服務器端HS是否具有所需要的服務。若查詢成功,在ACL鏈路上,AG再建立一條標號為0x0041的l.2CAP鏈路,用來傳輸RFCOMM數據;同時,斷開用作SDP查詢的標號為0x0040的L2CAP鏈路。

          ⑥當CID為0x004l的L2CAP信道建立好之后,首先建立控制信道DICIO,AG在信道上發送一個SABM幀,即要求建立RFCOMM層上的Channel O。如果響應方HS希望建立鏈接,返回一個VA幀,表明已經建立好了Channel 0這條RFCOMM信道。此信道為控制信道,用來傳送攜帶控制信息和命令的UIM幀。如果響應方HS不希望建立鏈接,返回一個DM幀。其次建立數據信道,先是對數據傳送信道的參數進行協商,協商命令PN參數包括對將要建立的信道Channel 1的優先級,最大幀長等,當雙方協商好后建立傳輸數據的信道Channell。

          ⑦通過RFooMM信道傳輸HS控制層的AT命令,即在RFCOMM數據傳送信道Channe1上利用UIH幀傳送AT+CKPD命令。當接收到對方的響應后,就可以開始建立SCO鏈接。

          ⑧HCI(主機控制接口)發一個WRITE_VOICE_SETTING命令,對音頻狀態進行一些設置。當接收到AG的建立SC0鏈接

          的請求時,若HS允許,發送一個接收的HCI命令,在命令完成之后,傳輸音頻信號的SC0鏈路就建立好了,此時就可以進行語音通信。

          結語

          本文給出了藍牙及藍牙耳機系統的基本概念及其在軟硬件方面的具體實現。藍牙耳機使用戶擺脫線纜的束縛,能夠在較大的自由空間內通話。由于采用專用的聲音編解碼芯片和標準音頻取樣率44.1 kHz,并經過先進的信號處理技術,能夠使聲音效果接近CD音質,這樣也使藍牙耳機真正取代有線耳機成為可能。

        藍牙技術相關文章:藍牙技術原理

        上一頁 1 2 下一頁

        關鍵詞: 藍牙 VxWorks

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 永川市| 吉木乃县| 咸宁市| 寻甸| 北京市| 泽库县| 温宿县| 台南市| 定州市| 通辽市| 灵丘县| 台北县| 茌平县| 固安县| 潜江市| 东城区| 湖北省| 台北县| 杨浦区| 广宁县| 托里县| 濮阳县| 库车县| 安庆市| 新泰市| 宁明县| 昆明市| 万山特区| 洛川县| 巴里| 苍梧县| 尼玛县| 施甸县| 巧家县| 雅江县| 天等县| 龙南县| 睢宁县| 静宁县| 黑水县| 讷河市|