BLE(3)—— 空口数据包组成

基于 BLE 5.1 协议 Core Spec。

BLE 在空中进行数据传送,在 Spec 中称之为 Air Interface packets,俗称空口包。既然是数据包,就一定要遵循一定的数据格式,本章来分析空口数据包的最基本的组成格式。

早在 BLE 4.2 的时代,仅仅支持 1M 的 symbol rate,随着蓝牙标准的发展,BLE 5.0 不仅仅支持了 1M PHY,同时引入了 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 的数据传送,又称 Long Range,能够支持更远的数据传送(稍后分析原因)

 

1、Uncoded PHY 空口包格式

什么叫 Uncoded PHY 呢?指的就是传送数据的时候,数据实打实的,未经过额外的编码的。数据的格式如下所示:

• Preamble ----------------------------空口包的前导,PHY 层含义

• Access Address -------------------接入地址,用来标示接收者ID或者空中包身份

• PDU -----------------------------------protocol data unit 协议数据单元

• CRC ----------------------------------- PDU 的 24 bits CRC 计算值,用于校验数据正确性

• Constant Tone Extension --------- CTE 可选项,BLE 5.1 引入,后面会解释

 

1.1、 Preamble

Preamble 指的是前导的意思,他是 BLE 数据传送中,最先传输的部分。

Preamble 是 1010 的序列,到底是以 1010....开始呢,还是以 0101... 开始呢?这里主要是根据 Access Address (AA)的 LSB 来决定,AA 的 LSB 是1,则前导是 1010...,否则是 0101...

前导根据不同的 PHY 分为两类:

1M 的 Preamble

1M 的 Preamble 是 8 bits 的,当 AA 的 LSB 是 1 的时候 Preamble 是:

BLE(3)—— 空口数据包组成_第1张图片

 

当 AA 的 LSB 是 0 的时候 Preamble 是:

BLE(3)—— 空口数据包组成_第2张图片

 

2M 的 Preamble

2M 的 Preamble 是 16 bits 的

当 AA 的 LSB 是 1 的时候 Preamble 是:

BLE(3)—— 空口数据包组成_第3张图片

当 AA 的 LSB 是 0 的时候 Preamble 是:

BLE(3)—— 空口数据包组成_第4张图片

 

1.2、Access Address

Access Address 成为接入地址(与设备的 48 bits 地址不一样)。用来标示接收者ID或者空中包身份

根据 Access Address 的不同,又区分两种 Packet 类型:广播包和数据包:

  • 广播包Access Address 固定为0x8E89BED6,广播包只能在广播信道(channel)上传输,即只能在37/38/39信道上传输(注:从蓝牙5.0开始广播包可以在其它信道上传输)。广播包发送给附近所有的observer(扫描者)。
  • 数据包Access Address为一个32bit的随机值,由Initiator生成。数据包,其实是数据信道上的空中包的简称,数据包只在数据信道上传输,即除37/38/39之外的其余37信道(BLE总共占用40个信道)。每建立一次连接,重新生成一次Access address。数据包是给连接通信使用的,即用于master和slave之间通信的。

AA 又称同步字段,在 Connection 建立的时候,双方进行数据传送,如果未发现 AA 或者错误,则称为 Sync Error。

AA 对于 Connection ,是随机生成的 32 bits 数,但是要满足一些关系:

• 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,协议数据单元)是 BLE 数据传送的基本单元,在不同的状态下 PDU 的组成也不尽相同,后面会描述不同状态下的 PDU 的组成,这里暂时先有一个概念即可:PDU 是数据组成的单元。

 

1.4、 CRC

所有的数据传送,都有数据正确性的校验,BLE 也一样,BLE 使用了 24bits 的CRC 来进行数据完整的说明。CRC 跟在 PDU 后, 计算包含 PDU 域的 CRC 24 的数据。

 

1.5、 Constant Tone Extension

这个域是 BLE 5.1 新增的,最主要的功能是 AoA/AoD (蓝牙定位)的应用,是一个可选的数据项,后面再分析 AoA/AoD (蓝牙定位)的时候,在详细分析。

 

2、Coded PHY 空口包格式

BLE 5.0 以后,便支持了 Long Range,支持 Long Range 的方式呢,主要是引入了 Coded PHY。Coded PHY 分为两种:

500kbps

125kbps

所谓 Coded PHY呢,就是将数据传送的时候,不光是 raw data,而是加上了一个 FEC 向前纠错编码,使得在降低传送速率的前提下,对数据进行编码(FEC),达到数据低错的目的。

它的包格式为:

BLE(3)—— 空口数据包组成_第5张图片

分为了两种:

S=2       --------      500kbps

S=8       --------      125kbps

每个域的长度和时间:

BLE(3)—— 空口数据包组成_第6张图片

说白了,就是以牺牲速度(低速)来换数据准确传送(通过 FEC 数据编码)。有兴趣的同学可以自行参考 Core Spec 5.1 中的 FEC 章节,看看这几部分是如何计算的。

 

你可能感兴趣的:(BLE)