天天看點

藍牙協定棧及HCI三順序列槽傳輸控制

藍牙協定包括多層協 議棧,如下圖。

藍牙協定棧及HCI三順序列槽傳輸控制

其中 Transport Layer ( UART/USB )層以下的協定通常都由藍牙晶片內建,而傳輸層以上的協定則視晶片的不同而有所不同,以此原則藍牙芯 片分成了以下幾種:

藍牙協定棧及HCI三順序列槽傳輸控制

TI 公 司的藍牙晶片 BRF6150 屬于右邊的晶片,是以其進階應用的軟體工作量将會較大,控制核心的程式需要實作高層的協定,要達到 很好的相容性有難度。但如果要作專用的藍牙裝置,則可以去除大部分複雜的協定,降低成本。

底層子產品是藍牙技術的核心子產品,所有嵌入藍牙技術的裝置都必須包括底層子產品。它主要由鍊路管理層 LMP ( Link Manager Protocol )、基帶層 BB ( Base Band )和射頻 RF ( Rodio Fraquency )組成。其功能是:無線連接配接層( RF )通過 2.4GHz 無需申請的 ISM 頻段,實作資料流的過濾和傳輸;它主 要定義了工作在此頻段的藍牙接收機應滿足的需求;其帶層( BB )提 供了兩種不同的實體鍊路(同步面向連接配接路 SCO Synchronous Connection Oriented 和異步無連接配接鍊路 ACL Asynchronous Connection Less ),負責跳頻和藍牙資料及資訊幀的傳輸,且對所有類型的資料包提供了不同層次的前向糾錯碼 FEC ( Frequency Error Correction )或循環沉餘度差錯校驗 CTC ( Cyclic Redundancy Check ); LMP 層負責兩個或多個裝置鍊路的建立和拆除及鍊路的安全和控制,如鑒權和加密、控制和協商基帶包的大小 等,它為上層軟體子產品提供了不同的通路入口;藍牙主機控制器接口 HCI ( Host Cntroller Interface )由基帶控制器、連接配接管理器、控制和事 件寄存器等組成。它是藍牙協定中軟硬體之間的接口,提供了一個調用下層 BB 、 LM 、狀态和控制寄存器等硬體的統一指令,上、下兩個子產品接口之間的消息和資料的傳遞必須通過 HCI 的解釋才能進行。 HCI 層 以上的協定軟體實體運作在主機上,而 HCI 以下的功能由藍牙裝置來完 成,二者之間通過傳輸層進行互動。

下文僅對 BRF6150 的 HCI 傳輸層的控制作一闡述。

三線 UART 傳輸層用于實作主機和藍核 之間的資料傳輸,該層隻是資料流經的通路,進行 HCI 指令、事件、 ACL 、同步資料包傳輸,不對資料流進行任何的編解碼。文檔内容主要包括 SLIP 層、幀頭、資料完整性檢驗、可靠包、錯誤包、鍊路建立、電源控制、幀溢出控制、硬體配置、推薦參數等 幾部分内容。

資料包的建立是分兩步實作的,第一是給每個 HCI 數 據包加一個頭,表示資料包的有效載荷,接着将資料包按 SLIP 協定進行建構。 SLIP 層将不可靠的位元組資料流轉化為不可靠的包資料流,它在每個包的開頭和結尾加一個位元組 0xC0 ,同時将資料包中的 0xC0 轉 化為 0xDB 0xDC 兩個位元組,将包内的 0xDB 轉 化為 0xDB 0xDD 。解碼過程可以想象。

每個包有 4 個位元組的標頭

//序列碼 3//确認碼 3//資料完整性校驗 1//可靠包1//包類型4//有效載荷 12//

當是不可靠包時,發送時序列碼為 0 ,接收 時忽略。每個新的可靠包的序列碼都等于前一個可靠包的序列碼 +1 ,重新傳輸的資料包将用上次的 序列碼。

确認碼必須被設定為下一個将接收到的可靠包的序列碼。

當一個 16bit 的 CCITT_CRC 資料完整性校驗被附加在有效載荷之後時,這一位置 1 。

