nRF52-Note(06)-广播Advertising

本文详细介绍了nRF52系列蓝牙5.x的广播信道配置、数据包结构,包括广播信道的37/38/39通道,PDU的组成、类型和长度,以及如何利用ADStructure构建AdvertisingData和ScanResponse。还提供了代码配置示例,展示了如何设置广告参数和创建扫描响应。

一、开发环境及工具

  1. nRF5 SDK v15.3.0

  2. IAR For ARM V7.80.4 / Keil uVision5(MDK-ARM) V5.33

  3. Bluetooth Core Specification V4.2 / V5.x

  4. 此工程源码下载路径 : https://gitee.com/amx/nrf52xx-project

  5. 参考好文链接(部分内容从其中摘取):

    https://www.cnblogs.com/someone-device/p/12213388.html

    https://blog.youkuaiyun.com/zhoutaopower/article/details/95104632

    http://www.wowotech.net/sort/bluetooth

    https://blog.youkuaiyun.com/Hh20161314/article/details/104501877

    https://blog.youkuaiyun.com/qq_36347513/article/details/104264490


二、nRF52系列Bluetooth 5.x特性

在这里插入图片描述


三、广播信道

  1. 在蓝牙核心规范V4.2中,广播信道使用37/38/39三个通道,其余37个是数据通道:

在这里插入图片描述


四、数据结构

  1. BLE数据包结构:preamble(前导码/报头)、access address(接入地址)、PDU(数据包)、CRC(校验码)

在这里插入图片描述


  1. PDU分为两类,广播类型PDU数据类型PDU

  2. 广播(Advertising)是一种单向的发送机制。想要被搜索到的设备可以以20毫秒到 10秒钟的时间间隔发送一段数据包。使用的时间间隔越短,电池消耗的越快,但设 备被发现的速度也就会快。数据包长度最多47个字节,由以下部分组成:

    - 1 byte preamble(1字节做报头)
    - 4 byte access address(4字节做地址)
    - 39 bytes advertising channel PDU(39个字节用于PDU数据包)
    - 3 bytes CRC(3个字节用于CRC数据校验)
    
  3. 下图是广播通道PDU分解:

在这里插入图片描述

- 对于广告通信信道,地址部分永远都是0x8E89BED6
- 对于其它数据信道,地址部分由不同的连接决定
- PDU数据也拥有自己的数据报头:2个字节:声明有效载荷数据的长度和类型——设备是否支持连接等等)和有效载荷数据(最多37个字节)
- 有效载荷数据中的头6个字节是设备的MAC地址,所以实际信息数据最高可占31个字节

在这里插入图片描述

  1. 在Header中PDU Type分下面7种(四个广播类型的PDU、两个扫描类型的PDU、一个发起连接PDU):

在这里插入图片描述

  1. 在Header中Length: PDU的长度,6 bits,有效范围 6-37 octets

  2. Header成员间的关系:

在这里插入图片描述

在这里插入图片描述

  1. Payload部分分解(ADV_IND类型):

在这里插入图片描述

可以看到,AdvData由一个个AD Structure组成,每个AD Structure包含3个部分:

  • AD length:AD Type 和AD Data的长度
  • AD Type:AD Data的数据含义
  • AD Data:AD Type所指示的数据

结合函数ble_advdata_encode(),对理解AD Structure会有更深的印象:

ret_code_t ble_advdata_encode(ble_advdata_t const * const p_advdata,
                              uint8_t             * const p_encoded_data,
                              uint16_t            * const p_len);

在ble_gap.h中定义的AD Type类型:

/**@defgroup BLE_GAP_AD_TYPE_DEFINITIONS GAP Advertising and Scan Response Data format
 * @note Found at https://www.bluetooth.org/Technical/AssignedNumbers/generic_access_profile.htm
 * @{ */
#define BLE_GAP_AD_TYPE_FLAGS               
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AizBot

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值