藍牙主控制器接口簡(jiǎn)析

發(fā)布時(shí)間:2010-6-28 17:11    發(fā)布者:我芯依舊
關(guān)鍵詞: 接口簡(jiǎn)析 , 藍牙 , 主控制器
1藍牙技術(shù)的背景

藍牙是一種短距離的射頻通信連接,最初設計的目標是代替用來(lái)連接固定或便攜電子設備的電纜。藍牙設備工作在不需要許可證2.4GHz的工業(yè)、科學(xué)和醫療(ISM)頻帶。藍牙基帶協(xié)議同時(shí)支持電路交換和分組交換通信,并采用跳頻擴展頻譜(FHSS)技術(shù)進(jìn)行傳輸。在北美和歐洲的大部分地區,藍牙設備工作于2.402~2.480GHz的頻帶,整個(gè)頻帶被分成 79.1MHz帶寬的子信道。

藍牙協(xié)議的體系結構分底層硬件模塊、中間協(xié)議層和高層應用三大部分。底層硬件部分包括無(wú)線(xiàn)跳頻(RF)、基帶(BB)和鏈路管理(LM)部分。它們分別定義了藍牙收發(fā)器在2.4GHz頻段上,以跳頻的方式傳輸信息幀和傳輸鏈路連接的建立或拆除以及鏈路的安全和控制所必須滿(mǎn)足的要求。中間協(xié)議層包括邏輯鏈路控制和適應協(xié)議(L2CAP)、服務(wù)發(fā)現協(xié)議(SDP)、串口仿真RFCOMM和電話(huà)通信協(xié)議(TCS)。它們分別完成數據的拆裝、服務(wù)質(zhì)量控制、協(xié)議復用、發(fā)現網(wǎng)絡(luò )中可用的服務(wù)及服務(wù)特性、仿真R-232串口、提供藍牙設備間話(huà)音和數據的呼叫控制信令等功能。在這兩層之間規定了一個(gè)主控制器接口(HCI)。這是協(xié)議中軟硬件之間的接口,該層以上的協(xié)議軟件實(shí)體運行在主機上,而HCI以下的功能由藍牙設備來(lái)完成。在協(xié)議體系結構的最上部是高層應用的框架(Profiles)。目前僅規定了撥號網(wǎng)絡(luò )、耳機、局域網(wǎng)訪(fǎng)問(wèn)、文件傳輸等常規應用,將來(lái)還會(huì )不斷增加。各種應用程序可以通過(guò)各自對應的Profi1e實(shí)現無(wú)線(xiàn)通信。

在這個(gè)標準的支持下,藍牙系統支持點(diǎn)對點(diǎn)和點(diǎn)對多點(diǎn)的連接,每個(gè)藍牙系統可以連接200個(gè)以上藍牙裝置。藍牙系統的傳輸特性是在供工業(yè)、科學(xué)和醫學(xué)領(lǐng)域自由使用的ISM 2.4GHz頻段內用單工或全雙工的方式進(jìn)行信息傳輸。每個(gè)藍牙信道的帶寬是1MHz,它支持三個(gè)同步數據信道或同時(shí)支持 一個(gè)同步數據信道和一個(gè)異步數據信道。每個(gè)同步數據信道的數據傳輸率是64kb/s,用于語(yǔ)音數據的傳輸;異步數據信道的傳輸率是下行721 kb/s和上行57.6 kb/s,用于數字數據的傳輸。若設置為上下行對稱(chēng)的傳輸方式,傳輸率上下行各是432.6 kb/s。一般情況下的傳輸距離是10m(30FEET),最大可達100m,自動(dòng)調整。

2 HCI概述

主控制器接口(HCI)是藍牙協(xié)議中軟硬件之間的接口,它提供了一個(gè)調用基帶、鏈路管理、狀態(tài)和控制寄存器等硬件的統一命令接口。藍牙設備之間進(jìn)行通信時(shí),HCI以上的協(xié)議軟件實(shí)體在主機上運行,而HCI以下的功能由藍牙設備來(lái)完成,兩者之間通過(guò)一個(gè)對兩端透明的傳輸層進(jìn)行交互。

如圖1所示,藍牙標準對機控制器接口(HCI)的定義如下:HCI提供了一個(gè)調用和訪(fǎng)問(wèn)基帶控制器和鏈路控制器以及硬件狀態(tài)和控制寄存器的命令接口。這一接口提供了一個(gè)訪(fǎng)問(wèn)藍牙基帶功能的統一方法。在主機端的HCI軟件和藍牙硬件的HCI固件之間存在著(zhù)與藍牙協(xié)議關(guān)系并不密切的幾層中間層,我們稱(chēng)之為機控制器傳輸層,它們提供數據的透明傳輸。


HCI由兩部分組成,實(shí)現命令接口的軟件和用來(lái)連接藍牙子系統和主機的物理硬件。HCI軟件的目的是使構成接口的硬件對系統高層軟件來(lái)說(shuō)看起來(lái)是透明的。

