ble廣播包詳解_第1頁
ble廣播包詳解_第2頁
ble廣播包詳解_第3頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、WORD格式在使用 EN-Dongle 捕獲和解析播送包之前,我們先了解一下 BLE 報文的構(gòu)造,之后,再對捕獲的播送包進展分析。在學(xué)習(xí) BLE 的時候,下面兩個文檔是極其重要的,這是 SIG 發(fā)布的藍牙的核心協(xié)議和核心協(xié)議增補。核心協(xié)議 Core_v4.2 。核心協(xié)議增補CSS v6。雖然這兩個文檔是藍牙技術(shù)的根本,但是遺憾的是:通過這兩個文檔學(xué)習(xí)藍牙并不是那么容易的,閱讀和理解起來很費力。尤其是初學(xué)者在閱讀這兩個文檔的時候,感覺無從下口。所以,本文在分析報文的過程中,會明確指出協(xié)議文檔在什么地方定義了他們,讓我們有目的的去查閱協(xié)議文檔,做到知其然也知其所以然,這樣,學(xué)習(xí)起來就會輕松很多。1

2、. BLE 報文構(gòu)造BLE 報文構(gòu)造如下,他由以下列圖所示的各個域組成。因為有的域的長度超過了一個字節(jié),所以在傳輸?shù)倪^程中就涉及到多字節(jié)域中哪個字節(jié)先傳輸?shù)膯栴},BLE 報文傳輸時的字節(jié)序和比特序如下:字節(jié)序:大多數(shù)多字節(jié)域是從低字節(jié)開場傳輸?shù)摹W⒁猓⒉皇撬械亩嘧止?jié)域都是從低字節(jié)開場傳輸?shù)?。比特序:各個字節(jié)傳輸時,每個字節(jié)都是從低位開場。專業(yè)資料整理WORD格式圖 1:BLE 報文構(gòu)造1.1 前導(dǎo)前導(dǎo)是一個 8 比特的交替序列。他不是01010101就是 10101010 ,取決于接入地址的第一個比特。假設(shè)接入地址的第一個比特為0: 01010101假設(shè)接入地址的第一個比特為1: 1010

3、1010接收機可以根據(jù)前導(dǎo)的無線信號強度來配置自動增益控制。1.2 接入地址接入地址有兩種類型:播送接入地址和數(shù)據(jù)接入地址。播送接入地址:固定為 0x8E89BED6 ,在播送、掃描、發(fā)起連接時使用。數(shù)據(jù)接入地址: 隨機值 ,不同的連接有不同的值。在連接建立之后的兩個設(shè)備間使用。對于數(shù)據(jù)信道,數(shù)據(jù)接入地址是一個隨機值,但需要滿足下面幾點要求:1) 數(shù)據(jù)接入地址不能超過 6 個連續(xù)的“ 0或“ 1。2) 數(shù)據(jù)接入地址的值不能與播送接入地址一樣。3) 數(shù)據(jù)接入地址的 4 個字節(jié)的值必須互補一樣。4) 數(shù)據(jù)接入地址不能有超 24 次的比特翻轉(zhuǎn) (比特 0 到 1 或 1 到 0,稱為 1 次比特翻轉(zhuǎn)

4、 )。5) 數(shù)據(jù)接入地址的最后 6 個比特需要至少兩次的比特翻轉(zhuǎn)。6) 符合上面條件的有效隨機數(shù)據(jù)接入地址大概有231 個。專業(yè)資料整理WORD格式1.3 報頭專業(yè)資料整理WORD格式1.3.1播送報文報頭報頭的內(nèi)容取決于該報文是播送報文還是數(shù)據(jù)報文。播送報文的報頭如以下列圖所示:圖 2:播送報文報頭播送報文的報頭包含4bit 播送報文類型、 2bit 保存位、 1bit 發(fā)送地址類型和1bit 接收地址類型。1) 播送報文類型Core_v4.2 的 2583 頁描述了播送報文類型,共有 7 種類型,如以下列圖所示。專業(yè)資料整理WORD格式圖 3:播送報文類型每種播送報文類型都具有不同的數(shù)據(jù)格

