广播类型
- 通用广播 :最常用的广播方式,可以被扫描,接收到连接请求时可以作为从设备进入一个连接。
- 定向广播:针对快速建立连接的需求,定向广播会占满整个广播信道;定向广播的数据净荷只包含广播者和发起者(主机)地址,发起者收到发给自己的定向广播后,会立即发送连接请求。定向广播最长时间不能超过1.28秒,且不能被主动扫描。
- 不可连接广播:只广播数据,而不进入连接状态,也不相应扫描,这是唯一一个允许硬件设备只有发射机的广播类型,因为它不需要接收任何数据。
- 可发现广播:不可连接,但是可以相应扫描。
配置方法
uint32_t sd_ble_gap_adv_set_configure(uint8_t *p_adv_handle, ble_gap_adv_data_t const *p_adv_data, ble_gap_adv_params_t const *p_adv_params));
启动广播
uint32_t sd_ble_gap_adv_start(uint8_t adv_handle, uint8_t conn_cfg_tag);
停止广播
uint32_t sd_ble_gap_adv_stop(uint8_t adv_handle);
BLE报文结构
- 前导
- 若接入地址的第一个bit为0:01010101
- 若接入地址的第一个bit为1:10101010
- 接入地址
- 广播接入地址:固定为 0x8E89BED6,在广播、扫描、发起连接时使用。
- 数据接入地址:随机值,不同的连接有不同的值,在连接建立之后的两个设备间使用。需要满足以下几点要求:
- 数据接入地址不能超过6个连续的“0”或“1”
- 数据接入地址的值不能与广播接入地址相同
- 数据接入地址的4个字节的值必须互不相同
- 数据接入地址不能有超过24次的bit翻转
- 数据接入地址的最后6个bit至少要有2次的bit翻转
- 符合上面条件的有效随机数据接入地址大概有231个
PDU协议单元
报头
- 包含4 bit 的广播报文类型、2 bit 的保留位、1 bit 的发生地址类型和1 bit 的接收地址类型
- 广播报文类型
- 发送地址类型和接收地址类型:指示设备使用公共地址还是随机地址
长度
- 广播报文:长度域包含6个bit,有效值的范围是6~37,包含6个字节的广播设备地址
- 数据报文:长度域包含5个bit,有效值范围是0~31
数据
AD Type:
校验
- 采用24位校验
- 对报头、长度和数据进行计算
- 多项式如下:
广播可以包含的数据
广播数据结构体
nRF52832 SDK广播实现流程
学习交流,个人邮箱:imxyp9x@163.com
特此鸣谢闻人的详细记录与分享