蓝牙连接参数

// Minimum connection interval (units of 1.25ms, 80=100ms) if automatic parameter update request is enabled
#define DEFAULT_DESIRED_MIN_CONN_INTERVAL 20
// Maximum connection interval (units of 1.25ms, 800=1000ms) if automatic parameter update request is enabled
#define DEFAULT_DESIRED_MAX_CONN_INTERVAL 40
// Slave latency to use if automatic parameter update request is enabled
#define DEFAULT_DESIRED_SLAVE_LATENCY 19
// Supervision timeout value (units of 10ms, 1000=10s) if automatic parameter update request is enabled
#define DEFAULT_DESIRED_CONN_TIMEOUT 1000
// Whether to enable automatic parameter update request when a connection is formed
#define DEFAULT_ENABLE_UPDATE_REQUEST TRUE
一.DEFAULT_DESIRED_MIN_CONN_INTERVAL(最小连接间隔,range:6-3200)和DEFAULT_DESIRED_MAX_CONN_INTERVAL(最大连接间隔,range:6-3200)
这里的最小连接间隔和最大连接间隔指的是蓝牙连接成功后主机的周期性通信时间,主机会根据实际使用情况来选择合适的连接间隔时间,连接间隔时间的改变会影响主机连接响应的时间,这个数据的调整需要根据自己的实际情况来设置,以期达到既省电又传输速度适当的效果。
比如:
大数据传输:主机会根据最小连接间隔来进行数据传输,以确保不会出现丢包现象
无数据传输(空闲状态):主机会根据最大连接间隔来轮询从机状态,以确保蓝牙不断开
注意 :1.连接间隔会影响从机功耗,可以将连接间隔调整至合适位置来降低从机功耗
2.从机连接间隔参数的是否采用取决于主机端,所以在设置完从机连接参数后要看主机端的连接间隔是否响应?android设备可以在nRF Master Control Panel.apk上查看蓝牙连接参数debug信息
详细连接间隔介绍:
蓝牙连接参数
文章图片

尖刺的波就是连接事件(Connection events),剩下的Sleeping是睡眠时间,设备在建立连接之后的大多数时间都是处于休眠状态(Sleeping),这种情况下耗电量比较低,而在连接事件(Connection events)中,耗电量就相对高很多,这也是BLE为什么省电的原因之一。
每个连接事件都是由主机发出,从机端进行回复,即M->S,S->M
在BLE中,两个设备的连接采用跳频机制。两个设备在特定的信道中发生一次连接事件后,经过一个连接间隔(connect interval)后跳转到另一个信道中处理下个连接事件(协议栈中的链路层处理信道的跳转),当两个设备之间没有数据传输时,协议栈采用空包(Empty PDU)来维持BLE的连接
二.从机延迟( DEFAULT_DESIRED_SLAVE_LATENCY(range:0-499))
在两个设备中,主机允许从机在没有数据发送的情况下,从机可以忽略主机发过来的包,不必应答主机,详细如下图所示。
蓝牙连接参数
文章图片

【蓝牙连接参数】注意:当距离远或者干扰大的时候 将从机延迟参数设大可以减少掉线概率。假设将这个参数设置为0 表示规定时间内必须响应从机,不然就以为是蓝牙断开了。假如设置为5。假如信号不好的时候,即使中间丢了4个,只接受了1个就表示连接了。因为他会跳过其中4个 ,保证了不掉线的概率
三.Supervision Timeout(超时时间或者监控超时,range:10-3200)
如果BLE设备在这个时间内没有通信,则蓝牙自动断开
三者之间的关系
Supervision Timeout > (1 +slaveLatency)* (connectionInterval)
若不满足,则BLE异常断开
IOS对连接参数要求
● Interval Max * (Slave Latency + 1) ≤ 2 seconds
● Interval Min ≥ 20 ms
● Interval Min + 20 ms ≤ Interval Max Slave Latency ≤ 4
● connSupervisionTimeout ≤ 6 seconds
● Interval Max * (Slave Latency + 1) * 3 < connSupervisionTimeout
注意:
连接参数的是否更新取决于主机端,所以从机设置连接参数后要查看主机是否已经更新从机连接参数

    推荐阅读