5、式及行為。Core_v4.2 的 2584 頁的2.3.1 節(jié)詳細的描述了各個播送報文類型 ,大家可以閱讀此章節(jié)進一步了解。2) 發(fā)送地址類型和接收地址類型發(fā)送地址類型和接收地址類型指示了設(shè)備使用公共地址(Public Address)還是隨機地址 (Random Address)。公共地址和隨機地址的長度一樣,都包含6 個字節(jié)共 48 位。 BLE 設(shè)備至少要擁有這兩種地址類型中的一種,當(dāng)然也可以同時擁有這兩種地址類型。公共地址 (Public Address)公共地址由兩局部組成,如以下列圖。公共地址由制造商從IEEE 申請,由 IEEE 注冊機構(gòu)為該制造商分配的機構(gòu)唯一標識符OUI(Or

6、ganizationally UniqueIdentifier)。這個地址是獨一無二,不能修改的。 Core_v4.2 P2576的1.3.1節(jié)描述了公共地址。圖 4:公共地址構(gòu)造隨機地址隨機地址有包含兩種:靜態(tài)地址Static Device Address和私有地址專業(yè)資料整理WORD格式 PrivateDevice Address。 Core_v4.2 P2577的節(jié)描述了靜態(tài)地址。專業(yè)資料整理WORD格式圖 5:靜態(tài)地址格式靜態(tài)地址有如下要求:a) 靜態(tài)地址的最高 2 位有效位必須是 1。b) 靜態(tài)地址最高2 位有效位之外的其余局部不能全為0。c) 靜態(tài)地址最高 2 位有效

7、位之外的其余局部不能全為 1。在私有地址的定義當(dāng)中,又包含了兩個子類:不可解析私有地址( Non-resolvable Private Address和可解析私有地址 (Resolvable PrivateAddress ,RPA) 。 nRF51822 使用的是靜態(tài)地址,芯片在出廠時已經(jīng)設(shè)置好了48位地址,我們可以從下面兩個存放器讀出地址類型和地址。a)DEVICEADDRTYPE 存放器。DEVICEADDRn 存放器:包含DEVICEADDR0 和 DEVICEADDR1兩個存放器。專業(yè)資料整理WORD格式圖 6:地址類型存放器圖 7:地址存放器1.4 長度播送報文:長度域包含6 個比特

8、,有效值的X圍是637 。數(shù)據(jù)報文:長度域包含5 個比特,有效值的X圍是031 。播送報文和和數(shù)據(jù)報文的長度域有所不同,主要原因是: 播送報文除了最多31個字節(jié)的數(shù)據(jù)之外, 還必須要包含 6 個字節(jié)的播送設(shè)備地址。6+31=37,所以需要6 比特的長度域。再次強調(diào):播送時必須要包含 6 個字節(jié)的播送設(shè)備地址。1.5 數(shù)據(jù) (AdvData)播送和掃面響應(yīng)的數(shù)據(jù)格式如以下列圖所示,由有效數(shù)據(jù)局部和無效數(shù)據(jù)局部組成。專業(yè)資料整理WORD格式圖 8:播送和掃描響應(yīng)的數(shù)據(jù)格式1)有效數(shù)據(jù)局部: 包含 N 個 AD Structure,每個 AD Structure由 Length ,AD Type和

9、AD Data組成。其中:Length : AD Type和 AD Data的長度。AD Type :指示 AD Data數(shù)據(jù)的含義。問題來了, 我們怎么知道有哪些AD Type ?他們又表示什么意義?可以通過下面 2 種方式查看 AD Type和他們表示的意義。專業(yè)資料整理WORD格式從官網(wǎng)查詢,但是需要是會員才可以查詢。專業(yè)資料整理WORD格式s://Technical/AssignedNumbers/generic_access_profile.htm查看 Nordic的 SDK 中的定義, AD type的定義在程序的 “ ble_gap.h頭文件中。定義如下

