logo资料库

BLE低功耗蓝牙BLE之连接事件、连接参数和更新方法.pdf

第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
资料共15页,剩余部分请下载后查看
低功耗蓝牙BLE之连接事件、连接参数和更新方法
连接事件
连接参数介绍
连接参数更新规程
连接参数的修改
低功耗蓝牙 BLE 之连接事件、连接参数和更新方法 连接事件 在一个连接当中,主设备会在每个连接事件里向从设备发送数据包。一个连接事件是指主 设备和从设备之间相互发送数据包的过程。连接事件的进行始终位于一个频率,每个数据 包会在上个数据包发完之后等待 150μs 再发送。 连接间隔决定了主设备与从设备的交互间隔;它是指两个连续的连接事件开始处的时间距 离,可以是 7.5ms ~ 4s 内的任意值,但必须为 1.25ms 的整数倍。要确定从设备与主设备 的实际交互间隔,需要用到从设备延迟这一参数,代表从设备在必须侦听之前可以忽略多 少个连接事件。 如下图所示,连接事件被一个个的连接间隔分开。从主设备发送数据包开始,每个连接事 件可以持续进行,直至主设备或从设备停止响应。在连接事件之外,主从设备之间不发送 任何数据包。 举个例子,如果连接间隔为 100ms,从设备延迟是 9,那么从设备可以忽略 9 个链接事 件,但不得不侦听第 10 个连接事件。换言之,从设备必须每秒侦听一次,而此时监控超 时的最小值应为 1010ms。反过来,另一个极端的例子是,如果监控超时使用了 32s 的最 大值,对于间隔为 100ms 的链路,从设备延时必须小于等于 319。 虽然如此,如果将从设备延迟设为可行的最大值,在监控超时发生前从设备只能获得唯一 一次侦听主设备的机会,这可不是一个好主意。因此,建议至少给从设备留出 6 次侦听的 机会。在前面的例子中,如果连接间隔为 100ms ,从设备延迟为 9,那么监控超时应该至 少为 6s,这样一来,链路在最终断开前从设备至少会有 6 次侦听的机会。
连接参数介绍 主设备和从设备建立连接之后,所有的数据通信都是在连接事件(Connection Events)中 进行的。 尖刺的波就是连接事件(Connection events),剩下的 Sleeping 是睡眠时间,设备在建立 连接之后的大多数时间都是处于 Sleeping,这种情况下耗电量比较低,而在连接事件 (Connection events)中,耗电量就相对高很多,这也是 BLE 为什么省电的原因之一。 每个连接事件(Connection events)中,都需要由 Master 发起包,再由 Slave 回复。 Master 即主机,简称 M;Slave 即从机,简称 S。抓包过程中看到的 M->S 或者 S->M 即 主机到从机或者从机到主机。 连接参数 (Connection Parameters): 通过修改下面三个参数,就可以设置 BLE 连接过程中的传输速度和功耗。 1.Connection Interval(连接间隔)
Connection Interval (GAPROLE_MIN_CONN_INTERVAL && GAPROLE_MAX_CONN_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 更详细的使用解析如下: Slave Latency = OFF 也就是 Slave Latency 为 0 时,Master 发包,Slave 必须回复,如果不 回复,Master 就会认为 Slave 那边接收不正常。 Slave Latency = ON 也就是 Slave Latency 不为 0 的时候,图中 Slave Latency 为 3。Master 发包,Slave 没有数据要回复的时候,就会忽略 3 个连接事件,在第 4 个连接事件接收到 Master 发送的数据之后,回复 Master。如果 Slave 有数据要发送就会唤醒,也就是说即使 Slave Latency 为 3,但是在 Master 发第二包的时候 Slave 有数据要回复,这个时候就会立 即回复 Master 而不是等到 3 个连接事件之后的第 4 个连接事件去回复。 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 加长,功耗下降,数据发送速度降低。 连接参数更新规程 连接建立时,主设备通过链接请求数据包发送连接参数。当连接活跃了一段时间,连接参 数也许不再适用于当前使用的服务。出于提高效率的目的,连接参数需要进行更新。较之 首先断开连接、接着更换新参数重新连接,还有一种在链路中更新参数更为简单的途径, 如下图所示:
为此,主设备向从设备发送连接更新请求,即 LL_CONNECTION_UPDATE_REQ,当中携带 了新的参数。这些参数不必进行协商,从设备或者接受和使用它们,或者断开链路。连接 更新请求中包含了早先创建连接时用过的一部分参数,还有一个称为瞬时(instant)的新 参数: 1.传输窗口大小 2.传输窗口偏移量 3.连接间隔 4.从设备延迟 5.监控超时 6.瞬时 瞬时参数决定了连接更新的开始时刻。发送消息时,主设备为连接更新选定一个未来的时 间点,并且放在消息中。接到消息后,从设备会记住这个未来的时刻,届时再切换至新的 连接参数。这有助于解决无线系统里的一个最大问题----报文重传。只要数据包的重传次 数足够,并最终在瞬时之前传输成功,上述过程执行起来就不会有问题。但是,如果该数 据包届时没能完成传输,链路就有可能丢失。 由于低功耗蓝牙没有时钟,要决定瞬时时刻只有依靠计算连接事件的个数。因此,每一个 连接事件都会被计数,链路上的第一个连接事件,也就是在连接请求之后的位于首个传输
窗口里的连接事件记为 0。因此,瞬时实际上是一个连接事件的计数器,相应的连接事件 到来时就使用新的参数。为了让从设备收到数据包,主设备必须为其提供足够的机会。不 过从设备延迟是多少,都应该至少保证 6 次数据发送机会。也就是说,如果从设备延迟 为 500ms,那么瞬时通常被设定在 3s 之后的某个未来时刻。 瞬时到来时,从设备开始侦听发送窗口,就好像连接建立的过程那样。主设备能够调整从 设备的计时,总体而言不超过 1.25ms。不过,由于主设备可能还是一个经典蓝牙设备,上 述调整使其得以协调低功耗蓝牙从设备,从而更好地完成调度。一旦该过程结束,新的连 接间隔、监控超时、从设备延迟值将投入使用。 连接参数的修改 “连接参数更新请求”命令可以让从设备更新链路层的连接参数,如下图所示。这些参数包 括连接间隔(从设备希望主设备允许从设备发送数据包的频率)、从设备延迟(从设备能够 忽略主设备的连接事件的最大值)以及监控超时。 在连接中,如果从设备希望修改当前的连接参数则可以使用该命令。比方说,如果连接事 件的间隔有可能太快了,导致过多的电量浪费。这在从设备时延很大时没有问题,但如果 不是这样,从设备将会频繁的侦听链路。这在一些情况下是必要的,例如设备间首次绑
定、互发多个数据包、探索服务和设备特性等。但在很多其他情况下,尽可能地减少从设 备必须侦听连接事件的数量对提高电池寿命至关重要。 连接参数更新请求命令仅用于从设备向主设备发送,这是由于主设备随时都能启动链路层 连接参数更新控制(Connection Parameter Update Control)规程。如果该命令由主设备发 送,从设备会将其视为一个错误,并返回带有“命令不理解”原因代码的“命令拒绝”命令。 从设备可以在任何时候发送该命令;收到该信息的主设备如果可以修改连接参数,则将返 回“连接参数更新响应”(Connection Parameter Update Response),其中的结果代码设为 “接受(accepted)”。随后,主设备将会启动链路层连接参数更新控制规程。 当然,如果主设备不同意从设备的请求参数,它可以发送结果代码为“拒绝(rejected)”的 连接参数更新响应命令以拒绝请求。此时从设备有两个选择:要么接受主设备希望的正在 使用的连接参数,要么终止连接。终止连接的做法咋看起来可能让人觉得很激进,但是, 假如使用当前的参数从设备将会在一周内耗尽电量,而使用请求的参数则可以持续数年, 很明显,合理的选择只有一个。 修改连接参数时,如果要减少主设备拒绝从设备请求的可能性,可以在请求里设置一个可 接受的参数范围。经过精心设计的从设备会乐意接受很宽的参数范围。由于主设备可能正 忙于实时会话音频连接或者高质量语音连接等任务,它可以接受一定范围内的连接间隔参 数。设备可接受的间隔参数会根据当前任务的不同而不同,可能有别于上一次设备连接时 的参数。 要提高主设备接受连接参数的机率,还有个方法是从设备提供一个合理的从设备延迟。主 设备可以选择最合适的连接事件间隔,从设备则使用最佳功耗的从设备延迟参数。 举个例子,如果从设备想每 600ms 同步一次,它可以请求范围 100ms ~ 750ms 的连接间 隔参数,并带上从设备延迟 5。如果主设备选择 100ms,则从设备每 6 个连接事件同步一 次;如果主设备选择 200ms,则从设备每 3 个连接事件同步一次,实现其所期望 的 600ms 间隔;如果主设备选择 300ms,则从设备忽略每隔一个连接事件同步一次;如果 主设备选择 400ms,则从设备每 400ms 同步一次。 下面介绍一下在 TI 的 CC2540 和 CC2541 中,连接参数修改的方法。 (一)连接成功建立之后从设备自动申请修改连接参数。
分享到:
收藏