藍牙軟件結構包括兩種類(lèi)型的部件。數據相關(guān)部件負責數據通過(guò)鏈路的傳輸?刂葡嚓P(guān)部件則負責鏈路的控制和管理。圖2 示出了HCI軟件結構以及與藍牙主機接口硬件的關(guān)系。


3 HCI流控制

流控制在主機到主控制器之間,用于防止將傳送到未應答遠程設備的ACL數據溢出主控制器的數據緩沖區,由主機來(lái)管理主控制器的數據緩沖區。

主機通過(guò)發(fā)出Read_Buffer_Size命令進(jìn)行初始化,這個(gè)命令的返回參數可以確定主機發(fā)向主控制器的HCI ACL和SCO數據包(不包括包頭)的最大長(cháng)度。另有兩個(gè)返回參數表示主控制器為等待傳輸可以緩存的HCI ACL和SCO數據分組的數量。當只有一個(gè)與其他設備的連接或者設備處于回環(huán)模式時(shí),主控制器利用已完成數據分組事件來(lái)控制從主機發(fā)來(lái)的數據流。事件分組包括一個(gè)鏈接句柄列表以及對應連接上自上一個(gè)此事件以來(lái)完成的HCI包的數目;完成指的是發(fā)送、清空或回環(huán)回主機。根據這一事件的返回參數以及讀緩沖區大小命令的返回參數,主控制器可以進(jìn)行流量控制。每當主機發(fā)送一個(gè)ACL或SCO數據包,主機應該記錄主控制器的相應鏈路緩沖區中的剩余空間減少了一個(gè)包,當主機收到完成包數目事件,主機知道了又有多少緩沖區空間得到釋放,主機可以算出現在主控制器可以接收的包數目。當主控制器中有數據時(shí),它必 須周期性的向主機發(fā)送完成包數目事件,直到向主機報告所有包都發(fā)送或清空,而發(fā)送的間隔由各廠(chǎng)家自行定義。注意,如果SCO流量控制失效,則已完成數據分組事件號就不能在SCO鏈接句柄中進(jìn)行報告。

對應于每一個(gè)鏈接句柄,數據必須依照他們在主機生成時(shí)的順序依此在HCI數據包中發(fā)往主控制器,主控制器也同樣按順序將這些數據發(fā)往空中,另一設備的主控制器收到后也必須按序發(fā)向它的主機,這意味著(zhù)同一連接句柄上數據的順序自生成起不再改變。

在某些情況下,主控制器到主機方向的流量控制是必須的,一般采用Set_Host_Controller To_Host_Flow_Control命令來(lái)開(kāi)關(guān)這個(gè)方向的流量控制。這個(gè)方向的流量控制方法類(lèi)似于上述的方法。起初,主機發(fā)出Host_Buffer_Size命令,告知主控制器發(fā)向主機的ACL和SCO數據包的最大長(cháng)度以及主機緩沖區可存放ACL和SCO數據包的數目。主機利用主機Host_Number_Of_Completed_ Packets命令類(lèi)似于主控制器的完成包數目事件,主機完成包數目命令是不需要命令流量控制的特殊命令,在有連接或處于本地回環(huán)模式時(shí)可以隨時(shí)發(fā)送,這使得兩個(gè)方向的流量控制同樣的工作,正常的命令流也不被打斷。

當主機收到拆鏈完成事件后,可以認定該連接句柄上的所有發(fā)往主控制器的數據被清空,相應數據緩沖區被釋放,主控制器不需要用完成包數目事件將這些告訴主機。如果也采用了主控制器到主機方向的流量控制,主控制器在發(fā)送了拆鏈完成事件后假設主機在收到這一事件后也清空了這一連接句柄上的所有數據,主機也不需要用主機完成包數目命令將這些告訴主控制器。

4 HCI命令與事件

主機通過(guò)HCI驅動(dòng)程序提供的一系列命令來(lái)控制藍牙網(wǎng)絡(luò )接口。除這些命令外,藍牙標準還定義了一級由藍牙網(wǎng)絡(luò )接口中的HCI固件產(chǎn)生的事件,用來(lái)指示接口的狀態(tài)變化。

HCI命令和事件與來(lái)自無(wú)連接和同步連接的數據一起通過(guò)HCI傳輸接口硬件進(jìn)行傳輸。這些數據的復用方式對接口來(lái)說(shuō)是確定的。圖3 示出了其工作情況。


HCI提供一種統一的方法訪(fǎng)問(wèn)藍牙硬件。HCI 鏈路命令提供主機控制與其他藍牙設備鏈路層連接的能力,一般這些命令導致鏈路管理器與遠端設備交換鏈路管理器協(xié)議命令。HCI策略命令用來(lái)影響本地或遠端鏈路管理器的行為,這些命令提供主機影響鏈路管理器如何管理微微網(wǎng)的方法。主控制器和基帶命令、信息命令及狀態(tài)命令用于主機訪(fǎng)問(wèn)主控制器上的不同的寄存器。