10、:1 #define BLE_GAP_AD_TYPE_FLAGS0x01/*< Flags for discoverability. */2 #defineBLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_MORE_AVAILABLE0x02 /*< Partiallist of 16 bit service UUIDs. */3 #defineBLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_COMPLETE0x03/*<Completelist of 16 bit service UUIDs. */4 #defineBLE_GAP_

11、AD_TYPE_32BIT_SERVICE_UUID_MORE_AVAILABLE0x04 /*< Partiallist of 32 bit service UUIDs. */5 #defineBLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_COMPLETE0x05/*<Completelist of 32 bit service UUIDs. */6 #defineBLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_MORE_AVAILABLE 0x06 /*< Partiallist of 128 bit service UUI

12、Ds. */7 #defineBLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_COMPLETE0x07/*<Completelist of 128 bit service UUIDs. */8 #defineBLE_GAP_AD_TYPE_SHORT_LOCAL_NAME0x08 /*< Shortlocal device name. */9 #defineBLE_GAP_AD_TYPE_COMPLETE_LOCAL_NAME0x09 /*< Complete local device name.*/ 10#define BLE_GAP_AD_TYPE

13、_TX_POWER_LEVEL0x0A專業(yè)資料整理WORD格式/*< Transmit power level. */11#define BLE_GAP_AD_TYPE_CLASS_OF_DEVICE0x0D /*< Class of device. */12#defineBLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C0x0E /*< SimplePairing Hash C. */ 13#defineBLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R0x0F /*< Simple Pairing Rand

14、omizer R. */14#defineBLE_GAP_AD_TYPE_SECURITY_MANAGER_TK_VALUE0x10/*< SecurityManager TK Value. */15#defineBLE_GAP_AD_TYPE_SECURITY_MANAGER_OOB_FLAGS0x11/*< SecurityManager Out Of Band Flags. */16#defineBLE_GAP_AD_TYPE_SLAVE_CONNECTION_INTERVAL_RANGE 0x12 /*< SlaveConnection Interval Range.

15、 */17#defineBLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_16BIT0x14 /*< List of16-bit Service Solicitation UUIDs. */18#defineBLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_128BIT0x15 /*< List of128-bit Service Solicitation UUIDs. */19#defineBLE_GAP_AD_TYPE_SERVICE_DATA0x16 /*< ServiceData - 16-bit UUID.

16、 */20#define BLE_GAP_AD_TYPE_PUBLIC_TARGET_ADDRESS0x17 /*< Public Target Address. */21#defineBLE_GAP_AD_TYPE_RANDOM_TARGET_ADDRESS0x18 /*< RandomTarget Address. */22#defineBLE_GAP_AD_TYPE_APPEARANCE0x19 /*< Appearance. */23#defineBLE_GAP_AD_TYPE_ADVERTISING_INTERVAL0x1A /*< Advertising I

17、nterval. */24#defineBLE_GAP_AD_TYPE_LE_BLUETOOTH_DEVICE_ADDRESS0x1B /*< LEBluetooth Device Address. */25#defineBLE_GAP_AD_TYPE_LE_ROLE0x1C /*<LE Role. */ 26#defineBLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C2560x1D /*< Simple Pairing Hash C-256. */27#define專業(yè)資料整理WORD格式BLE_GAP_AD_TYPE_SIMPLE_PAIRIN

18、G_RANDOMIZER_R2560x1E /*< SimplePairing Randomizer R-256. */28#defineBLE_GAP_AD_TYPE_SERVICE_DATA_32BIT_UUID0x20 /*< ServiceData - 32-bit UUID. */29#defineBLE_GAP_AD_TYPE_SERVICE_DATA_128BIT_UUID0x21 /*< ServiceData - 128-bit UUID. */30#define BLE_GAP_AD_TYPE_3D_INFORMATION_DATA0x3D /*<

