要点:
连接事件
在一个连接当中,主设备会在每个连接事件里向从设备发送数据包。一个连接事件是指主设备和从设备之间相互发送数据包的过程。连接事件的进行始终位于一个频率,每个数据包会在上个数据包发完之后等待 150μs 再发送。
连接间隔决定了主设备与从设备的交互间隔;它是指两个连续的连接事件开始处的时间距离,可以是7.5ms ~ 4s内的任意值,但必须为 1.25ms 的整数倍。要确定从设备与主设备的实际交互间隔,需要用到从设备延迟这一参数,代表从设备在必须侦听之前可以忽略多少个连接事件。
连接参数
1、Connection Interval(连接间隔)
连接间隔,在BLE的两个设备的连接中使用跳频机制。两个设备使用特定的信道发送和接收数据,然后过一段时间后再使用新的信道(BLE协议栈的链路层处理信道的切换)。两个设备在切换信道后发送和接收数据称为一个连接事件。
尽管没有应用数据被发送和接收,两个设备仍旧会交换链路层数据(空包 Empty PDU)来维持连接
。
这个连接间隔就是指在一个连接事件(Connection events)的开始到下一个连接事件(Connection events)的开始的时间间隔。连接间隔以1.25ms为单元,连接间隔的范围是6 ~ 3200既7.5ms ~ 4s之间。
2.Slave Latency(从设备延迟或者从设备时延)
允许Slave(从设备)在没有数据要发的情况下,跳过一定数目的连接事件(Connection events),在这些连接事件(Connection events)中不必回复Master(主设备)的包,这样就能更加省电。
范围可以是0 ~ 499。
3.Supervision Timeout(超时时间或者监控超时)
这个参数设定了一个超时时间,如果BLE在这个时间内没有发生通信的话,就会自动断开。
单位是 10ms,该变量的范围是10 ~ 3200,折算成时间范围是100ms ~ 32s 。
连接间隔、从机时延以及超时时间这三者必须满足如下公式:
Supervision Timeout > (1 +slaveLatency)* (connectionInterval)
上述公式必须满足,否则连接就会不正常断开。
这三个连接参数不同情况下对通信速率和功耗的影响:
1.Connection Interval缩短,Master和Slave通信更加频繁,提高数据吞吐速度,缩短了数据发送的时间,当然也增加了功耗。
2.Connection Interval增长,通信频率降低,数据吞吐速度降低,增加了数据发送的时间,当然,这种设置降低了功耗。
3.Slave Latency减少或者设置为 0,每次Connection Events中都需要回复Master的包,功耗会上升,数据发送速度会提高。
4.Slave Latency加长,功耗下降,数据发送速度降低。
连接参数更新规程
连接建立时,主设备通过链接请求数据包发送连接参数。当连接活跃了一段时间,连接参数也许不再适用于当前使用的服务。出于提高效率的目的,连接参数需要进行更新。
连接参数的修改
“连接参数更新请求”命令可以让从设备更新链路层的连接参数,如下图所示。这些参数包括连接间隔(从设备希望主设备允许从设备发送数据包的频率)、从设备延迟(从设备能够忽略主设备的连接事件的最大值)以及监控超时。
连接参数更新请求命令仅用于从设备向主设备发送,这是由于主设备随时都能启动链路层连接参数更新控制(Connection Parameter Update Control)规程。
如果该命令由主设备发送,从设备会将其视为一个错误,并返回带有“命令不理解”原因代码的“命令拒绝”命令。
从设备可以在任何时候发送该命令;收到该信息的主设备如果可以修改连接参数,则将返回“连接参数更新响应”(Connection Parameter Update Response),其中的结果代码设为“接受(accepted)”。随后,主设备将会启动链路层连接参数更新控制规程。