说明:原作者写的不错,所以自己收藏。
原作者
https://blog.csdn.net/weixin_44606722/article/details/88617634
蓝牙BLE5.0扩展广播介绍
前言
广播包基本介绍
扩展广播包结构
总结
author :cbk
前言
在2016年12月更新的蓝牙Core_v5.0中,更新了LE Advertising Extensions,如下图所示,扩展广播作为新添加的特性增加了广播的消息量传输,下面就简单介绍一下扩展广播的结构以及和4.0中广播包的区别。
广播包基本介绍
蓝牙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的均为新增的广播包类型。
蓝牙5.0中在主广播的数据类型增加了一个ADV_EXT_IND指令,当扫描设备收到ADV_EXT_IND指令且能识别其携带的数据时(需要扫描设备也是蓝牙5.0才能正确识别),根据包中携带的信息可以去第二广播信道监听其辅助包(auxiliary packet),典型的使用如下图所示。
图中的ADV_EXT_IND广播在主广播信道上,AUX_ADV_IND为其辅助包且广播在第二信道上,扫描设备可以在主广播上监听ADV_EXT_IND广播包,然后根据其携带的内容到第二广播包中监听到AUX_ADV_IND。
扩展广播包结构
广播包的PDU包如下图所示,由两个字节的Header以及若干字节Payload组成。
蓝牙5.0中新增的ADV_EXT_IND以及所有channel处于Secondary Advertising的广播包中的Payload采用相同的结构,称为Common Extended Advertising Payload Format,其Payload内容如下图所示,
Extended Header Length
由6个bits组成,指示了Payload中的Extended Header的长度,长度范围是0–63。
AdvMode
由2个bits组成,用来指示该广播包的模式,如下图所示,我们知道4.0的广播包是通过PDU中的PDU type来标识,扩展广播类型则使用Playload的AdvMode来指示其模式。
Extended Header
其长度范围是0–63个字节,由Extended Header Length的大小指定其长度,是扩展广播包的核心组成部分,其结构如下图所示。
3.1 Extended Header Flags
我们讲到Extended Header是长度可变的,那么我们如何得知上表中的哪一个部分被使用到呢?Extended Header中通过首字节的8个bit来标识。当Extended Header Length不为0时,首先通过Extended Header Flags去判断哪个部分被用到。Extended Header Flags对应bit代表的部分如下图所示
3.2 AdvA和TargeA
AdvA和TargeA拥有相同的结构,分别代表广播地址及目标地址,均由6个字节地址组成。其地址类型包含在PDU中的TxADD及RxADD中。
3.3 AdvDataInfo(ADI)
ADI由两个部分组成,如下图所示:
DID用来标识广播数据的ID,每次数据更新时DID也会随之更新为与上次不同的随机值。
SID用来表示标识不同的广播事件,因为在扩展广播中,会有若干个广播事件,所以用SID来进行标识。
3.4 AuxPtr
前面我们讲到扫描设备通过广播包数据中携带的信息监听辅助包,扫描设备就是通过Auxptr所携带的内容来确定辅助包的位置及其所处的信道。如下图所示:
3.4.1 channel index
辅助包所处的信道
3.4.2 CA
广播设备的时钟精度,具体含义如下图所示:
3.4.3 Offset Unit
Offset Unit是AUX Offset的单位,单位如下图所示
3.4.4 AUX Offset
偏移大小。
3.4.5 Aux PHY
用于标识辅助包所使用的PHY是1M,2M还是LE coded,如下图所示。
通过对AuxPtr的分析,我们知道可以通过channel index确定辅助包的信道,PHY确定所处的PHY,最后通过偏移时间的计算(偏移时间 = AUX Offset * Offset Unit),近似确定辅助包的开始(辅助包的开始不能早于偏移时间的位置),如下图所示:
3.5 SyncInfo
用于指示AUX_SYNC_IND的内容,具体含义如下图所示:
其中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的长度。
AdvData
广播数据,扩展广播包要广播的数据,大小为0-254字节,如果还想更长可以通过AuxPtr指向新的辅助包,另其不断拓展长度。
总结
本文通过简单分析扩展广播包的行为以及扩展广播包的数据组成,让我们对蓝牙5.0的广播模式有了大概的认识,如果需要深入了解更多内容可以参考Core_v5.0了解扩展广播的更多行为以及其他类型广播类型的具体使用。
————————————————
版权声明:本文为CSDN博主「陈梓锋」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44606722/article/details/88617634
网友评论