目录
可收获
一、连接的发起
二、连接间隔与连接事件
三、连接参数
3.1 超时参数
3.2 外围设备延迟
3.3 最大传输单元
可收获
1.BLE连接的基本概念 -连接如何发起? -连接间隔是什么? -连接事件是什么?做了什么? 2.BLE连接的相关参数 -超时参数 -外围设备延迟 -最大传输单元(MTU) -通道数据包
注:Bluetooth LE 5.0 引入扩展广播特性以后, Legacy ADV 和 Extended ADV 对应的连接建立过程略有差异,下以 Legacy ADV 对应的连接建立过程为例
一、连接的发起
当扫描者在某一个广播信道接收到一个广播数据包时,若该广播者是可连接的,那么扫描者可以在同一广播信道发送连接请求 (Connection Request)。
对于广播者来说,它可以设置 接受列表 (Filter Accept List) 以过滤不受信任的设备,或接受任一扫描者的连接请求。随后,广播者转变为外围设备,扫描者转变为中央设备,两者之间可以在数据信道进行双向通信。
如 <扫描与响应> 所述,广播者在每一个信道的广播结束以后,都会短暂进入 RX 模式,以接收可能的扫描请求。实际上,这个 RX 过程中还可以接受连接请求。所以对于扫描者来说,发送连接请求的时间窗口和发送扫描请求的时间窗口是类似的。

二、连接间隔与连接事件
在连接中,中央设备与外围设备会周期性地进行数据交换,这个数据交换的周期被称为连接间隔 (Connection Interval)。连接间隔作为连接参数之一,在连接请求中被首次确定,后续也可以进行修改。连接间隔的取值步长 (Step Size) 为 1.25 ms ,取值范围为 7.5 ms (6 steps) – 4.0 s (3200 steps) 。
一次数据交换的过程被称为连接事件 (Connection Event)。一次连接事件中,存在一次或多次数据包交换(数据量比较大时需要分包发送);
一次数据包交换的过程是,中央设备先给外围设备发送一个数据包,随后外围设备给中央设备发送一个数据包。即便连接中任意一方在连接间隔开始时无需发送数据,也必须发送空数据包以维持连接。
连接间隔与连接事件在连接中的时序关系可以参考下图。

若一次连接事件中需要发送的数据很多,导致连接事件时长超过了连接间隔,那么必须将一次连接事件拆分成多次连接事件;这意味着,假如连接间隔的剩余时间不足以完成下一次数据包交换,那么下一次数据包交换必须等到下一次连接间隔开始时才能进行。
当需求的数据交换频率比较低时,可以设定较长的连接间隔;在连接间隔中,设备可以在除连接事件以外的时间休眠,以降低能耗。
三、连接参数
连接间隔是一种连接参数,其初始值由中央设备在连接请求中给出,也支持在后续的连接中进行修改。除此以外,连接中还存在许多其他的连接参数,下面我们挑选其中的一些重要参数进行讲解。
3.1 超时参数
连接超时参数 (Supervision Timeout) 规定了两次成功连接事件之间的最长时间。若在一次成功的连接事件之后,经过了连接超时时间却仍没有完成另一次成功的连接事件,则可以认为连接已断开。
这个参数对于连接状态的维护是非常重要的,例如连接中的其中一方突然意外断电,或离开了通信范围,那么连接中的另一方可以通过判断连接是否超时,决定是否需要断开连接以节省通信资源。
3.2 外围设备延迟
外围设备延迟 (Peripheral Latency) 规定了外围设备在无需发送数据的前提下,最多可忽略的连接事件数量。
为了理解这个连接参数的作用,让我们以蓝牙鼠标为例。
用户在使用键盘的过程中,鼠标并没有需要发送的有效数据,此时最好降低数据包发送的频率以节省电量;在使用鼠标的过程中,我们希望鼠标能够尽可能快地发送数据,以降低使用延迟。也就是说,蓝牙鼠标的数据发送是间歇性高频率的。此时,如果仅靠连接间隔参数进行连接调节,则那么较低的连接间隔会导致高能耗,较高的连接间隔会导致高延迟。
在这种场景下,外围设备延迟机制将是一个完美的解决方案。为了降低蓝牙鼠标的延迟,我们可以将连接间隔设为一个较小的值,例如 10 ms ,那么在密集使用时数据交换频率可达 100 Hz ;随后,我们将外围设备延迟设定为 100 ,那么蓝牙鼠标在不使用的状态下,实际的数据交换频率可降低至 1 Hz 。通过这种设计,我们在不调整连接参数的前提下,实现了可变的数据交换频率,在最大程度上提升了用户体验。
3.3 最大传输单元
最大传输单元 (Maximum Transmission Unit, MTU) 指的是单个 ATT 数据包的最大字节数。在介绍 MTU 参数之前,有必要先对数据通道数据包 (Data Channel Packet) 的结构进行说明。
数据通道数据包和广播数据包的最外层结构一致
回顾一下广播数据包格式:

数据通道数据包和广播数据包区别在于 PDU 的结构。数据 PDU 可以分为三部分,如下
| 序号 | 名称 | 字节数 | 备注 |
| 1 | 头 (Header) | 2 | |
| 2 | 有效负载 (Payload) | 0-27 / 0-251 | 在 Bluetooth LE 4.2 以前,有效负载最大值为 27 字节; Bluetooth LE 4.2 引入了数据长度扩展 (Data Length Extension, DLE) 特性,有效负载的最大值可达 251 字节 |
| 3 | 消息完整性检查 (Message Integrity Check, MIC) | 4 | 可选 |
数据 PDU 的有效负载可以分为两部分,如下
| 序号 | 名称 | 字节数 |
| 1 | L2CAP 头 (L2CAP Header) | 4 |
| 2 | ATT 数据 (ATT Header + ATT Data) | 0-23 / 0-247 |
// MTU暂时了解到这里,后续单独一章讲:从协议栈的最底层出发,抽丝剥茧地解析MTU的实现原理

实现100%通过率-171主机测评](https://www.171host.com/wp-content/uploads/2026/10/20261026191216-6adfa61015a7f-220x80.gif)


