第4章 中央设备与外围设备的依赖关系:角色划分、连接生命周期、资源竞争

边界定义

本章聚焦于蓝牙多连接场景中中央设备(Central)与外围设备(Peripheral)之间的依赖关系。边界限定在单芯片多连接、多芯片协同以及外设角色动态切换的三种典型架构中。核心问题包括:角色划分如何影响连接所有权、连接生命周期中的状态转换如何引发资源竞争、以及资源竞争对吞吐量和延迟的量化影响。

分层观点

从系统架构角度,可将依赖关系分为三层:

  • 物理链路层:扫描、广播、连接建立、跳频同步;中央设备控制时序,外围设备被动响应。
  • 主机协议层:GATT、ATT、L2CAP 通道复用;依赖关系表现为外围设备作为 Server 暴露属性,中央设备作为 Client 发起读写。
  • 应用协调层:连接数 > 控制器硬件支持(如 BLE 5.0 典型 13 个连接上限)时的资源调度和超时处理。

组件职责

组件职责依赖约束
中央设备(Central)发起连接、管理扫描窗口、分配连接事件受限于 Controller 并发连接数;每个连接需要独立链路层上下文
外围设备(Peripheral)广播可连接、接受连接、响应事件只能被一个 Central 连接;广播参数影响发现延迟
主机协议栈分发 GATT 服务、处理 MTU 协商、管理缓冲区多个 Central 共享同一个属性数据库时需互斥
应用调度器决定连接优先级、处理断线重连、资源竞争仲裁必须与链路层时序窗口对齐

数据流 / 控制流 / 信任链路

数据流:Central 发送请求 → L2CAP 分段 → Controller 基带包 → 跳频发送 → Peripheral 接收确认 → 重传或回调。多个连接的数据流在同一 Controller 上分时复用,链路层调度器根据连接间隔(Interval)和延迟(Latency)分配时隙。

控制流:Central 通过 HCI 命令创建/删除连接、更新连接参数(如最小连接间隔、监督超时)。Peripheral 通过 HCI 事件上报断连、安全请求。信任链路依赖于配对绑定(Secure Connections 或 LE Legacy Pairing),一旦绑定,后续连接自动使用存储的 Long-Term Key。

信任链路典型风险:若 Central 同时管理数十个未绑定外设,MITM 攻击面增大;且密钥存储溢出将导致重绑定失败。

选型权衡

权衡维度选项A:单Central-多Peripheral选项B:多Central-单Peripheral选项C:多Central多Peripheral混合
角色复杂度低中(需要Central角色切换或双模)高(需链路层调度器)
资源竞争强度低(同芯片共享时隙)高(多个Central竞争同一Peripheral)极高(芯片间同步困难)
最大连接数受限于Central硬件受限于Peripheral连接上限(通常1个)取决于多芯片协调
典型场景手机连接多个传感器双主机接收同一外设(如音频双耳)网关与多节点+多手机接入

选型建议:若目标系统需< 10 个并发连接且外设被动,优先单Central方案;若需双主机同时读一个外设(如穿戴设备被两个手机同时操作),必须采用多Central设计并处理连接参数协商。

风险点

  • 连接超时风暴:Central 扫描窗口过窄导致多个 Peripherals 丢失广播,触发大量链路层断连与重连,消耗控制器 FIFO。
  • GATT 数据库竞态:两个 Central 同时写同一特征值(如外设配置),无事务锁导致数据不一致。
  • 连接间隔冲突:不同连接使用接近的连接间隔(如 10ms 和 12ms),在同一个 Controller 造成微漂移,产生周期性的交错冲突。
  • 密钥存储溢出:绑定信息超过 NVRAM 容量,导致新连接无法完成配对,或旧连接丢失密钥后需重新绑定。

落地步骤

  1. 量化连接上限:确认所用 BLE 芯片的实际并发连接数(如 nRF52840 支持 20 个,但建议 ≤8 以保证吞吐)。
  2. 划分角色组:将外设按功能分组(传感器组、控制设备组、对时设备组),每组分配不同的扫描窗口和连接间隔。
  3. 实现资源仲裁:在主机层添加连接优先级队列,当链路层缓冲满时,降低低优先级连接的TX载荷。
  4. 设置监督超时:为每个连接设置独立的监督超时值(建议为连接间隔的 3~6 倍),避免单连接阻塞调度表。
  5. 压力测试:使用多外设模拟器同时连接,验证 Central 在满载情况下 GATT 读写成功率 >99.5%。

验收标准

  • 在满载连接数下,所有外围设备均可完成一次完整的 GATT 主服务发现,失败率 ≤0.1%。
  • 任意外围设备断连并重连,中央设备在 3 个监督超时内识别并重建连接。
  • 两个中央设备同时尝试写同一特征值时,外设端不会产生数据混乱(以最后写入者为准或返回错误状态)。
  • 连续 24 小时运行,连接下降次数 ≤2 次。
中央与外围依赖关系及生命周期状态 中央设备 扫描 / 发起连接 控制跳频时隙 外围设备 广播 / 接受连接 响应事件 连接建立(LL_CONNECTION_IND) 广播状态 已连接-活动 重连等待 扫描窗口 监督超时 重连成功 资源竞争区域 连接间隔冲突、GATT写竞态、Controller FIFO溢出 连接参数协商 优先级调度 缓冲区隔离

关键风险提醒:当中央设备管理超过芯片建议并发上限(如使用 nRF52840 时连接数 >13),链路层调度将触发“错过连接事件”计数,导致监督超时断连。务必在协议栈层设置连接事件预算(Connection Event Budget),并预留至少 10% 的时隙裕量。