19、3D Information Data. */31#defineBLE_GAP_AD_TYPE_MANUFACTURER_SPECIFIC_DATA0xFF /*<Manufacturer Specific Data. */1.6 校驗BLE 采用的是 24 位 CRC 校驗。CRC 對報頭、長度和數(shù)據(jù)進展計算。 24 位 CRC的生成多項式如下:專業(yè)資料整理WORD格式2.播送包解析通過上文的描述,我們對BLE 播送包有了大致的了解,接下來我們用EN-Dongle捕獲一個心率計的播送包,通過對實際播送包的分析來理解BLE 報文專業(yè)資料整理WORD格式構(gòu)造和播送。播送包捕獲實驗的硬件連接

20、如下。專業(yè)資料整理WORD格式圖 9:硬件連接2.1 心率計程序下載2.1.1 下載協(xié)議棧SoftDevice必須使用 nRFgo Studio下載,翻開nRFgo Studio,切換到“ Program SoftDevice選項卡。點擊 “ Browse按鈕翻開SoftDevice的 HEX文件位于“BLE 實驗 藍牙協(xié)議棧 (SoftDevice)目錄下的 s110。點擊專業(yè)資料整理WORD格式“ Program 下載程序。專業(yè)資料整理WORD格式2.1.1 下載應(yīng)用程序應(yīng)用程序可以用nRFgo Studio下載,也可以在MDK 中直接下載調(diào)試,在這里我們用 nRFgo Studio下載。

21、切換到 “Program Application 選項卡。點擊“ Browse按鈕翻開應(yīng)用程序的HEX 文件位于“BLE 實驗 _build目錄下的 nrf51822_*aa_s110.hex 。點擊“Program下載程序。2.2 捕獲播送包按照"藍牙 4.0BLE 抓包 (一 )"中的描述進展抓包,下面是我們捕獲一個心率計的播送包。專業(yè)資料整理WORD格式圖 10 :捕獲的心率計播送包專業(yè)資料整理WORD格式圖 11 :查看播送包傳輸?shù)臄?shù)據(jù)2.3 分析播送包為了方便分析,我們先取出這個播送包實際傳輸?shù)臄?shù)據(jù),如圖9 中所示。心率計完專業(yè)資料整理WORD格式整的播送報文如下

22、:專業(yè)資料整理WORD格式D6 BE 89 8E40 21 60 BF 8A B9 CD C50B 09 4E 6F 72 64 69 63 5F 4852 4D03 19 41 0302 01 0607 03 0D 18 0F 18 0A 18EF A6 F02.3.1接入地址D6 BE 89 8E :接入地址,對播送來說是固定值。注意一下這里的字節(jié)序,接入地址傳輸時是低字節(jié)在前的。2.3.2 PDUq 40 :播送報文報頭。lbit0bit3是 0000 ,說明播送類型是ADV_IND ,即通用播送指示。l bit7(RxAdd) 是 0, bit7(TxAdd) 是 1 ,說明使用的是隨

23、機地址 (random address) 。Core_V4.2 P2584的2.3.1有詳細的描述。q21 :長度,表示這個播送的長度是33 個字節(jié)。q 9A 3F 20 FB 74 C5 :設(shè)備地址,這里使用的是隨機靜態(tài)地址。接下來就是播送包最重要的局部了,稱之為AdvData ,前面我們說過AdvData是N 個 AD Structure組層成,每個AD Structure的格式都是Length |AD Type|ADData組成。0B 094E 6F 7264 69 63 5F 48 52 4D03 19 41 0302 01 0607 03 0D 18 0F18 0A18第一個字節(jié) 0

24、B表示第一個 AD Structure的長度是 11個字節(jié),即第一個 ADStructure是由 0B 加上緊跟著 0B 后面的 11 個字節(jié)組成,因此,第一個 AD Structure是:0B 09 4E 6F 72 64 69 63 5F 48 52 4D專業(yè)資料整理WORD格式表 1 :第 1 個 AD Structure的意義專業(yè)資料整理WORD格式Length AD TypeAD Data0B094E 6F 72 64 69 63 5F 48 52 4D11 字節(jié) AD type為“完程序中定義的為Nordic_HRM對應(yīng)的十六進制就整的本地名稱 是4E6F726469635F485

