BLE链路层的广播事件

广播事件

处于广播态的链路层会在广播事件中广播相应的PDU,那么什么是广播事件呢?

首先,广播事件定义了一段时间,在这段时间内可以发送或者接收空中包

其次,BLE采用跳频机制,广播信道包含3个物理信道,即37,38,39信道,一次广播事件开始于37信道,经过38信道,结束于39信道,即在3个信道上连续跳频

再此,一次广播事件中,设备可以在每个物理信道上收发空中包

最后,不同广播事件可以收发的空中包类型也不相同

下表是广播事件的分类:

广播事件类型 广播事件使用的PDU类型 是否允许响应SCAN_REQ 是否允许响应CONNECT_REQ
可连接非定向事件 可连接非定向广播(ADV_IND)
可连接定向事件 可连接定向广播(ADV_DIRECT_IND)
不可连接非定向事件 不可连接广播(ADV_NONCONN_IND)
可扫描非定向事件 可扫描通知(ADV_SCAN_IND)

下图展示了当有多个广播事件时,是如何定义他们之间的时间关系的:

由上图可知,连续两个相邻的广播事件之间的时间间隔在图中标记为T_advEvent,这个T_advEvent可按照如下公式算出:

T_advEvent = advInterval + advDelay

advInterval是广播间隔,有应用层设置它的值,它是一个整数,它表示的时间是0.625毫秒的倍数,即advInterval*0.625毫秒,其范围在20毫秒和10.24秒之间

advDelay是一个链路层产生的伪随机数,这个值主要是为了抗干扰而设置的,当周围信道干扰比较强的时候,链路层选择退避随机退避一个时间,然后开启下一个广播事件。advDelay是一个整数,范围在0到10之间,单位是毫秒。

其实最重要的参数是advInterval,因为可以通过调节advInterval来调节广播事件的占空比。当需要高占空比的时候就减少advInterval,此时单位时间内的广播数量就会增加,因而更容易被周围设备发现,相应的功耗也会变大;当需要低占空比的时候就增加advInterval,此时单位时间内的广播数量就会减少,被周围设备所侦测到的时间就会相应变长,但功耗也会降低。

可连接非定向事件

可连接非定向事件,该事件内广播者周期性的广播ADV_IND,并且可以响应扫描者发送的扫描请求以及发起者发送的连接请求。

首先看一下没有收到扫描请求和连接请求的情况下,广播事件的结构如下图所示:

由上图可知,广播事件在3个物理信道上进行连续跳频;同时在每个信道上停留的时间不超过10毫秒;并且在每个物理信道上各发送一次ADV_IND,也就是说一个广播事件的时间不能超过30毫秒

接下来是收到扫描请求时,广播事件的结构如下图所示:

由上图可知,设备在物理信道38上发出一个ADV_IND之后,紧接着就收到了一个其他设备发送的扫描请求,最后在相同的信道上将扫描响应发送出去,这3个空中包的交互也是在10毫秒以内完成的。

上图中有一个变量值得注意,那就是T_IFS,它表示帧间间隔,意思是上一帧的最后一个比特传输完成到下一帧第一个比特开始传输,这其中所经过的时间,这个值必须小于150微秒。也就是说,当发出一个ADV_IND之后,还必须在同一信道上监听至少T_IFS的时间,以免错过其他设备发过来的包。

最后是收到连接请求时,广播事件的结构如下图所示:

由上图可知,在物理信道38上发出一个ADV_IND之后,设备紧接着收到了其他设备发来的连接请求,那么为什么设备在收到连接请求之后就立刻关闭广播事件了呢?因为这之后,设备要和对方进入到连接态,因而要退出广播态,所以不会继续在39信道上继续广播了。

可连接定向事件

可连接定向事件和可连接非定向事件不同点在于,可连接定向事件不能响应扫描请求;另外,可连接定向事件有两种模式:低占空比模式和高占空比模式

低占空比模式中,广播事件在单个信道上停留的时间不能大于10毫秒,这一点和可连接非定向事件是相同的。那些不需要快速建立连接的场景都可以使用低占空比模式,因为该模式下所占用的带宽资源和能耗都会比较小

高占空比模式有点复杂,举个例子吧,有2个连续的广播事件A和B,这2个广播事件都会在37,38,39这3个物理信道上连续跳频,假设事件A先于事件B发生,事件A在37信道上发送ADV_DIRECT_IND,之后事件B也会在37信道上发送ADV_DIRECT_IND,那么在高占空比模式下,这2个ADV_DIRECT_IND的时间间隔不能超过3.75毫秒,对于38和39信道也是同样的限制。

下面两个示意图是低占空比模式下的广播事件结构图,其实和可连接非定向事件是一样的

下图是高占空比模式下,广播事件的结构示意图:

由上图可知,两个连续的相邻的广播事件中,相同物理信道上发送的ADV_DIRECT_IND的时间间隔不能超过3.75毫秒。这既规定了一个广播事件必须在3.75毫秒内完成,同时也让两个连续的广播事件之间的时间间隔远远小于3.75毫秒。

高占空比模式应用在需要快速建立连接的场景,但它对于带宽和能量的消耗都是比较大的。

非连接非定向事件

非连接非定向事件,它既不响应扫描请求,也不响应连接请求,简而言之,它不可被扫描,也不可被连接。同时它会周期性的广播ADV_NONCONN_IND,其中携带了设备的广播数据,这是周围设备可获取的关于该设备的所有信息了。

下图是非连接非定向事件的示意图:

可扫描非定向事件

可扫描非定向事件,该事件内广播者周期性的广播ADV_SCAN_IND,并且可以响应扫描者发送的扫描请求,但不能响应连接请求。简而言之就是,可扫描但不可被连接

下图是没有收到扫描请求时,可扫描非定向事件的示意图,结构和可连接非定向事件是一样的:

下面两个示意图是,收到扫描请求时的情形,结构和可连接非定向事件也是一样的:

posted @ 2021-04-30 14:28  浮生问道  阅读(753)  评论(0编辑  收藏  举报