一分鍾讀懂低功耗藍牙(BLE)連接數據包
1.概述
BLE 連接過程中有三個重要的數據包:SCAN_REQ, SCAN_RSP 和 CONNECT_REQ。
SCAN_REQ: 掃描請求,由主設備(MASTER DEVICE)向從設備(SLAVE DEVICE)發出,目的是為了獲得從設備的響應以得到更多的從設備
廣播數據信息(包括設備名字,或者服務UUID,及其它如廠家特定格式的信息(如硬件版本,軟件版本號,設備系列號等等)
SCAN_RSP: 從設備對就主設備發起的SCAN_REQ的響應,作為廣播包的補充,從設備可以給主設備更多的廣播數據,比如說,有些設備在廣播
包里面沒有設備名字,這個時候就可以把設備名字放在這個包里面發給主設備
CONNECT_REQ:主設備向從設備發出連接請求。至此連接建立完成(從設備不會響應這個請求),如果從設備沒有連接上面的問題的話,以后
主從雙方會開始相互交換有效數據(基於GAP,GATT及SMP協議)或者交換空包。
以下對這三個數據包進行詳細解讀
2.關鍵字:Hollong BLE 偵聽儀,低功耗藍牙嗅探器, BLE 分析儀,BLE 數據抓取
Keyword: Hollong BLE Sniffer, BLE Data Analyzer,BLE Capture
3.抓取連接數據包的准備工作
* 硬件:一個BLE設備(從設備)及對應的主設備(如智能手機里面的相關應用程序,或者通用BLE 工具軟件);
一台HOLLONG BLE SNIFFER (Hollong BLE 偵聽儀)
* 軟件:Hollong 藍牙4.0/4.1 BLE協議監控分析儀 軟件
下載鏈接:
http://www.viewtool.com/index.ph ... hollong-4-0-4-1-ble
4.SCAN_REQ 包
1)完整包

2) 存取地址 (Access Address) 對於廣播包,這是一個固定長度(4個字節)及固定內容(0x8e89bed6)的主從設備識別廣播包的存取地址。

3) 頭信息 (Header Info) 固定為2個字節:分解為16個位來使用
位[0:3]:P廣播包(PDU) 類型,總共有6個類型:
PDU Type
b3b2b1b0 Packet Name
0000 ADV_IND: 可連接通用連接廣播
0001 ADV_DIRECT_IND:可連接定向連接(指定設備)廣播
0010 ADV_NONCONN_IND:不可連接通用廣播
0011 SCAN_REQ:掃描請求
0100 SCAN_RSP:掃描響應
0101 CONNECT_REQ:連接請求
0110 ADV_SCAN_IND:可掃描通用廣播
0111-1111 Reserved
位[4:5]:保留
位[6]:RxAdd
位[7]:TxAdd
位[8:13]:廣播數據長度 (最大為37 字節)
位[14:15]:保留

4) 主設備地址

5)從設備地址

6)CRC

4.SCAN_RSP 包
1)存取地址
定義同上

2)頭信息
定義同上

3)從設備地址
固定6個字節的從設備地址(MAC ADDRESS)

4)響應數據(廣播數據)
格式同廣播數據格式(詳見文“1分鍾讀懂低功耗藍牙廣播數據”), 在這個包里面,數據為0(沒有數據)

5)CRC
固定為3個字節

5. CONNECT_REQ 包
1)存取地址
固定4個字節和內容(0x8e89bed6)的存取地址,BLE 芯片使用這個固定的地址作為廣播通道的BLE數據接收。

2)頭信息
二個字節的頭信息(解析格式同上)

3)主設備地址

4)從設備地址

5)存取地址
在此指定連接后使用的存取地址(BLE 數據通道),這個地址是由內部指定的非確定的4個字節長度的地址,不像廣播數據通道使用固定內容的存取地址。

6)CRC INIT
初始化的CRC 值,以后被使用於數據CRC 校驗

7)窗口時間 (Win Size)

8) 窗口偏移

9)數據間隔時間 (CONNECTION INTERVAL)
發送兩個數據包(或者空包)的間隔時間。
計算公式為:24 (0x18) * 1.25ms = 30ms, 在抓取的數據包中可以看到,每兩個包之間的間隔是30MS。 下載此數據包需要注冊。

10)時延(Latency)

11) 中斷連接最大時延(TIME OUT)
當主從雙方有一方在大於此時間后沒有接收到任何數據包或者空包,則由連接狀態轉為非連接狀態(主設備可以重新開始
掃描, 從設備也可以重新開始廣播,具體做什么由應用程序決定)。
計算方法: 最大時延 = TIME_OUT * 10MS, 在此為:72 (0X48) * 10 = 720 MS, 也就是說,如果雙方在0.72秒期間沒有收到任何數據包或者空包,則視為連接中斷,由連接狀態轉為非連接狀態,開始做應用程序要求做的事情。

12)跳頻通道圖(CHANNEL MAP)
這個跳頻圖是由BLE 芯片根據周圍環境中可以使用的BLE 通道而制定出來,根據掃描測試的環境不同(指被占用的頻譜資源不同)而不同,當這個圖(表)通過CONNECT_REQ 包發送給從設備后,主從雙方都會根據這個圖來同步跳頻(HOPPING),低功耗藍牙設備通過這個方法能夠有效避開擁堵的頻道,使用比較“干凈”,無(少)干擾的頻道來交換數據,從而大幅提升傳輸數據的穩定可靠性。

由於這個是在比較干凈(周圍幾乎沒有任何BLE 設備或者其它工作在2.4G頻段,類似頻道的強信號設備)的環境下面工作的主從設備,所以可以看出,它使用了所有頻道(除了廣播專用頻道37,38,39)作為跳頻圖。
13) HOP 及CLOCK
0xAF (10101111)
HOP: 10101
CLOCK: 111 => 對應晶體精度 為0-20PPm
一個字節的前5個位指定HOP(跳頻)算法中需要的數據(HOPINCREMENT),另外三個位指定晶體的精度等級(可以有多少PPM的誤差)
SCA masterSCA, 三個位對應的晶體精度等級如下: 000: 251 ppm to 500 ppm
001: 151 ppm to 250 ppm
010: 101 ppm to 150 ppm
011: 76 ppm to 100 ppm
100: 51 ppm to 75 ppm
101: 31 ppm to 50 ppm
110: 21 ppm to 30 ppm
111: 0 ppm to 20 ppm

14)CRC
同上
Core_V4.0_LE.pdf(818.21 KB, 下載次數: 19)


原文鏈接: