BLE(3)—— 空口数据包组成
基于 BLE 5.1 協(xié)議 Core Spec。
BLE 在空中進(jìn)行數(shù)據(jù)傳送,在 Spec 中稱之為 Air Interface packets,俗稱空口包。既然是數(shù)據(jù)包,就一定要遵循一定的數(shù)據(jù)格式,本章來分析空口數(shù)據(jù)包的最基本的組成格式。
早在 BLE 4.2 的時(shí)代,僅僅支持 1M 的 symbol rate,隨著藍(lán)牙標(biāo)準(zhǔn)的發(fā)展,BLE 5.0 不僅僅支持了 1M PHY,同時(shí)引入了 2M PHY 和 Coded PHY(500kbps 和 125kbps)。這里分兩組:
- Uncoded PHY:1M、2M
- Coded PHY: 500kbps、125kbps
SIG 宣稱的 BLE 5.0 的 Rate X 2,指的就是引入了 2M PHY
Coded PHY 的數(shù)據(jù)傳送,又稱 Long Range,能夠支持更遠(yuǎn)的數(shù)據(jù)傳送(稍后分析原因)
?
1、Uncoded PHY 空口包格式
什么叫 Uncoded PHY 呢?指的就是傳送數(shù)據(jù)的時(shí)候,數(shù)據(jù)實(shí)打?qū)嵉?#xff0c;未經(jīng)過額外的編碼的。數(shù)據(jù)的格式如下所示:
? Preamble ----------------------------空口包的前導(dǎo),PHY 層含義
? Access Address -------------------接入地址,用來標(biāo)示接收者ID或者空中包身份
? PDU -----------------------------------protocol data unit 協(xié)議數(shù)據(jù)單元
? CRC?----------------------------------- PDU 的 24 bits CRC 計(jì)算值,用于校驗(yàn)數(shù)據(jù)正確性
? Constant Tone Extension --------- CTE 可選項(xiàng),BLE 5.1 引入,后面會(huì)解釋
?
1.1、?Preamble
Preamble 指的是前導(dǎo)的意思,他是 BLE 數(shù)據(jù)傳送中,最先傳輸?shù)牟糠帧?/p>
Preamble 是 1010 的序列,到底是以 1010....開始呢,還是以 0101... 開始呢?這里主要是根據(jù) Access Address (AA)的 LSB 來決定,AA 的 LSB 是1,則前導(dǎo)是 1010...,否則是 0101...
前導(dǎo)根據(jù)不同的 PHY 分為兩類:
1M 的?Preamble
1M 的?Preamble 是 8 bits 的,當(dāng) AA 的 LSB 是 1 的時(shí)候 Preamble 是:
?
當(dāng) AA 的 LSB 是 0 的時(shí)候 Preamble 是:
?
2M 的?Preamble
2M 的?Preamble 是 16 bits 的
當(dāng) AA 的 LSB 是 1 的時(shí)候 Preamble 是:
當(dāng) AA 的 LSB 是 0 的時(shí)候 Preamble 是:
?
1.2、Access Address
Access Address 成為接入地址(與設(shè)備的 48 bits 地址不一樣)。用來標(biāo)示接收者ID或者空中包身份
根據(jù) Access Address 的不同,又區(qū)分兩種 Packet 類型:廣播包和數(shù)據(jù)包:
- 廣播包Access Address?固定為0x8E89BED6,廣播包只能在廣播信道(channel)上傳輸,即只能在37/38/39信道上傳輸(注:從藍(lán)牙5.0開始廣播包可以在其它信道上傳輸)。廣播包發(fā)送給附近所有的observer(掃描者)。
- 數(shù)據(jù)包Access Address為一個(gè)32bit的隨機(jī)值,由Initiator生成。數(shù)據(jù)包,其實(shí)是數(shù)據(jù)信道上的空中包的簡稱,數(shù)據(jù)包只在數(shù)據(jù)信道上傳輸,即除37/38/39之外的其余37信道(BLE總共占用40個(gè)信道)。每建立一次連接,重新生成一次Access address。數(shù)據(jù)包是給連接通信使用的,即用于master和slave之間通信的。
AA 又稱同步字段,在 Connection 建立的時(shí)候,雙方進(jìn)行數(shù)據(jù)傳送,如果未發(fā)現(xiàn) AA 或者錯(cuò)誤,則稱為 Sync Error。
AA 對于 Connection ,是隨機(jī)生成的 32 bits 數(shù),但是要滿足一些關(guān)系:
? It shall not be the Access Address for any existing Link Layer connection on?this device.
? It shall not be the Access Address for any enabled periodic advertising train.
? It shall have no more than six consecutive zeros or ones.?
? It shall not be the advertising channel packets’ Access Address.
? It shall not be a sequence that differs from the advertising physical channel?packets’ Access Address by only one bit.
? It shall not have all four octets equal.
? It shall have no more than 24 transitions.?
? It shall have a minimum of two transitions in the most significant six bits.
?
1.3、PDU
PDU(protocol data unit,協(xié)議數(shù)據(jù)單元)是 BLE 數(shù)據(jù)傳送的基本單元,在不同的狀態(tài)下 PDU 的組成也不盡相同,后面會(huì)描述不同狀態(tài)下的 PDU 的組成,這里暫時(shí)先有一個(gè)概念即可:PDU 是數(shù)據(jù)組成的單元。
?
1.4、?CRC
所有的數(shù)據(jù)傳送,都有數(shù)據(jù)正確性的校驗(yàn),BLE 也一樣,BLE 使用了 24bits 的CRC 來進(jìn)行數(shù)據(jù)完整的說明。CRC 跟在 PDU 后, 計(jì)算包含 PDU 域的 CRC 24 的數(shù)據(jù)。
?
1.5、?Constant Tone Extension
這個(gè)域是 BLE 5.1 新增的,最主要的功能是 AoA/AoD (藍(lán)牙定位)的應(yīng)用,是一個(gè)可選的數(shù)據(jù)項(xiàng),后面再分析?AoA/AoD (藍(lán)牙定位)的時(shí)候,在詳細(xì)分析。
?
2、Coded PHY 空口包格式
BLE 5.0 以后,便支持了 Long Range,支持 Long Range 的方式呢,主要是引入了 Coded PHY。Coded PHY 分為兩種:
500kbps
125kbps
所謂 Coded PHY呢,就是將數(shù)據(jù)傳送的時(shí)候,不光是 raw data,而是加上了一個(gè) FEC 向前糾錯(cuò)編碼,使得在降低傳送速率的前提下,對數(shù)據(jù)進(jìn)行編碼(FEC),達(dá)到數(shù)據(jù)低錯(cuò)的目的。
它的包格式為:
分為了兩種:
S=2? ? ? ?--------? ? ? 500kbps
S=8? ? ? ?--------? ? ? 125kbps
每個(gè)域的長度和時(shí)間:
說白了,就是以犧牲速度(低速)來換數(shù)據(jù)準(zhǔn)確傳送(通過 FEC 數(shù)據(jù)編碼)。有興趣的同學(xué)可以自行參考 Core Spec 5.1 中的 FEC 章節(jié),看看這幾部分是如何計(jì)算的。
?
總結(jié)
以上是生活随笔為你收集整理的BLE(3)—— 空口数据包组成的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WEB密码安全输入控件
- 下一篇: 11年的macbook还能用吗_致我20