BLE中GAP层的扩展广播和周期性广播
GAP层的扩展广播和周期性广播
介绍
在Bluetooth 5.0规范中,针对广播做了更新。在传统(Legacy)广播的基础上,新增了扩展(Extended )广播和周期性(Periodic)广播,而周期性广播是扩展广播的一个应用。
扩展广播
广播通道
传统广播我们知道,广播通道只有 37,38,39 这三个通道
而扩展广播再次基础上做了修改,扩展广播使用了两组广播通道:
- 主要广播通道(primary advertising channel):和传统广播一样也是37,38,39三个信道。
- 次要广播通道(secondary advertising channel):也叫辅助广播通道,就是把以前剩余的37个连接信道拿过来当广播通道用。
可以看到在广播信道方面,扩展广播最主要是扩展了广播信道,让蓝牙广播包能在以前的连接信道上进行发送。
扩展广播 PDU
在传统的广播PDU基础上,新增了如下PDU。
- ADV_EXT_IND - 主要广播通道,支持不可连接的,定向扫描的事件。
- AUX_ADV_IND - 次要广播通道上广播数据的第一个片段,不可连接的、定向扫描的。
- AUX_SYNC_IND - 次要广播通道,用于周期性广播,以一定间隔发送不定向的数据包。
- AUX_CHAIN_IND - 发送剩余的数据。
扩展广播的广播格式统一如下:
可以看到,其中
-
AdvData:广播数据比传统广播的广播包进行了扩容,数据量增加了 8 倍多,可传输数据量由 31 字节增长到了 255 字节。
-
AdvMode:用于区分广播类型。
- Extended Header/Extended Header Length:
这里的Header比较复杂,我这里只做简单介绍下:
- 这个Header长度不是固定的,长度由最开始的Length参数给出。
- Header包含的内容如上图所示,但这里并非要求每个参数都要包含在Header里面。一个Header包含什么参数,由Extend Header Flags位给出。Flags是一个八位比特参数,每个比特都对应后续参数是否包含在Hearder里,1则是存在,0则是不存在。每个位对应关系如下:
- AdvA、TargetA这里和传统广播一样不作赘述。
- CTEInfo是用于AOA/AOD定位用的,包含调制信息,与通信本身无关。
- AdvDataInfo内部包含广播集ID和广播数据ID。广播集ID用于区分广播包是哪一个集合的,因为扩展广播的PDU都用同一种空口包结构,因此需要单独有一个位来做区分;而数据ID用于给主机扫描时区分广播数据是不是重复的,如果数据有更新,这个位会进行更新。
- AuxPtr这个位比较复杂,前面我们说过扩展广播有辅助广播信道。但37个信道那么多,一开始扫描端是不知道会在那个辅助广播信道,什么时候广播的。所以扫描端会先在主广播信道上扫描,扫到主广播包后从这个AuxPtr位中获取到辅助广播包会出现在哪个信道,什么时候出现。
- SyncInfo这个位比较长,主要是用于周期性广播。这个我们后面将周期性广播在介绍。
- TxPower发射功率,这个就不说了。
小结
这里可以小结下,拓展广播的提出,本质上是为了解决传统广播数据包太小,无法传递太多信息的痛点。并且通过复用次要广播信道,使得广播的抗干扰能力有了一定的提升,对于一些Beacon类应用可以说非常实用。
周期性广播
我们知道,传统广播为了降低碰撞概率,会在每个广播事件的末尾处加了一个 0 ~ 10 ms 的随机延时。这种做法对于信道资源的利用是非常浪费的,同时也会使得接收机要多花而外的接收窗口才能接收到广播,这样也会增加接收机的能耗。为了更好的满足低功耗蓝牙这个概念,SIG在扩展广播的基础上设计了一种新的广播方式,叫周期性广播。
基本原理
周期性广播的原理非常简单,那就是先在主广播信道上,用带延迟的主广播PDU(主广播通道少,还是要考虑碰撞问题)做时钟和信道数据同步。然后在次要广播信道(次要广播通道多,可以不用考虑碰撞问题)上做时间准确的广播。
这里同步的参数包含:
- 次要广播包出现的时刻(offset time)
- 周期性广播的间隔(Interval)
- 周期性广播生命周期内使用的信道(secondary channel map)
- 接入地址(Access Address),等等
这些参数会在前面讲到的主广播包PDU中的SyncInfo位里传递给扫描主机。
Periodic advertising sync transfer (PAST)
在周期性广播的基础上,SIG又提出了一个新的广播概念。上述周期性广播时我们可以看出来主机扫描与从机广播需要有一个在主广播通道上的同步的过程。但是有一些扫描设备不想去进行同步,想要借助其他已经同步过的设备来同步广播者,直接在次要广播信道上去获取广播数据,从而进一步降低功耗。思路如下:
这里PAST应用场合比较狭窄,具体说明可以参考SPEC中介绍,目录为BLUETOOTH CORE SPECIFICATION Version 5.1 | Vol 6, Part B 5.1.13 Periodic Advertising Sync Transfer procedure介绍。
总结
其中无论是扩展广播还是周期性广播,其实都可以看到有一个根本需求在里面。那就是低功耗蓝牙需要一种类似于UDP协议那样,纯发纯收,无需应答的高效传输方案。为了提高效率,SIG增加了PDU长度,去掉了随机延迟。为了降低碰撞概率又扩展了广播信道。以我来看,这项技术应该更多是为了后面的Beacon定位做准备了。