可靠包位為 1 ,則序 列碼和包内資料有效,接收端必須确認接收到的資料,為 0 相反。

UART 傳 輸層可以傳輸 4 種 HCI 包,分别是 HCI 指令包、 HCI 事件包、 HCI ACL 資料包、 HCI

同步資料包 。 HCI 指令包隻能由主機發往藍牙裝置, HCI 事 件包隻能從藍牙晶片發出,其它兩個包則是雙向的。 HCI 包譯碼無法區分這 4 種包,是以采用包類型來區分。包類型資料對應如下圖。

藍牙協定棧及HCI三順序列槽傳輸控制

HCI 指令包、 HCI 事 件包、 HCI ACL 資料包總是作為可靠包傳輸。 HCI 同 步資料包隻有當 HCI 同步流控制打開時才作為可靠包傳輸。

有效載荷是包内有效資料,不包括標頭和完整性校驗資料。

頭校驗是可選的,規則較複雜,還暈。

可靠包:

主機和藍牙都有檢測包内資料是否正确的規則,標頭和校驗、 SLIP 有效載荷校驗(資料個數為去掉 0xC0 , 并将 0xDB 0xXX 轉換後的個數)、資料完整性校驗(可選)、無序包校驗。

當可靠包被接收後,必須進行确認。當一個包準備好發出時,該包的确認碼應當是最近預期的數值,若有預 期要求發送确認碼,但沒有資料包需要發送,則裝置可以發送一個确認包,确認包是不可靠包,包類型、有效載荷資料、序列碼都設為 0 。一個可靠包隻有在确認後才可以再發送。

非可靠包:

要傳遞非可靠包必須遵循一定的規則。非可靠包的標頭的可靠包位、序列碼應當是 0 ,其它的與可靠包一樣設定。非可靠包若無效則将被忽略。

鍊路建立:

鍊路建立必須先被執行,以保證序列碼、波特率、以及晶片被正确設定。鍊路建立是通過包含未初始化、已 初始化、激活三種狀态的狀态機實作的。第一次傳輸之前鍊路是出于未初始化狀态,需要 4 條資訊 來建立,藍牙裝置在未初始化狀态下隻發送 SYNC 資訊,不管收到任何資訊都被忽略, 然後回複 SYNC ,直到收到 SYNC RESPONSE 後進入已初始化狀态,已初始化狀态藍牙裝置周期發送 CONFIG ,若收到 SYNC 資訊則回複 SYNC RESPONSE ,若收到 CONFIG RESPONSE 後進入激活狀态,這 4 條資訊 資料完整校驗标志應設為 0 。

進入激活狀态後,若收到 CONFIG 資訊則回複 CONFIG RESPONSE ,收到 CONFIG RESPONSE 則忽略。若收到 SYNC 則 認為對應裝置被複位,則複位自身的上層協定棧并進入未初始化狀态以重新開機鍊路建立過程。在激活模式下,第一個包的序列碼和确認碼應當是 0 。這 4 種資訊的包格式都是 15 。

電源控制:

藍牙裝置進入激活模式後,任何一方都可能需要進入節能模式,這種情況下,可以采用鍊路控制包來互相通 知。節能模式下操作包括睡眠、叫喚、已醒三個資訊。三者之間的關系可以想象。

幀溢出控制:

在 SLIP 資料流中的 SLIP ESCAPE 參數之後可以加入軟體流控,這是在鍊路配置資訊中可商議選擇的。軟體流被使能後,标準的 XON/XOFF ( 0x11/0x13 )将會被用來控 制資料的流通,而資料包中的 0x11 、 0x13 将會用 0xDB 0xDE 、 0xDB 0xDF 代替(設計中應 該不用)。如果流控制沒有被使能的話,則 0x11 、 0x13 不需要被轉換。流控應該由類似 HCI 流 控的通道協定提供,采用标準的序列碼、确認碼。

硬體配置:

硬體連接配接與普通序列槽沒有不同,如果采用硬體流控,則可以将 RTS 、 CTS 信号加入。

推薦參數:

時間上的參數與波特率相關,确認、重新發送等必須在合适的時間進行。