HCI命令需要一定的時(shí)間完成,因此這些命令的處理結果將以事件的形式返回主機。如對于大部分的HCI命令主控制器完成后生成一個(gè)命令完成事件,這個(gè)事件包含了完成命令的返回參數。為了使主機具備發(fā)現HCI傳輸層差錯的能力,在主機發(fā)出命令和收到主控制器響應之間我們判斷是否超時(shí),由于不同HCI傳輸層的差異,建議采用一秒作為此定時(shí)器的默認值。

HCI是通過(guò)包的方式來(lái)傳送數據、命令和事件的,所有在主機和主控制器之間的通信都以包的形式進(jìn)行。包括每個(gè)命令的返回參數都通過(guò)特定的事件包來(lái)傳輸。HCI有數據、命令和事件三種包,其中數據包是雙向的,命令包只能從主機發(fā)往主控制器,而事件包始終是主控制器發(fā)向主機的。主機發(fā)出的大多數命令包都會(huì )觸發(fā)主控制器產(chǎn)生相應的事件包作為響應。包的格式如圖4所示。


(1)命令包分為六種類(lèi)型:

● 鏈路控制命令;
● 鏈路政策和模式命令;
● 主機控制和基帶命令;
● 信息命令;
● 狀態(tài)命令;
● 測試命令。

(2)事件包可分為三種類(lèi)型:

● 通用事件,包括命令完成包(Command Complete)和命令狀態(tài)包(Command Status);
● 測試事件;
● 出錯時(shí)發(fā)生的事件,如產(chǎn)生丟失(Flush Occured)和數據緩沖區溢出(Data Buffer Overflow)。

(3)數據包則可分為ACL和SCO的數據包。

5 HCI模塊結構

HCI模塊根據協(xié)議規定,完成協(xié)議功能、封裝 HCI命令以及上層協(xié)議的數據,處理下層事件。

HCI命令事件處理模塊完成命令的封裝和事件的解析,在收到上層協(xié)議或應用的調用命令請求后,模塊完成命令包的封裝,而后調用發(fā)送函數將數據傳到數據收發(fā)模塊。當接收函數收到HCI事件時(shí),調用HCI命令事件處理模塊的事件處理函數,處理完畢后依據事件的性質(zhì),將響應傳到上層協(xié)議或應用。

HCI數據處理模塊完成ACL和SCO數據的封裝處理,但對凈荷不作任何解析和處理。收發(fā)函數主要完成與數據收發(fā)模塊的通信,對收到的數據根據數據的類(lèi)型,分別調用命令事件處理模塊或數據處理模塊予以處理。

6 HCI傳輸層

HCI的傳輸層定義了三類(lèi)數據如何在藍牙網(wǎng)絡(luò )接口和藍牙主機間進(jìn)行傳輸。HCI傳輸層定義了每一類(lèi)數據如何封裝和通過(guò)接口硬件進(jìn)行復用。目前藍牙規范定義了三個(gè)HCI傳輸層:UART傳輸層;RS232傳輸層;USB傳輸層。下面以RS232傳輸層為例對HCI傳輸層作具體的說(shuō)明。
HCI RS232傳輸層的目標是在藍牙主機和藍牙主控制器之間的物理RS232接口上使用藍牙HCI。通過(guò)RS232傳輸層可以發(fā)出四種HCI分組,但主控制器接口不能區分四種HCI類(lèi)型。在分組之前必須加上8位的分組指示器以區分分組類(lèi)型。0x01表示指令分組,0x02表示ACL數據分組,0x03表示SCO 數據分組,0x04表示事件分組,另外還有0x05表示錯誤消息分組,0x06表示協(xié)商分組。錯誤消息分組用于將錯誤報告給發(fā)送端;而協(xié)商分組用于協(xié)商通信設置和協(xié)議。在RS232鏈路上發(fā)送任何字節之前,都應當在主控制器和主機之間對波特率、奇偶校驗值類(lèi)型、終止位和協(xié)議模式進(jìn)行協(xié)商。每發(fā)送一個(gè)以上HCI分組時(shí),一個(gè)8位序列號將加1,除非是重發(fā)一個(gè)錯誤的分組。

同步機制可以選擇RTS/CTS或分界符。在不能使用RTS/CTS時(shí),將采用含16位CRC的幀和含COBS的分界符0x7e作為檢錯和重新同步的手段。 16位CRC應附在分組末尾,結束分界符0x7e之前。起始分界符0x7e后緊跟著(zhù)分組類(lèi)型指示段。COBS 是PPP的改進(jìn),不考慮數據模式,它將產(chǎn)生低于5%的開(kāi)銷(xiāo)。在此采用一種簡(jiǎn)單糾錯方案,發(fā)送端將僅重發(fā)含有錯誤的分組。
本文地址:http://selenalain.com/thread-13884-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页