目录:
1. 前言
在BLE通讯中,数据收发都是通过连接事件触发的。连接事件的发生始终位于一个频率,这个频率由连接参数决定。连接参数是主机决定的,从机可以向主机发起连接参数请求,但是最终使用的参数是由主机决定。
2. 连接事件
连接事件指的不是主机发起连接请求的那一瞬间(这是连接请求),而是在双方数据通信中主机发起的规律性的事件:
主从设备间的通信都是发生在连接事件中的,连接事件是由主机发起的并且可以选择性地附带些数据,从机必须在Connection_Latency内回应一个数据包,如果没有数据要发就发送空包,如下图。
3. 连接参数内容
3.1 Connection_Interval
连接间隔决定了主从设备间的交互间隔,指的是两个连续的连接事件开始处的时间间隔,范围在7.5~4000ms,但必须是1.25的整数倍。
3.2 Connection_Latency
要确定主从设备间的实际交互间隔,需要用到从设备延迟参数,表示从设备在必须应答之前可以忽略多少次连接事件。
范围 0~499 同时需满足该公式:Connection_Latency = ((connSupervisionTimeout / (connInterval*2)) - 1)。
3.3 Supervision_Timeout
Supervision_Timeout 指的是主从间的连接超时时间。如果在这时间内没有连接事件的话会导致连接断开。
取值范围在100~3200ms,同时满足 Supervision_Timeout = (1 + connSlaveLatency) * connInterval * 2。
4. 连接参数请求
4.1 需要请求的内容
- Connection_Interval
- Connection_Latency
- Supervision_Timeout
4.2 Connection_Interval
连接间隔越大,功耗越小,反之相反。
4.3 Connection_Latency
当从机延迟为0时,主机发包,从机必须回复,如果不回复,主机就会认为从机那边接收不正常。
当从机延迟不为0时。比如下图中从机延迟为3,主机发包,从机没有数据要回复的时候,就会忽略3个连接事件,在第4个连接事件回复主机。如果从机有数据要回复,会在第1个连接事件立即回复,而不是在第4个连接事件。
4.4 Supervision_Timeout(超时时间)
如果BLE在这个超时时间内没有发生通信的话,就会自动断开。
4.5 连接参数对功耗的影响
- Connection_Interval减小,主从机通信更加频繁,提高数据吞吐量,缩短了发送时间,功耗增加。
- Connection_Interval增加,主从机通信频率降低,降低数据吞吐量,增加了发送时间,功耗减少。
- Slave Latency减少或为0,每次连接事件都要更新,功耗增加,通信速率增加。
- Slave Latency增加,功耗减少,通信速率降低。
4.6 连接参数更新过程
连接建立时,主机通过连接请求数据包发送连接参数。当连接活跃了一段时间,连接参数可能不再适用当前的应用场景。出于提高效率的目的,连接参数需要进行更新。
4.6.1 连接参数请求包和应答包格式相同
- 常修改参数
Interval_Min、Interval_Max、Latency、Timeout。具体意思及作用上面已提到。 - PreferredPeriodicity
建议connInterval的倍数,单位为1.25ms。如果PreferredPeriodicity设置为100,则意味着connInterval建议为125 ms的任意倍数。值为0
意味着没有偏好。PreferredPeriodicity应小于等于Interval_Max。 - ReferenceConnEventCount
和后面的offset计算有关,一般不需要应用者设置。 - offset 0~5
一般不需要设置,具体小编也不没搞懂,欢迎评论区留言。
4.6.2 请求流程
设备A向设备B发起连接参数更新请求:
5. 总结
在实际开发中,连接参数的修改是很重要的一部分内容,它决定产品的通信效率和功耗,在不同的应用场景,设置的值需要好好考虑。