資源描述:
《ble 廣播包詳解.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、在使用EN-Dongle捕獲和解析廣播包之前,我們先了解一下BLE報(bào)文的結(jié)構(gòu),之后,再對(duì)捕獲的廣播包進(jìn)行分析。在學(xué)習(xí)BLE的時(shí)候,下面兩個(gè)文檔是極其重要的,這是SIG發(fā)布的藍(lán)牙的核心協(xié)議和核心協(xié)議增補(bǔ)。·核心協(xié)議Core_v4.2?!ず诵膮f(xié)議增補(bǔ)CSSv6?! ‰m然這兩個(gè)文檔是藍(lán)牙技術(shù)的根本,但是遺憾的是:通過這兩個(gè)文檔學(xué)習(xí)藍(lán)牙并不是那么容易的,閱讀和理解起來很費(fèi)力。尤其是初學(xué)者在閱讀這兩個(gè)文檔的時(shí)候,感覺無從下口。所以,本文在分析報(bào)文的過程中,會(huì)明確指出協(xié)議文檔在什么地方定義了他們,讓我們有目的的去查閱協(xié)議文檔,做到知其然也知其所以然,這樣,學(xué)習(xí)起
2、來就會(huì)輕松很多。1.BLE報(bào)文結(jié)構(gòu) BLE報(bào)文結(jié)構(gòu)如下,他由下圖所示的各個(gè)域組成。因?yàn)橛械挠虻拈L度超過了一個(gè)字節(jié),所以在傳輸?shù)倪^程中就涉及到多字節(jié)域中哪個(gè)字節(jié)先傳輸?shù)膯栴},BLE報(bào)文傳輸時(shí)的字節(jié)序和比特序如下:·?字節(jié)序:大多數(shù)多字節(jié)域是從低字節(jié)開始傳輸?shù)?。注意,并不是所有的多字?jié)域都是從低字節(jié)開始傳輸?shù)??!け忍匦颍焊鱾€(gè)字節(jié)傳輸時(shí),每個(gè)字節(jié)都是從低位開始。???????????????????????????????圖1:BLE報(bào)文結(jié)構(gòu)1.1前導(dǎo) 前導(dǎo)是一個(gè)8比特的交替序列。他不是01010101就是10101010,取決于接入地址的第一個(gè)比特。
3、·若接入地址的第一個(gè)比特為0:01010101·若接入地址的第一個(gè)比特為1:10101010 接收機(jī)可以根據(jù)前導(dǎo)的無線信號(hào)強(qiáng)度來配置自動(dòng)增益控制。1.2?接入地址 接入地址有兩種類型:廣播接入地址和數(shù)據(jù)接入地址。·廣播接入地址:固定為0x8E89BED6,在廣播、掃描、發(fā)起連接時(shí)使用?!?shù)據(jù)接入地址:隨機(jī)值,不同的連接有不同的值。在連接建立之后的兩個(gè)設(shè)備間使用?! ?duì)于數(shù)據(jù)信道,數(shù)據(jù)接入地址是一個(gè)隨機(jī)值,但需要滿足下面幾點(diǎn)要求:???1)?數(shù)據(jù)接入地址不能超過6個(gè)連續(xù)的“0”或“1”。???2)?數(shù)據(jù)接入地址的值不能與廣播接入地址相同。???3)
4、?數(shù)據(jù)接入地址的4個(gè)字節(jié)的值必須互補(bǔ)相同。???4)?數(shù)據(jù)接入地址不能有超24次的比特翻轉(zhuǎn)(比特0到1或1到0,稱為1次比特翻轉(zhuǎn))。???5)?數(shù)據(jù)接入地址的最后6個(gè)比特需要至少兩次的比特翻轉(zhuǎn)。???6)?符合上面條件的有效隨機(jī)數(shù)據(jù)接入地址大概有231個(gè)。1.3?報(bào)頭1.3.1廣播報(bào)文報(bào)頭 報(bào)頭的內(nèi)容取決于該報(bào)文是廣播報(bào)文還是數(shù)據(jù)報(bào)文。廣播報(bào)文的報(bào)頭如下圖所示:??????????????????????????????圖2:廣播報(bào)文報(bào)頭 廣播報(bào)文的報(bào)頭包含4bit廣播報(bào)文類型、2bit保留位、1bit發(fā)送地址類型和1bit接收地址類型。??1)
5、?廣播報(bào)文類型 Core_v4.2的2583頁描述了廣播報(bào)文類型,共有7種類型,如下圖所示。????????????????????????????????圖3:廣播報(bào)文類型 每種廣播報(bào)文類型都具有不同的數(shù)據(jù)格式及行為。Core_v4.2的2584頁的2.3.1節(jié)詳細(xì)的描述了各個(gè)廣播報(bào)文類型,大家可以閱讀此章節(jié)進(jìn)一步了解。???2)?發(fā)送地址類型和接收地址類型 發(fā)送地址類型和接收地址類型指示了設(shè)備使用公共地址(PublicAddress)還是隨機(jī)地址(RandomAddress)。公共地址和隨機(jī)地址的長度一樣,都包含6個(gè)字節(jié)共48位。BLE設(shè)備
6、至少要擁有這兩種地址類型中的一種,當(dāng)然也可以同時(shí)擁有這兩種地址類型?!す驳刂?PublicAddress) 公共地址由兩部分組成,如下圖。公共地址由制造商從IEEE申請(qǐng),由IEEE注冊機(jī)構(gòu)為該制造商分配的機(jī)構(gòu)唯一標(biāo)識(shí)符OUI(OrganizationallyUniqueIdentifier)。這個(gè)地址是獨(dú)一無二,不能修改的。Core_v4.2P2576的1.3.1節(jié)描述了公共地址。?????????????????????????????圖4:公共地址結(jié)構(gòu)·隨機(jī)地址 隨機(jī)地址有包含兩種:靜態(tài)地址(StaticDeviceAddress)和私有地
7、址(PrivateDeviceAddress)。Core_v4.2P2577的1.3.2.1節(jié)描述了靜態(tài)地址。????????????????????????????????????????圖5:靜態(tài)地址格式 靜態(tài)地址有如下要求:???a)靜態(tài)地址的最高2位有效位必須是1。???b)?靜態(tài)地址最高2位有效位之外的其余部分不能全為0。???c)?靜態(tài)地址最高2位有效位之外的其余部分不能全為1?! ≡谒接械刂返亩x當(dāng)中,又包含了兩個(gè)子類:不可解析私有地址(Non-resolvablePrivateAddress)和可解析私有地址(ResolvableP
8、rivateAddress,RPA)。nRF51822使用的是靜態(tài)地址,芯片在出廠時(shí)已經(jīng)設(shè)置好了48位地址,