蓝牙广播知识介绍

0. 协议层介绍

BLE协议栈共三层,分别是应用层、主机层、控制器层

应用层:涵盖与应用程序实现的实际用例相关的所有内容的逻辑、用户界面和数据处理。 各种服务的实现,比如HID Nordic的NUS等。
主机层:包括逻辑链路控制与适配协议(Logical Link Control and Adaptation Protocol,即L2CAP),属性协议(Attribute Protocol,即ATT),安全管理(Security Manager,即SM),通用属性配置文件(Generic Attribute Profile,即GATT)和通用访问配置文件(Generic Access Profile,即GAP)。
控制器层:包括物理层(Physical Layer),链路层(Link Layer)。主机与控制器之间通过HCI(Host Controller Interface)接口连接。
BLE协议栈:https://blog.csdn.net/chengbaojin/article/details/107673671

1. BLE物理层频道

BLE物理层调制方式为GFSK( 高斯频移键控),通道数量为40个,BLE的频谱范围时2.402GHz ~ 2.480GHz,一共分为40个频道,每个频道带宽为2MHz,从通道0到通道39,其中通道37,38和39是广播频道,其他是数据通道。最新的BLE规范(5.x),对广播通道进行的扩展,使蓝牙设备也可以在其他通道上发送广播报文。

2. 广播间隔

当一个BLE设备处于广播模式时,它周期性地在3个广播通道上发送相同的报文,3个通道均发完后称为一个广播事件。

每两组广播报文之间的时间间隔由一个固定的间隔和一个随机的延时组成,其中固定间隔取值范围是20毫秒到10.24秒,步长为0.625毫秒,随机延时是一个取值范围是0到10毫秒的伪随机值,由系统自动产生并加入到广播间隔中。这主要是用来减少设备之间的信号冲突的几率,提高BLE连接的可靠性。所以两个相邻的广播事件间的时间间隔为固定间隔+随机延时时间。
虽然广播间隔的取值范围很广,但大部分的设备遵循以下广播间隔取值指引。
小于100毫秒:适用于激进的设备
100 ~ 500毫秒:常用快速广播,适用于大部分设备
1000 ~ 2000毫秒:适用于连接网关且对延时要求不高的设备

3. 广播数据包:

 BLE广播数据包通过广播频道(37 38 39)发送,数据payload部分长度最大37字节,包含了设备相关信息。

4. 扫码回应数据包:

在主机主动扫描的情况下,可向从机发送扫描请求,从机返回扫描回应数据包,扫描回应数据包格式与广播数据包格式相同,数据payload部分长度最大37字节。响应包是在主机发送扫描请求包时,从机回复的扫描响应包。正常情况下,设备在广播事件时往外发送的只有广播数据包。如果主机希望拿到扫描响应包,需要主动发送扫描请求。

5. 广播类型

5.1 非定向可连接广播类型(ADV_IND):通用广播,可连接、可扫描的非定向广播,包括广播数据包和扫描回应数据包,目前单车和电单都是用此类型。当前设备可接收其他设备的连接请求。

5.2 定向可连接广播类型(ADV_DIRECT_IND):这个广播是为了快速建立连接。这种报文包含两个地址:广播者地址和发起者的地址。发起者设备收到发给自己的定向广播报文后,可以立刻发送连接请求事件作为回应,并进入连接状态。表示允许连接,仅可连接指定设备。

5.3 非定向不可连接类型(ADV_NONCONN_IND):不可连接、不可扫描的非定向广播,也称作发现广播。这种类型的广播不能用于发起连接,但允许其他设备扫描正在进行广播的设备。表示正在进行广播的设备可以被发现,既可以发送广播数据,也可以发送扫描回应数据包,但不能建立连接。此类型是适用于广播数据包的广播格式,动态数据可以包含在广播数据包中,静态数据也可以包含在扫描回应数据包中。

5.4 非定向可发现不可连接广播类型(ADV_SCAN_IND):可扫描的非定向广播,发送广播数据包和扫描回应数据包,但不可以被连接。

所谓的定向和非定向针对的是广播对象,如果是针对特定的对象进行广播(在广播包PDU中包含目标对象的MAC),则为定向广播。反之为非定向广播。可连接和不可连接指的是是否接受连接请求。如果是不可连接的广播类型,它将不应答连接请求报文。可扫描广播类型会回应扫描请求。

以上具体介绍参考:https://blog.csdn.net/zhi_Alanwu/article/details/126353684

6. 广播数据包格式:
一个完整的BLE广播报文由四部分组成,分别是前导码、接入地址、协议数据单元和CRC校验码。即

PDU部分如下:

各字段含义如下:

  • PDU Type:PDU类型,标识广播报文的类型
  • RFU:Reserved For Future,保留位
  • TxAdd:发送地址类型,标识广播地址是公有地址还是随机地址
  • RxAdd:接收地址类型,广播报文不使用这一比特
  • Length:长度,标识净荷的长度(6 ~ 37字节)
  •  

PDU类型如下:

Payload如下:

  • AdvA: 广播设备地址,分为公有地址和随机地址。
    • 公有地址:类似MAC地址,由OUI和一个唯一的数字组成
    • 随机地址:为了防止设备被跟踪,广播地址可以是随机的。随机地址又分为静态设备地址(Static Device Address)、私有设备地址(Private Device Address)和不可解释私有地址(Non-resolvable Private Address)。
  • AdvData:广播数据,包含N个AD Structure,每个AD Structure由Length,AD Type和AD Data组成。

常见的广播数据如下:

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注