连接参数 / Connection Parameters
连接参数由发起设备与连接请求一起发送,当连接建立后,任何一个设备都可以修改。这些参数如下:
连接间隔 / Connection Interval
在低功耗蓝牙连接中,使用了跳频方案。两台设备发送各自数据和接收对方数据,只在特定时间的特定信道上。两个设备在一段特定的时间后在一个新的信道上通信(蓝牙低功耗协议栈的链接层处理信道切换)。每次两个设备建立通讯,发送和接收数据,被称为连接事件。如果没有应用数据要发送或接收,两个设备交换链接层数据以维持连接。连接间隔是两个连接事件之间的时间量,以1.25ms为一个单位。连接间隔的范围可以从最小值6(7.5ms)到最大值3200(4.0s)。
不同的应用可能需要不同的连接时间间隔,并会影响设备的功耗。
从机延迟 / Slave Latency
该参数使从机(外围)设备可以选择跳过一些连接事件。这种能力给外围设备一些灵活性。如果外围设备没有任何数据要发送,它可以跳过连接事件,保持睡眠状态,并节省电力。外围设备在每个连接事件的基础上选择是否唤醒。外设可以跳过连接事件,但跳过的时间不能超过从机延迟参数所允许的时间,否则连接会失败。
从机延迟值指的是跳过的连接事件的个数,范围一般从0到500。
监督超时 / Supervision Time-out
这个超时是两个成功的连接事件之间的最大时间量。如果这个时间过去了,没有发生成功的连接事件,设备就会终止连接并返回到未连接状态。这个参数值以10毫秒为单位表示。监督超时值的范围可以从最小的10(100ms)到3200(32.0s)。超时必须大于有效连接间隔。
有效连接间隔 / Effective Connection Interva
有效连接间隔等于两个连接事件之间的时间,取决于从机设备在从机延迟允许的情况下跳过的连接事件数量(如果从机延迟设置为0,则有效连接间隔等于实际连接间隔)。
从机延迟值表示可以跳过的最大事件数。这个数字的范围可以从最小值0(意味着不能跳过任何连接事件)到最大值499。最大有效连接间隔的值不能大于16秒,间隔可以用以下公式计算:
有效连接间隔=(连接间隔)*(1+从机延时)
Effective Connection Interval = (Connection Interval) * (1 + [Slave Latency])
考虑下面例子:
- 连接间隔:80 (100 ms)
- 从机延迟:4
- 有效连接间隔:(100ms)*(1+4)=500ms
当从属设备没有需要向主设备发送的数据时,连接中的从属设备在连接事件中发送数据的间隔是500毫秒。
连接参数设置的影响 / Connection Parameter Considerations
在大多数应用场景中,从属设备跳过最大数量的连接事件。在选择或申请连接参数时就要考虑有效的连接间隔。选择正确的配套连接参数,在蓝牙低功耗设备使用中,对功率优化起着重要作用。下面的列表概述了连接参数设置的影响:
缩短连接间隔的影响如下:
- 增加两个设备的耗电量
- 增加两个方向的吞吐量
- 减少任何一个方向上的数据发送时间
延长连接间隔的影响如下:
- 减少两个设备的耗电量
- 减少两个方向的吞吐量
- 增加任何一个方向上的数据发送时间
减少从机延迟(或将其设置为零)的作用如下:
- 增加外围设备的功率消耗
- 减少外围设备接收来自中央设备的数据的时间。
增加从属延迟的作用如下:
- 在外设没有数据要发送给中央设备的期间,减少外设的耗电量
- 增加外围设备接收从中央设备发送的数据的时间
连接参数更新/ Connection Parameter Update
在某些情况下,中央设备请求与外围设备的连接,但其发出的连接参数对外围设备并不友好。而在其他一些情况下,在已经连接的情况下,外围设备可能会根据其应用情况而请求改变参数。外围设备可以通过发送连接参数更新请求来要求中央设备改变连接设置。对于支持蓝牙4.1和4.2的设备,该请求直接由链接层处理。对于蓝牙4.0设备,协议栈的L2CAP层处理该请求。蓝牙低功耗协议栈会自动选择更新方法。
该请求包含四个参数:最小连接间隔、最大连接间隔、从机延迟和超时。这些值代表外围设备需要的连接参数(连接间隔是以范围的形式给出)。当中心设备收到这个请求时,它可以选择接受或拒绝新的参数。
发送连接参数更新请求是可选的,不要求中央设备接受或应用所请求的参数。一些应用试图以较快的连接间隔建立连接,以允许更快的服务发现和初始设置。这些应用在这之后,会要求一个较长(较慢)的连接间隔,以维持最佳的工作功耗。
根据GAPRole,连接参数更新可以用GAPRole_SendUpdateParam()或GAPCentralRole_UpdateLink()命令异步发送。外围的GAPRole可以被配置为在建立连接后的一定时间内自动发送参数更新。例如,simple_peripheral应用程序使用以下预处理器定义的符号:
连接建立后6秒,GAP层会自动发送一个连接参数更新。
终止连接 / Connection Termination
主机(master)或从机(slave)都可以因任何原因终止连接。一方发起终止,另一方必须在两个设备退出连接状态之前作出回应。
注:如果一个central设备连接到多个peripheral设备,这种多连接的情况下,对于连接参数设定,会有额外的要求。
参考:
https://software-dl.ti.com/lprf/simplelink_cc2640r2_latest/docs/blestack/ble_user_guide/html/ble-stack-3.x/gap.html#:~:text=The%20connection%20interval%20is%20the,of%203200%20(4.0%20s).