一分鐘讀懂低功耗藍(lán)牙(BLE)連接數(shù)據(jù)包
1.概述
BLE 連接過程中有三個重要的數(shù)據(jù)包:SCAN_REQ, SCAN_RSP 和 CONNECT_REQ。
SCAN_REQ: 掃描請求,由主設(shè)備(MASTER DEVICE)向從設(shè)備(SLAVE DEVICE)發(fā)出,目的是為了獲得從設(shè)備的響應(yīng)以得到更多的從設(shè)備
廣播數(shù)據(jù)信息(包括設(shè)備名字,或者服務(wù)UUID,及其它如廠家特定格式的信息(如硬件版本,軟件版本號,設(shè)備系列號等等)
SCAN_RSP: 從設(shè)備對就主設(shè)備發(fā)起的SCAN_REQ的響應(yīng),作為廣播包的補(bǔ)充,從設(shè)備可以給主設(shè)備更多的廣播數(shù)據(jù),比如說,有些設(shè)備在廣播
包里面沒有設(shè)備名字,這個時候就可以把設(shè)備名字放在這個包里面發(fā)給主設(shè)備
CONNECT_REQ:主設(shè)備向從設(shè)備發(fā)出連接請求。至此連接建立完成(從設(shè)備不會響應(yīng)這個請求),如果從設(shè)備沒有連接上面的問題的話,以后
主從雙方會開始相互交換有效數(shù)據(jù)(基于GAP,GATT及SMP協(xié)議)或者交換空包。
以下對這三個數(shù)據(jù)包進(jìn)行詳細(xì)解讀
2.關(guān)鍵字:Hollong BLE 偵聽儀,低功耗藍(lán)牙嗅探器, BLE 分析儀,BLE 數(shù)據(jù)抓取
Keyword: Hollong BLE Sniffer, BLE Data Analyzer,BLE Capture
3.抓取連接數(shù)據(jù)包的準(zhǔn)備工作
* 硬件:一個BLE設(shè)備(從設(shè)備)及對應(yīng)的主設(shè)備(如智能手機(jī)里面的相關(guān)應(yīng)用程序,或者通用BLE 工具軟件);
一臺HOLLONG BLE SNIFFER (Hollong BLE 偵聽儀)
* 軟件:Hollong 藍(lán)牙4.0/4.1 BLE協(xié)議監(jiān)控分析儀 軟件
下載鏈接:
http://www.viewtool.com/index.ph ... hollong-4-0-4-1-ble
4. SCAN_REQ 包
1)完整包
2) 存取地址 (Access Address) 對于廣播包,這是一個固定長度(4個字節(jié))及固定內(nèi)容(0x8e89bed6)的主從設(shè)備識別廣播包的存取地址。
3) 頭信息 (Header Info) 固定為2個字節(jié):分解為16個位來使用
位[0:3]:P廣播包(PDU) 類型,總共有6個類型:
PDU Type
b3b2b1b0 Packet Name
0000 ADV_IND: 可連接通用連接廣播
0001 ADV_DIRECT_IND:可連接定向連接(指定設(shè)備)廣播
0010 ADV_NONCONN_IND:不可連接通用廣播
0011 SCAN_REQ:掃描請求
0100 SCAN_RSP:掃描響應(yīng)
0101 CONNECT_REQ:連接請求
0110 ADV_SCAN_IND:可掃描通用廣播
0111-1111 Reserved
位[4:5]:保留
位[6]:RxAdd
位[7]:TxAdd
位[8:13]:廣播數(shù)據(jù)長度 (最大為37 字節(jié))
位[14:15]:保留
4) 主設(shè)備地址
5)從設(shè)備地址
6)CRC
4. SCAN_RSP 包
1)存取地址
定義同上
2)頭信息
定義同上
3)從設(shè)備地址
固定6個字節(jié)的從設(shè)備地址(MAC ADDRESS)
4)響應(yīng)數(shù)據(jù)(廣播數(shù)據(jù))
格式同廣播數(shù)據(jù)格式(詳見文“1分鐘讀懂低功耗藍(lán)牙廣播數(shù)據(jù)”), 在這個包里面,數(shù)據(jù)為0(沒有數(shù)據(jù))
5)CRC
固定為3個字節(jié)
5. CONNECT_REQ 包
1)存取地址
固定4個字節(jié)和內(nèi)容(0x8e89bed6)的存取地址,BLE 芯片使用這個固定的地址作為廣播通道的BLE數(shù)據(jù)接收。
2)頭信息
二個字節(jié)的頭信息(解析格式同上)
3)主設(shè)備地址
4)從設(shè)備地址
5)存取地址
在此指定連接后使用的存取地址(BLE 數(shù)據(jù)通道),這個地址是由內(nèi)部指定的非確定的4個字節(jié)長度的地址,不像廣播數(shù)據(jù)通道使用固定內(nèi)容的存取地址。
6)CRC INIT
初始化的CRC 值,以后被使用于數(shù)據(jù)CRC 校驗(yàn)
7)窗口時間 (Win Size)
8) 窗口偏移
9)數(shù)據(jù)間隔時間 (CONNECTION INTERVAL)
發(fā)送兩個數(shù)據(jù)包(或者空包)的間隔時間。
計(jì)算公式為:24 (0x18) * 1.25ms = 30ms, 在抓取的數(shù)據(jù)包中可以看到,每兩個包之間的間隔是30MS。 下載此數(shù)據(jù)包需要注冊。
10)時延(Latency)
11) 中斷連接最大時延(TIME OUT)
當(dāng)主從雙方有一方在大于此時間后沒有接收到任何數(shù)據(jù)包或者空包,則由連接狀態(tài)轉(zhuǎn)為非連接狀態(tài)(主設(shè)備可以重新開始
掃描, 從設(shè)備也可以重新開始廣播,具體做什么由應(yīng)用程序決定)。
計(jì)算方法: 最大時延 = TIME_OUT * 10MS, 在此為:72 (0X48) * 10 = 720 MS, 也就是說,如果雙方在0.72秒期間沒有收到任何數(shù)據(jù)包或者空包,則視為連接中斷,由連接狀態(tài)轉(zhuǎn)為非連接狀態(tài),開始做應(yīng)用程序要求做的事情。
12)跳頻通道圖(CHANNEL MAP)
這個跳頻圖是由BLE 芯片根據(jù)周圍環(huán)境中可以使用的BLE 通道而制定出來,根據(jù)掃描測試的環(huán)境不同(指被占用的頻譜資源不同)而不同,當(dāng)這個圖(表)通過CONNECT_REQ 包發(fā)送給從設(shè)備后,主從雙方都會根據(jù)這個圖來同步跳頻(HOPPING),低功耗藍(lán)牙設(shè)備通過這個方法能夠有效避開擁堵的頻道,使用比較“干凈”,無(少)干擾的頻道來交換數(shù)據(jù),從而大幅提升傳輸數(shù)據(jù)的穩(wěn)定可靠性。
由于這個是在比較干凈(周圍幾乎沒有任何BLE 設(shè)備或者其它工作在2.4G頻段,類似頻道的強(qiáng)信號設(shè)備)的環(huán)境下面工作的主從設(shè)備,所以可以看出,它使用了所有頻道(除了廣播專用頻道37,38,39)作為跳頻圖。
13) HOP 及CLOCK
0xAF (10101111)
HOP: 10101
CLOCK: 111 => 對應(yīng)晶體精度 為0-20PPm
一個字節(jié)的前5個位指定HOP(跳頻)算法中需要的數(shù)據(jù)(HOPINCREMENT),另外三個位指定晶體的精度等級(可以有多少PPM的誤差)
SCA masterSCA, 三個位對應(yīng)的晶體精度等級如下: 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, 下載次數(shù): 140)
em9304 fineme 071117.zip (19.05 KB, 下載次數(shù): 82)
原文鏈接:
http://www.viewtool.com/bbs/forum.php?mod=viewthread&tid=63206&extra=page%3D1
微信公眾號: 緯圖物聯(lián)
|