一、连接参数说明
1、连接事件(Connection Event)和连接间隔(Connection Interval)
连接事件是指主设备和从设备之间相互发送数据包的过程。每个连接事件都是由Master发起包,再由Slave回复。主设备和从设备可以在一个连接事件中发送多个包。主设备和从设备都有一个16位的连接事件计数器(connEventCounter),它在第一个连接事件时设置为零,产生新的连接事件时就加一,该计数器用于同步链路层控制程序(LLCP)。
连接间隔决定了主设备和从设备两个连续的连接事件之间的时间长度。参数interval_min(最小连接间隔)和interval_max(最大连接间隔)描述了连接间隔的取值范围,这两个参数用于从设备向主设备提供一个范围时使用,连接间隔的最终取值由主设备决定。
2、从设备延迟(Slave latency)
从设备延迟是指从设备可以跳过的连接事件的次数。在没有数据要发送的情况下,允许从设备跳过一定数目的连接事件,在这些连接事件中不必回复主设备的包,达到省电的目的。上图表示从设备延迟为3的交互情况。
3、监控超时(Supervision Timeout)
监控超时设定了一个超时时间,如果主设备和从设备在这个时间内没有发生通信的话,就会自动断开。
参数应满足:监控超时 > (从设备延迟 + 1) * 连接间隔 * n , n >= 2
注:关于n的取值,《低功耗蓝牙开发指南》中建议取值为6,原文如下:
如果将从设备延迟设为可行的最大值,在监控超时发生前从设备只能获取唯一一次的侦听主设备的机会,这并不是一个好的处理方法。因此,建议至少给从设备留出6次侦听的机会,如果连接间隔为100ms,从设备延迟为9,那么监控超时应该至少为6S,这样一来,链路在最终断开前从设备至少会有6次侦听的机会。
n的取值过小会降低链路的容错能力,过大时也会导致当对端设备断电时,需要等待较长的时间才会上报设备断开信息,n的取值可以根据实际应用情况调整。
连接参数在不同的配置情况下,将对通信速率和功耗产生影响:
连接间隔缩短,主设备和从设备通信更加频繁,缩短数据发送周期,提高数据发送速度,增加功耗。
连接间隔增长,主设备和从设备通信频率降低,增长数据发送周期,降低数据发送速度,降低功耗。
从设备延迟加大,将减少从设备回复主设备的次数,降低从设备的功耗。
4、连接间隔和从设备延迟的应用
增大连接间隔可以有效降低设备的功耗,但同时也会降低数据交互的实时性。在部分应用场景中,我们希望既能降低功耗,又能保证数据的实时性。在这种情况下,可以通过连接间隔和从设备延迟的配合使用,来达到需求。我们通过下面ble鼠标的应用来说明该场景的具体实现。
(以下举例中的参数是为了方便说明,不代表实际应用的参数。)
在ble鼠标应用中,需要保证用户的点击动作能够及时的发送给电脑,这样用户才能有很好的体