第4章 连接参数角色边界:Connection Interval、Slave Latency、Supervision Timeout在不同角色下的取值范围与权衡
在 Bluetooth LE 多连接场景中,三个核心连接参数——Connection Interval、Slave Latency 和 Supervision Timeout——直接决定了系统的能效、数据吞吐量、响应延迟与连接稳定性。这些参数的取值范围不仅受蓝牙核心规范约束,更因设备角色(Central / Peripheral / Broadcaster / Observer)不同而存在显著的边界差异。本章围绕角色边界,从参数基线、协商控制流、风险权衡到落地验收进行完整剖析。
4.1 参数取值范围与规范边界
蓝牙核心规范 v5.x 对三个参数的定义与范围如下表所示。所有取值必须在设备初始化或连接参数更新阶段协商一致,超出边界将导致连接拒绝或链路中断。
| 参数 | 单位 | 规范范围 | 最小步长 | 角色限制 |
|---|---|---|---|---|
| Connection Interval | 1.25 ms | 6~3200(即 7.5 ms~4.0 s) | 1(1.25 ms) | 只能由 Central 发起更新,Peripheral 可请求但必须经 Central 确认 |
| Slave Latency | 事件次数 | 0~499 | 1 | 仅适用于 Peripheral(Slave),Central 固定为 0 |
| Supervision Timeout | 10 ms | 10~3200(即 100 ms~32.0 s) | 1(10 ms) | Central 与 Peripheral 均需维护,但 Central 负责超时检测与断开 |
关键边界规则:Supervision Timeout 必须大于
(1 + Slave Latency) × Connection Interval,否则 Central 会因过早超时而误断连接。该不等式是参数协商的首要约束,任何不符合此条件的参数组合都会被协议栈拒绝。
4.2 角色边界与职责分层
在 BLE 连接模型中,设备角色决定了参数的提议权、决策权与容忍阈值。下图展示了 Central 与 Peripheral 在参数协商中的分层关系及影响要素。
4.3 参数权衡与选型决策
实际系统设计需要在功耗、延迟、吞吐量之间做平衡,不同角色对这三个指标的优先级截然不同。下表总结了常见场景下的参数选型推荐。
| 用户场景 | Central 策略 | Peripheral 策略 | 典型 Interval | Latency | 主导风险 |
|---|---|---|---|---|---|
| 实时数据采集(如心率) | 接受低 Interval 请求 | 请求 7.5~20 ms | 7.5~15 ms | 0 | Central 处理负载高 |
| 周期性传感器上报(如温度) | 允许高 Latency | 请求 100~500 ms | 100~400 ms | 5~50 | 丢失多个事件后超时 |
| 低功耗外设(如按钮) | 接受大 Interval | 请求最大可达 4 s | 1~4 s | 0~10 | 响应延迟不可接受 |
| 多连接 Central(Hub) | 平衡各 Peripheral 周期 | 容忍调度抖动 | 15~50 ms | 0~2 | 调度冲突导致丢包 |
设计建议:当 Peripheral 同时作为 Central 与其他设备连接时(即多角色设备),Slave Latency 应优先设置为低值(≤2),以免因自身延迟过高而错过对其他 Central 的响应。
4.4 数据流与控制流:参数协商过程
参数更新由 Central 发起,但 Peripheral 可通过 LL_CONNECTION_PARAM_REQ 提议新参数。控制流如下:
- Peripheral 提议:发送 LL_CONNECTION_PARAM_REQ,包含 Interval、Latency、Timeout 的期望值。
- Central 评估:检查是否满足超时不等式,并根据自身调度能力接受或拒绝。
- Central 回应:返回 LL_CONNECTION_PARAM_RSP(接受)或忽略(隐式拒绝)。
- 参数生效:若接受,双方立即切换至新参数;若拒绝,Peripheral 可重试,但需遵守重试间隔。
数据流方面,Connection Interval 直接决定每个连接事件中可交换的数据包数量。Interval 越小,单位时间可用事件数越多,吞吐量线性提升,但 Central 的调度开销也越大。
4.5 风险点与常见陷阱
- 超时不等式导致的隐性断连:若 Peripheral 请求的 Latency × Interval 接近 Supervision Timeout,短时干扰即可触发超时断开。建议将 Timeout 设为不等式右侧值的 2~3 倍。
- Central 拒绝参数更新后无反馈:部分协议栈不发送拒绝消息,Peripheral 必须依靠超时回退,避免无限重试导致功耗飙升。
- 多连接 Central 的 Interval 冲突:当 Central 连接多个 Peripheral 时,不同 Interval 可能导致调度周期无法对齐,建议使用
connEventCounter错开连接事件。 - Broadcaster/Observer 角色误用连接参数:广播状态不存在 Connection Interval,若应用层错误地将连接参数配置写入广播场景,将导致参数无效或未定义行为。
高风险场景:当 Peripheral 的 Slave Latency 设置为 499(最大值),且 Connection Interval 为 100 ms 时,Central 可能长达 49.9 秒(499×100 ms)收不到任何数据。若 Supervision Timeout 同时设置为接近的 5 秒,实际上只需 5 秒无数据就断开——这反而与预期背道而驰。务必在配置时同步验证不等式裕量。
4.6 落地步骤
以 TI CC13xx / Nordic nRF5 SDK 为例,参数配置与更新流程如下:
// 定义 Peripheral 期望的参数(单位:1.25 ms / 10 ms)
uint16_t conn_interval_min = 80; // 100 ms
uint16_t conn_interval_max = 200; // 250 ms
uint16_t slave_latency = 10; // 10 个事件
uint16_t supervision_timeout = 2000; // 2000 * 10 ms = 20 s
// 发起参数更新请求(Peripheral 调用)
sd_ble_gap_conn_param_update(conn_handle,
&conn_interval_min,
&conn_interval_max,
slave_latency,
supervision_timeout);
// Central 端接收并检查不等式
if (supervision_timeout <= (1 + slave_latency) * conn_interval_max) {
// 拒绝并保持现有参数
return BLE_ERROR_INVALID_PARAM;
}
// 接受并应用新参数
在实际产品中,建议将参数请求封装成状态机,包含重试退避。关键时序参数可存入非易失存储,避免每次连接都重新协商。
4.7 验收标准
连接参数调整后,必须通过以下检查项确认边界正确:
- 参数值验证:使用 HCI 命令
LE Read Connection Update Complete或协议分析仪抓取 LL_CONNECTION_PARAM_RSP,确认 Interval、Latency、Timeout 与配置一致。 - 不等式合规:计算并断言
Supervision Timeout > (1 + Slave Latency) × Connection Interval,差值至少保留 10% 裕量。 - 稳定性测试:在射频噪声环境中持续运行 30 分钟,连接不应无故断开(除人为触发外)。
- 多角色边界:若设备同时充当 Central 和 Peripheral,需验证两个连接方向各自的参数不互相干扰,特别是连接事件调度无冲突。
架构审查要点:在多连接系统中,建议为每个 Peripheral 建立独立的连接参数配置文件(Profile),并强制 Central 侧在参数更新前做超时不等式复审。任何由 Peripheral 发起的参数变更请求,Central 都应在日志中记录变更前后的参数差,用于事后审计。