BLE——協議層次結構


未完待續……

 

BLE協議

Bluetooth Application

Applications

GATT-Based Profiles/Services

Bluetooth Core

(Stack)

BLE Host

ATT、GATT、SM

GAP

L2CAP

HCI(對藍牙協議無影響)

BLE Controller

Link Layer

Physical Layer

 


1  Bluetooth Core(Stack)
 

  藍牙核心協議,關注藍牙核心技術的描述和規范,只提供基礎的機制。

  藍牙核心協議由Controller和Host兩部分組成,在一個系統中,Host只有一個,但Controller可以有多個,如:單獨的LE Controller;單獨的BR/EDR Controller;單獨的LE+BR/EDR Controller;在單獨的BR/EDR Controller或LE+BR/EDR Controller基礎上,增加一個或多個額外的AMP Controller。

1.1  Controller

  Controller實現射頻相關的模擬和數字部分,完成最基本的數據發送和接收,Controller對外接口是天線,對內接口是主機控制器接口HCI(Hostcontroller interface);控制器包含物理層PHY(physicallayer),鏈路層LL(linker layer),直接測試模式DTM(Direct Test mode)以及主機控制器接口HCI。

1.1.1  Physical Layer

  頻率選擇(2402-2480MHz) + 信道選擇(40) + 信道間隔(2MHz) + 調制方式(GFSK) + 數據傳輸速率(1Mbps)+ 接收靈敏度 + 發射功率 + 雜散輻射 + 射頻容差

1、信道選擇

物理信道(Physical Channel)為: F=2402+k*2MHz ,k=0,…,39,共40個信道。

Physical Channel = RF Channel

1.1.2.  Link Layer

信道分類(3+37) + 廣播信道定義(37、38、39) + 數據通道分發(跳頻) + 狀態角色定義和切換 + 數據包校驗重傳

 

LL – Link Layer – Logic Link

  1、廣播信道定義

37ch —— 2402MHz

38ch —— 2426MHz

39ch —— 2480MHz

之所以選定3個廣播信道是一種權衡,少了可能會被阻塞,多了會增加功耗。3個廣播信道剛好避開了WiFi的1ch,6ch,11ch,所以BLE廣播的時候,不會被WiFi影響。(PS:可以人為阻塞這三個通道)

 

  2、數據信道切換

BLE匹配之后,LL由廣播信道切換到數據信道,具體使用哪個數據信道在匹配時約定,且連接不會長期使用一個固定通道,會通過跳頻技術隨機有規律切換。

  3、定義狀態和角色

 

圖 2 Link Layer狀態機

Standby狀態是初始狀態,即不發送數據,也不接收數據。根據上層實體的命令(如位於host軟件中GAP),可由其它任何一種狀態進入,也可以切換到除Connection狀態外的任意一種狀態。

Advertising狀態是可以通過廣播通道發送數據的狀態,由Standby狀態進入。它廣播的數據可以由處於Scanning或者Initiating狀態的實體接收。上層實體可通過命令將Advertising狀態切換回Standby狀態。另外,連接成功后,也可切換為Connection狀態。

Scanning狀態是可以通過廣播通道接收數據的狀態,由Standby狀態進入。根據Advertiser所廣播的數據的類型,有些Scanner還可以主動向Advertiser請求一些額外數據。上層實體可通過命令將Scanning狀態切換回Standby狀態。

Initiating狀態和Scanning狀態類似,不過是一種特殊的接收狀態,由Standby狀態進入,只能接收Advertiser廣播的connectable的數據,並在接收到數據后,發送連接請求,以便和Advertiser建立連接。當連接成功后,Initiater和對應的Advertiser都會切換到Connection狀態。

Connection狀態是和某個實體建立了單獨通道的狀態,在通道建立之后,由Initiating或者Advertising自動切換而來。通道斷開后,會重新回到Standby狀態。

通道建立后(通常說“已連接”),處於Connection狀態的雙方,分別有兩種角色Master和Slave:

Initiater方稱作Master

Advertiser方稱作Slave

 

  4、Air Interface Protocol

解決兩個問題:不同實體間在對應狀態下的數據交換,根據上層實體的指令以及實際情況負責狀態之間的切換。

 

定義Physical Channel上收發的數據包格式:

Preamble(1 octet) Access Address(4 octets) PDU(2 to 257 octets) CRC(3 octets)

 

定義不同類型的PDU及其格式:

Advertising channel中Advertising有關的PDU

Advertising channel中Scanning有關的PDU

Advertising channel中Initialing有關的PDU

Data channel中LL data有關的PDU

Data channel中LL control有關的PDU

 

針對廣播通道以白名單(White List)的形式定義Link Layer的數據過濾機制

 

執行廣播通道上實際的packet收發操作

 

定義連接建立的方式及過之后的應答、流控等機制

 

  5、Link Layer Control

抽象出來一個鏈路控制協議(Link Layer Control),用於管理、控制兩個Link Layer實體之間所建立的這個Connection,主要功能包括:

更新Connection相關的參數,如transmitWindowSize、transmitWindowOffset、connInterval等等(具體意義這里不再詳述);

更新該連接所使用的跳頻圖譜(使用哪些Physical Channels);

執行鏈路加密(Encryption)有關的過程。

1.2.  HCI

    1. HCI作用圖解

 

圖 3 HCI作用圖解