25、24D第 2個 AD Structure是: 03 19 41 03表2:第2個 AD Structure的意義Length AD TypeAD Data031941 033 字節(jié) AD type為外觀特性是一個 16位的數(shù)值,由 SIG 定義,用來列舉設(shè)“外觀特性 備的外觀樣式,指示設(shè)備是普通手機,手環(huán)什么的。第 3個 AD Structure是: 02 01 06表 3:第 3 個 AD Structure的意義Length AD TypeAD Data0201062 字節(jié) AD type為flag 說明了物理連接功能,比方有限發(fā)現(xiàn)模式,不支持“ Flag經(jīng)典藍牙等。lbit 0: LE

26、有限發(fā)現(xiàn)模式。lbit 1: LE 普通發(fā)現(xiàn)模式。lbit 2:不支持 BR/EDR 。lbit 3:對 Same Device Capable(Controller)同時支持 BLE 和 BR/EDR 。專業(yè)資料整理WORD格式lbit 4:對 Same Device Capable(Host)同時支專業(yè)資料整理WORD格式持 BLE 和 BR/EDR 。bit 5.7:預(yù)留。第 4 個 AD Structure 是: 07 03 0D 18 0F 18 0A 18表 4 :第 4 個 AD Structure的意義Length AD TypeAD Data07030D 18 0F 18 0

27、A 187 字節(jié) AD type為“ 16bit該設(shè)備支持的完整的 16bit Service uuid列Service uuid 列表表。l 180D :Heart Rate service UUID(心率效勞 UUID)l180F :Battery service UUID(電池效勞UUID)l 180A :Device Information service UUID( 設(shè)備信息效勞 UUID)16bit UUID:128 位的 UUID 相當(dāng)長,設(shè)備間為了識別數(shù)據(jù)的類型需要發(fā)送長達16 字節(jié)的數(shù)據(jù)。為了提高傳輸效率, 藍牙技術(shù)聯(lián)盟 (SIG)定義了一個稱為“UUID 基數(shù)的 128 位

28、通用唯一識別碼,結(jié)合一個較短的16 位數(shù)使用。二者仍然遵循通用唯一識別碼的分配規(guī)那么,只不過在設(shè)備間傳輸常用的UUID 時,只發(fā)送較短的16 位版本,接收方收到后補上藍牙UUID 基數(shù)即可。藍牙 UUID 基數(shù)如下:專業(yè)資料整理WORD格式000000000000 1000 8000 008059B34FB專業(yè)資料整理WORD格式如要發(fā)送的 16 位 UUID 為 0x2A01 ,完整的 128 的 UUID 便是:0000 2A010000 1000 8000 008059B34FB低功耗藍牙使用的那局部UUID 被分為以下幾組:l 0x1800 0x26FF :用作效勞類通用唯一識別碼。l

29、0x2700 0x27FF:用于標識計量單位。l0x2800 0x28FF:用于區(qū)分屬性類型。l0x2900 0x29FF:用作特性描述。l0x2A00 0x7FFF:用于區(qū)分特性類型。在程序的“ble_srv_common.h文件中定義了16bit service UUID,如下,當(dāng)然也可以在SIG 官網(wǎng)上查詢:1 #defineBLE_UUID_ALERT_NOTIFICATION_SERVICE0x1811/*< Alert Notification service UUID. */2 #defineBLE_UUID_BATTERY_SERVICE0x180F/*< Batt

30、ery service UUID. */3#defineBLE_UUID_BLOOD_PRESSURE_SERVICE0x1810/*< Blood Pressure service UUID. */4 #defineBLE_UUID_CURRENT_TIME_SERVICE0x1805/*< Current Time service UUID. */5 #defineBLE_UUID_CYCLING_SPEED_AND_CADENCE0x1816/*< Cycling Speed and Cadence service UUID. */6 #defineBLE_UUID_DEVICE_INFORMATION_SERVICE0x180A/*< Device Information service UUID. */7#define BLE_UUID_GLUCOSE_SERVICE0x1808/*< Glucose service UUID. */8 #define專業(yè)資料整理WORD格式BLE_UUID_HEALTH_THERMOMET

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論