蓝牙BLE5.0扩展广播介绍

蓝牙BLE5.0扩展广播介绍

  • 前言
  • 广播包基本介绍
  • 扩展广播包结构
  • 总结

author :cbk

前言

在2016年12月更新的蓝牙Core_v5.0中,更新了LE Advertising Extensions,如下图所示,扩展广播作为新添加的特性增加了广播的消息量传输,下面就简单介绍一下扩展广播的结构以及和4.0中广播包的区别。
蓝牙BLE5.0扩展广播介绍_第1张图片

广播包基本介绍

蓝牙5.0把广播信道抽象为两类,一种叫主广播信道(primary advertisement channels),工作在37,38,39三个信道中,蓝牙4.0的广播使用的都是主广播信道,另一种叫第二广播信道(Secondary Advertising Packets),工作在0–36信道中,这是蓝牙5.0新增的。
如下图所示,对比4.0广播包新增了许多类型的广播包,其中ADV_EXT_IND以及所有channel处于Secondary Advertising的均为新增的广播包类型。
蓝牙BLE5.0扩展广播介绍_第2张图片蓝牙BLE5.0扩展广播介绍_第3张图片

蓝牙5.0中在主广播的数据类型增加了一个ADV_EXT_IND指令,当扫描设备收到ADV_EXT_IND指令且能识别其携带的数据时(需要扫描设备也是蓝牙5.0才能正确识别),根据包中携带的信息可以去第二广播信道监听其辅助包(auxiliary packet),典型的使用如下图所示。
图中的ADV_EXT_IND广播在主广播信道上,AUX_ADV_IND为其辅助包且广播在第二信道上,扫描设备可以在主广播上监听ADV_EXT_IND广播包,然后根据其携带的内容到第二广播包中监听到AUX_ADV_IND。
蓝牙BLE5.0扩展广播介绍_第4张图片

扩展广播包结构

广播包的PDU包如下图所示,由两个字节的Header以及若干字节Payload组成。
在这里插入图片描述
蓝牙5.0中新增的ADV_EXT_IND以及所有channel处于Secondary Advertising的广播包中的Payload采用相同的结构,称为Common Extended Advertising Payload Format,其Payload内容如下图所示,
蓝牙BLE5.0扩展广播介绍_第5张图片

  1. Extended Header Length
    由6个bits组成,指示了Payload中的Extended Header的长度,长度范围是0–63。

  2. AdvMode
    由2个bits组成,用来指示该广播包的模式,如下图所示,我们知道4.0的广播包是通过PDU中的PDU type来标识,扩展广播类型则使用Playload的AdvMode来指示其模式。
    蓝牙BLE5.0扩展广播介绍_第6张图片

  3. Extended Header
    其长度范围是0–63个字节,由Extended Header Length的大小指定其长度,是扩展广播包的核心组成部分,其结构如下图所示。
    蓝牙BLE5.0扩展广播介绍_第7张图片
    3.1 Extended Header Flags
    我们讲到Extended Header是长度可变的,那么我们如何得知上表中的哪一个部分被使用到呢?Extended Header中通过首字节的8个bit来标识。当Extended Header Length不为0时,首先通过Extended Header Flags去判断哪个部分被用到。Extended Header Flags对应bit代表的部分如下图所示
    蓝牙BLE5.0扩展广播介绍_第8张图片
    3.2 AdvA和TargeA
    AdvA和TargeA拥有相同的结构,分别代表广播地址及目标地址,均由6个字节地址组成。其地址类型包含在PDU中的TxADD及RxADD中。

    3.3 AdvDataInfo(ADI)
    ADI由两个部分组成,如下图所示:
    蓝牙BLE5.0扩展广播介绍_第9张图片
    DID用来标识广播数据的ID,每次数据更新时DID也会随之更新为与上次不同的随机值。
    SID用来表示标识不同的广播事件,因为在扩展广播中,会有若干个广播事件,所以用SID来进行标识。

    3.4 AuxPtr
    前面我们讲到扫描设备通过广播包数据中携带的信息监听辅助包,扫描设备就是通过Auxptr所携带的内容来确定辅助包的位置及其所处的信道。如下图所示:
    蓝牙BLE5.0扩展广播介绍_第10张图片
    3.4.1 channel index
    辅助包所处的信道

    3.4.2 CA
    广播设备的时钟精度,具体含义如下图所示:
    蓝牙BLE5.0扩展广播介绍_第11张图片
    3.4.3 Offset Unit
    Offset Unit是AUX Offset的单位,单位如下图所示
    蓝牙BLE5.0扩展广播介绍_第12张图片
    3.4.4 AUX Offset
    偏移大小。

    3.4.5 Aux PHY
    用于标识辅助包所使用的PHY是1M,2M还是LE coded,如下图所示。
    蓝牙BLE5.0扩展广播介绍_第13张图片
    通过对AuxPtr的分析,我们知道可以通过channel index确定辅助包的信道,PHY确定所处的PHY,最后通过偏移时间的计算(偏移时间 = AUX Offset * Offset Unit),近似确定辅助包的开始(辅助包的开始不能早于偏移时间的位置),如下图所示:
    蓝牙BLE5.0扩展广播介绍_第14张图片
    3.5 SyncInfo
    用于指示AUX_SYNC_IND的内容,具体含义如下图所示:
    蓝牙BLE5.0扩展广播介绍_第15张图片
    其中SYnc Packet Offeset与Offset Units与3.4中的意义一样,后续字段与4.0的connect request包含义相同。

    3.6 TxPower
    代表发射功率。

    3.7 ACAD
    额外广播数据,Playload的Extended Header Length减去Extended Header对应bit数据剩余的长度就是ACDC的长度。

  4. AdvData
    广播数据,扩展广播包要广播的数据,大小为0-254字节,如果还想更长可以通过AuxPtr指向新的辅助包,另其不断拓展长度。

总结

本文通过简单分析扩展广播包的行为以及扩展广播包的数据组成,让我们对蓝牙5.0的广播模式有了大概的认识,如果需要深入了解更多内容可以参考Core_v5.0了解扩展广播的更多行为以及其他类型广播类型的具体使用。

你可能感兴趣的:(蓝牙BLE)