定義Host和Controller(通常是兩顆IC)之間的通信協議,對理解藍牙協議來說,是無關緊要的。向上為主機提供軟件應用程序接口(API)。

    1. HCI內容

HCI邏輯上定義一系列的命令,事件;

物理上有UART,SDIO,USB,SPI接口;

實際可能包含里面的任意1種或幾種。常見RF測試時,我們常使用UART發送標准的HCI指令控制Controller。

1.3.  Host

主機host是藍牙協議棧的核心部分,GAP層負責制定設備工作的角色,SS層負責指定安全連接,Logic Link層功能非常強大,官方作用為協議/通道的多路復用,負責上層應用數據(L2CAPService Data Units,SDUs)的分割(和重組),生成協議數據單元(L2CAP Packet Data Units,PDUs),以滿足用戶數據傳輸對延時的要求,並便於后續的重傳、流控等機制的實現。

1.3.1  L2CAP

提供數據封裝服務,將LL提供的Logical Channel換分為一個個的L2CAP Channel,以便提供應用程序級別的通道復用。

 

邏輯連接控制和適配協議,Logic Link Control and Adaptation Protocol

Protocol/channel multiplexing,協議/通道的多路復用;

Segmentation and reassembly,上層應用數據(L2CAP Service Data Units,SDUs)的分割(和重組),生成協議數據單元(L2CAP Packet Data Units,PDUs),以滿足用戶數據傳輸對延時的要求,並便於后續的重傳、流控等機制的實現;

Flow control per L2CAP channel,基於L2CAP Channel的流控機制;

Error control and retransmissions,錯誤控制和重傳機制;

Support for Streaming,支持流式傳輸(如音頻、視頻等,不需要重傳或者只需要有限重傳);

Fragmentation and Recombination,協議數據單元(PDUs)的分片(和重組),生成符合Link Layer傳輸要求的數據片(長度不超過251,具體可參考5.4.1中有關的介紹);

Quality of Service,QoS的支持。

 

Protocol/channel multiplexing

channel multiplexing(基於通道的多路復用)—— CID,Channel ID

Protocol multiplexing(基於協議的多路復用)——只允許在BR/EDR controller中使用

1.3.2  ATT(Attribute Protocol)

負責數據檢索

對上文的總結:Physical Layer負責提供一系列的Physical Channel;基於這些Physical Channel,Link Layer可在兩個設備之間建立用於點對點通信的Logical Channel;而L2CAP則將這個Logical Channel換分為一個個的L2CAP Channel,以便提供應用程序級別的通道復用。到此之后,基本協議棧已經構建完畢,應用程序已經可以基於L2CAP歡快的run起來了。

 

    1. 特點

基於L2CAP,使用固定的Channel ID(0x004)

采用client-server的形式。提供信息(以后都稱作Attribute)的一方稱作ATT server(一般是那些傳感器節點),訪問信息的一方稱作ATT client。

一個Attribute由Attribute Type、Attribute Handle和Attribute Value組成。

Attribute可以定義一些權限(Permissions),以便server控制client的訪問行為

根據所定義的Attribute PDU的不同,client可以對server有多種訪問方式

 

1.3.3  GATT(Generic Attribute Profile)

ATT之所以稱作“protocol”,是因為它還比較抽象,僅僅定義了一套機制,允許client和server通過Attribute的形式共享信息。

 

GATT是一個profile(更准確的說是profile framework)

在藍牙協議中,profile一直是一個比較抽象的概念,我們可以將其理解為“應用場景、功能、使用方式”都被規定好的Application。傳統的BR/EDR如此,BLE更甚。上面我們講過,BLE很大一部分的應用場景是信息(Attribute)的共享,因此,BLE協議棧基於Attribute Protocol,定義了一個稱作GATT(Generic Attribute)的profile framework(它本身也是一個profile),用於提供通用的、信息的存儲和共享等功能。

 

圖 4 GATT Profile層次結構

 

1.3.4  SM(Security Manager)

 

1.3.5  GAP(Generic Access Profile)

通用訪問配置文件,實現功能如下:

 

    1. 定義GAP層的藍牙設備角色

Broadcaster Role,設備正在發送advertising events;

Observer Role,設備正在接收advertising events;

Peripheral Role,設備接受Link Layer連接(對應Link Layer的slave角色);

Central Role,設備發起Link Layer連接(對應Link Layer的master角色)。

    1. 定義GAP層的、用於實現各種通信的操作模式和過程

Broadcast mode and observation procedure,實現單向的、無連接的通信方式;

Discovery modes and procedures,實現藍牙設備的發現操作;

Connection modes and procedures,實現藍牙設備的連接操作;

Bonding modes and procedures,實現藍牙設備的配對操作。

    1. 定義User Interface有關的藍牙參數

藍牙地址(Bluetooth Device Address);

藍牙名稱(Bluetooth Device Name);

藍牙的pincode(Bluetooth Passkey);

藍牙的class(Class of Device,和發射功率有關);

等等。

    1. Security有關的定義

 

2.  Application

藍牙應用層協議,在藍牙核心協議的基礎上,根據具體的應用需求,定義出各種各樣的策略,如FTP、文件傳輸、局域網等。

Profile是Application的代指,翻譯為服務,具體有:SPP、HSP、HFP、FTP、IPv6/6LoWPAN等。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM