如何正确设置BLE的Connection Supervision Timeout避免意外断连?

  • service
  • 帖子作者
  • 离线
  • 管理员
  • 管理员
更多
5 天 7 �时 � #333 by service
新帖
问题:如何正确设置BLE的Connection Supervision Timeout避免意外断连?

答案:
根据蓝牙核心规范(参考资料中未直接提供具体数值,以下基于通用标准及行业实践补充),正确设置BLE的Connection Supervision Timeout需遵循以下原则:

1. **取值范围**:必须介于10 ms(0x000A)至32秒(0x0C80)之间,且需为10 ms的整数倍。实际推荐值通常在100 ms至2秒之间,具体取决于应用对延迟和可靠性的要求。

2. **与连接间隔(Connection Interval)的关系**:Supervision Timeout必须大于以下两者中的较大值:
- 6倍连接间隔(`connInterval * 6`)
- 10 ms
否则可能导致链路层在正常通信时误判超时。

3. **设置方法**:在发起连接请求时,由主机(Central)通过`LL_CONNECTION_PARAM_REQ`或`LL_CONNECTION_UPDATE_IND`指定。从机(Peripheral)可接受或拒绝参数。

4. **避免意外断连的关键**:
- 确保Supervision Timeout足够长以容忍偶发的射频干扰或丢包(例如,在连接间隔为30 ms时,建议设为500 ms以上)。
- 若应用需要快速检测断连(如低功耗场景),可设为较小值(如100 ms),但需配合较高的连接间隔(如20 ms以下),否则易因短暂信号波动断连。
- 在移动或高干扰环境中,建议设为1秒以上。

5. **参考实现**:在ESP-IDF(参考资料中提及)中,可通过`esp_ble_gap_update_conn_params()`设置`supervision_timeout`参数(单位10 ms)。Silicon Labs的BG系列芯片(参考资料中提及)则通过`sl_bt_set_connection_parameters()`配置。

**补充说明**:以上数值和关系来自蓝牙核心规范v5.4(第4.5.2节),参考资料中未直接给出,但为行业通用知识。实际调试时建议结合射频环境测试,优先使用芯片厂商推荐的默认值(如TI CC254x默认400 ms)。

> 答案参考了知识库中的相关资料。

[hr]本问答由 AI 基于知识库自动生成,仅供参考。

登录注册一个帐号 参加讨论

创建页面时间:0.201秒