附錄:

L2CAP : Logical Link Controller and Adaptation Protocol. This protocol supports higher level protocol multiplexing, packet segmentation and reassembly,and the conveying of quality of service information. 即:邏輯鍊路控制及适配協定,該協定支援高層協定多路,包分割群組合,以及服務資訊 的品質傳輸。 是藍牙協定棧的核心組成部分,也是其它協定實 現的基礎。它位于基帶之上,向上層提供面向連接配接和無連接配接的資料服務。它主要完成資料的拆裝、服務品質控制、協定的複用、分組的分割和重組(Segmentation And Reassembly )及組提取等功能。L2CAP 允許高達64KB 的資料分組。

ACL : Asynchronous ConnectionLess: the links used by Bluetooth technology to send data. These links are also important to voice systems because SCO (voice) links can only be set up after an ACL (data) link has been set up between two devices to allow them to exchange control and configuration data. 即:異步無連接配接鍊路,是藍牙用于發送資料的鍊路,隻有在裝置之間的 ACL (資料)鍊路建立起來傳輸控制和配置資料後, SCO (聲音)鍊路才可以被建立。

AFH : Adaptive Frequency Hopping, an enhancement in the Bluetooth v1.2 adopted by the SIG in November 2003. AFH co-ordinates the frequency used by Bluetooth and other 2.4GHz radio devices such as WiFi, to reduce the likelihood of interference. 即頻率适配,用于自動調整同頻段的各個裝置,以盡可能減少接口。

SCO Synchronous Connection Oriented link. One of the 2 Bluetooth data link types defined.A synchronous (circuit-switched) connection for reserved bandwidth communications, e.g. voice, between two devices created on the LMP level by reserving slots periodically on a physical channel. This type of link is used primarily to transport SCO packets (voice data). SCO packets do not include a CRC and are never retransmitted. It primarily supports time-bounded information like voice. (Master to single slave.) SCO links can be established only after an ACL link has first been established. See also ACL. 即 面向同步連接配接鍊路,是基帶層提供的兩個數 據鍊路之一,一個用于兩個裝置間的保留的帶寬通信如音頻通信同步連接配接 是在 LMP 層的實體通路保留時間槽上建立的,(暈) 。這種鍊路主要用于傳輸 SCO 音 頻資料包, SCO 資料包不包括 CRC 并 且不會被重新傳輸,它主要處理有時限的類似音頻的資訊。主對單從 SCO 鍊 路隻有在 ACL 鍊路被建立以後才可以建立。

eSCO extended Synchronous Connection Oriented channels, as specified in Bluetooth v1.2 (November 2003), are error checking voice channels that allow the retransmission of corrupted voice data. As data rates can be negotiated via eSCO, the overall high quality-of-service connection is improved. 即 面向擴充同步連接配接通道,用于重新傳輸被打斷的音頻資料,資料速率可以通過 eSCO 進行商議,進而提高連接配接可靠性。

RFCOMM : Serial Cable Emulation Protocol based on ETSI TS 07.10. 是一個仿真有線鍊路的無線資料仿真協定,符合ETSI 标 準的TS 07.10 序列槽仿真協定。它在藍牙基帶上仿真RS-232 的 控制和資料信号,為原先使用串行連接配接的上層業務提供傳送能力。

SDP : Service Discovery Protocol. It is a Bluetooth defined protocol for provided for or available through a Bluetooth device. Essentially provides a means for applications to discover which services are available and to determine the characteristics of those available services. 服務發現協定,用于提供一種發現哪種服務可用及其特性的方法。

HS : Headset 。

DUN : Dial-Up Networking 。

FHS Frequency Hopping Synchronization. This a special control packet revealing, among other things, the BD_ADDR and the clock of the source device. It contains 144 info bits and a 16-bit CRC code. The payload is coded with a rate 2/3 FEC which brings the total payload length to 240 bits. The FHS packet covers a single time slot. See also Bluetooth packet types.

FHSS Frequency Hop Spread Spectrum: a modulations technique which spreads data across the entire transmission spectrum by transmitting successive data on different channels ("hopping").

繼續閱讀