广播间隔:
两个相邻广播事件之间的时间称为广播间隔。可以选择“20ms ~ 10.28s”不等的间隔。且必须是“0.625ms”的整数倍。比如想广播100ms,设置参数为160。
由于设备间的时钟会不同程度的漂移,两个设备可能在很长一段时间同时广播而造成干扰。为防止这一情况的发生,除定向广播之外的其他广播类型,发送时间均会被扰动。实现该扰动的方式为,在上一次广播事件后加入“0 ~ 10ms”的随机延时。这意味着,即使两个设备广播间隔相同,并在相同信道及时间点上发送造成了冲突,但它们发送下一个广播事件时也会有很大可能不再冲突。
T_AdvEvent = advInterval + advDelay
advInterval 必须是“0.625ms”的整数倍,范围是“20ms ~ 10.24s”之间。对于可扫描非定向广播和不可连接非定向广播这两种广播类型,该值最好不小于100ms,即(160个0.625ms)。advDelay是Link Layer(链接层)分配的一个伪随机数,它的范围为“0 ~ 10ms”。
37、38、39信道广播切换时间间隔
在蓝牙广播过程中,设备需要定期更换广播信道以避免干扰和提高广播效率。在蓝牙 5.0 规范中,广播信道切换时间取决于广播事件的时间间隔和广播通道的数量。
对于使用三个广播通道的情况,蓝牙 5.0 规范规定广播事件时间间隔和广播信道切换时间之间的关系如下:
- 当广播事件时间间隔 T_adv >= 30 ms 时,广播信道切换时间 T_chm=5ms。
- 当广播事件时间间隔 T_adv < 30 ms 时,广播信道切换时间 T_chm=T_adv/6。
例如,如果广播事件时间间隔为 100ms,则广播信道切换时间为 5ms。如果广播事件时间间隔为 20ms,则广播信道切换时间为 3.33ms。
需要注意的是,广播信道切换时间不等于广播事件的时间间隔,广播事件的时间间隔是设备发送两个广播包之间的时间间隔,而广播信道切换时间是设备在一个广播事件期间内切换广播信道的时间。
BLE蓝牙扫描37、38、39信道切换时间
在BLE蓝牙协议中,扫描操作使用的是37、38和39这三个广播信道。这三个信道的切换时间是指在扫描过程中,BLE设备从一个广播信道切换到另一个广播信道所需要的时间。
根据BLE蓝牙协议规范,BLE设备在接收到广播数据后,需要在接收窗口结束之前进行广播信道的切换。接收窗口的时长可以由广播数据包中的参数进行设置,通常为10ms左右。
在BLE设备进行扫描操作时,它会轮流监听37、38和39这三个广播信道,每个信道的监听时长也可以由扫描参数进行设置。通常情况下,BLE设备会在每个广播信道上监听几毫秒,然后切换到下一个广播信道进行监听,这个切换时间通常为100us左右。
因此,BLE蓝牙扫描37、38、39信道的切换时间一般为100us,具体时间还会受到设备硬件和软件等因素的影响。
连接间隔:
在一个BLE连接中跳频机制需要被使用,这样两个设备之间可以在一个特定的通道上进行数据收发,在一个特定的时间之后会跳到一个新的通道上,LL层负责通道切换。这个遇见设备收发数据被称作是连接事件。尽管没有应用程序数据需要收发,两个设备之间仍然会交换链路层数据来保持连接。连接间隔是两个连接事件之间的时间,使用一个单元值为1.25ms的步进。连接间隔从最小值6(7.5ms)到最大值3200(4.0s)。
有数据传递时:通讯数据包是连续传递的,主机会选择最小连接间隔值来进行通讯。
无数据传递时:通讯是空闲状态,主机会选择最大连接间隔值来定期询问从机状态,以保持连接不中断。用来交互链路数connInterval的大小,决定了数据传输的周期。对一个连接来说,每个周期只能有一次的收发,因此connInterval的选择,直接决定了数据传输的速度。BLE协议规定,connInterval必须是1.25ms的倍数,范围是7.5ms~4s。
连接超时:
主设备与从设备之间没有任何通信活动的情况下,连接被认为已断开的时间阈值。
连接超时≥(1+Slave Latency)×连接事件间隔×2
例如,如果连接事件间隔为 50 ms,Slave Latency 为 4,那么最小连接超时为 (1 + 4) × 50 ms × 2 = 500 ms。
Slave latency:
从设备可以跳过响应连接事件的次数。具体来说,它定义了从设备在多长时间内可以不响应主设备的连接事件,而不被认为连接已断开。
目的:Slave Latency 的目的是减少从设备的功耗。通过允许从设备在多个连接事件中不响应,设备可以进入更长时间的睡眠模式,从而降低功耗。
参数范围:Slave Latency 的值可以从 0(意味着每个连接事件都要响应)到更高的数值,具体上限取决于主设备和从设备的实现以及蓝牙规范的版本。
影响:高的 Slave Latency 值可以显著降低从设备的功耗,但也会增加数据传输的延迟,因为主设备和从设备之间的通信间隔可能变长。
计算公式:连接事件间隔(Connection Interval)和 Slave Latency 共同决定了从设备的响应时间。总的延迟时间可以通过以下公式计算:
最大延迟时间=连接事件间隔×(Slave Latency+1)\text{最大延迟时间} = \text{连接事件间隔} \times (\text{Slave Latency} + 1)最大延迟时间=连接事件间隔×(Slave Latency+1)例如,如果连接事件间隔为 50 ms,Slave Latency 为 4,那么最大延迟时间为 50 ms × (4 + 1) = 250 ms。
扫描间隔 和扫描窗口 和持续扫描时间:
每次扫描,设备打开接收器去监听广播设备,这称为一个扫描事件,扫描事件有两个时间参数:扫描窗口和扫描间隔:
扫描窗口(scan window):一次扫描进行的时间宽度。
扫描间隔(scan interval):两个连续的扫描窗口的起始时间之间的时间差,包括扫描休息的时间和扫描进行的时间