BLE 连接参数:连接间隔、从机延迟、监督超时
一句话总纲:连接间隔 = 理论多久通信一次;从机延迟 = 从机可以跳过多少个连接事件不回复;监督超时 = 多久收不到包就断连
1. 连接间隔 Connection Interval
单位:1.25ms,范围 0x0006 ~ 0x0C80 → 7.5ms ~ 4000ms 公式: 实际间隔 = 值 × 1.25 ms
含义: 主机会按这个周期发起连接事件,每到一个连接事件窗口,主从机都打开射频,交换数据包。
连接事件:建立连接后,主机和从机约定好的一个「射频通信窗口」,就到这个时间点双方才打开射频,交换链路层包;其余时间可以关射频休眠(就是在每个连接间隔到了的时候,主机会发送一个 LL 包(可以是空包、或者带 ATT/GATT 数据),从机收到主机包后,在同一个连接事件窗口里,回复一个 LL 包(带 ACK / 数据))
2. 从机延迟 Slave Latency
单位:连接事件个数,范围 0 ~ 499
含义: 从机可以跳过 N 个连接事件,不用应答主机,继续休眠。 只有当第 N+1 个连接事件到来时,才必须起来和主机通信。
从机延迟 = 允许连续忽略多少个连接事件。
有效通信间隔公式
有效间隔 = 连接间隔 × (Slave Latency + 1)
举例: 连接间隔 = 20ms,Slave Latency=4
- 每 20ms 一次连接事件
- 从机可以跳过 4 次,第 5 次才唤醒应答
- 实际主动通信周期 = 20 × (4+1) = 100ms
发
3. 监督超时 Supervision Timeout
单位:10ms,范围 0x000A ~ 0x0C80 → 100ms ~ 32000ms 公式: 超时时间 = 值 × 10 ms
含义: 主机持续超过这个时长没有收到从机有效的应答包 → 判定链路丢失,断开 BLE 连接。
重点:不是每一次连接事件丢包就断,是连续足够久收不到一次有效应答才断。
规则约束(核心坑): SupervisionTimeout > (ConnInterval × (SlaveLatency +1)) ×1.25 一般工程上建议:监督超时 ≥ 有效间隔 × 2~3 倍,防止单次丢包直接断连。
例子: Conn=20ms,Latency=4 → 有效间隔 100ms SupervisionTimeout 设 300ms(0x1E)
如果超过 300ms,主机一次从机应答都没收到,直接断连。
Active 模式:主机一直在轮询你,轮到你的时隙,你必须应答,不能睡觉
Sniff 嗅探模式:跟主机约定好,平时深度睡觉,只每隔一段时间短暂醒一小会儿,听主机有没有消息;其余时间主机轮询你的时候,你听不到、也不用应答
经典蓝牙默认是 Active,想省电必须主动切换到 Sniff
Active 模式(播放音乐、通话时的状态)
微微网是 Master(手机)调度所有时隙。 每个 625μs slot,master 轮流点名网里的 slave。 点名方式:发 POLL 包。
Active 规则
✅ Master 轮到你的时隙 → 发 POLL ✅ 你(从机)必须在本 slot 内回复:可以是 NULL 空包,或者带数据的包。 ❌ 不能假装没听见、不能跳过这次点名睡觉。
时序极简例子:
slot0:master 发 POLL 给耳机 A → 耳机 A 立刻回复 slot1:master 发 POLL 给耳机 B → 耳机 B 立刻回复 slot2:master 发 POLL 给耳机 A → 耳机 A 立刻回复 slot3:master 发 POLL 给耳机 B → 耳机 B 立刻回复
一直轮询,永不间断
- 优点:随时发数据,延迟极低,适合 A2DP 音乐、HFP 通话
- 缺点:射频几乎一直打开,功耗很高
只要在 Active,每一次轮到你的时隙,你都要起来应答,不存在 “睡过几次” 的选项
Sniff 嗅探模式(暂停音乐、待机保连,省电模式)
当音乐暂停,耳机和手机通过 LMP 协商,切换进入 Sniff 模式。 不再每个 slot 都点名。 约定两个核心参数:
- Sniff Interval:嗅探周期。多久唤醒一次(单位:slot,625μs)
- Sniff Attempt(Sniff 窗口长度):每次醒来,连续监听多少个 slot,等待 master 发数据。
Sniff 工作规则
- 在两个 Sniff 窗口之间的漫长时间:耳机深度休眠,射频关闭
- 到约定时间点,耳机醒来,打开射频,进入 Sniff Attempt 窗口,等待 master 发包
- 在这个窗口内,master 可以给耳机发 ACL 数据;耳机收到就应答
- Sniff Attempt 窗口时间耗尽 → 耳机立刻关掉射频,继续睡觉,直到下一个 Sniff Interval 到来
- 不在 Sniff 窗口的所有 POLL 点名,耳机都听不到,不会应答
假设: Sniff Interval = 100 slots(100 × 625μs = 62.5ms) Sniff Attempt = 4 slots(每次醒来监听 4 个 slot)
- 0~99 slot:耳机睡觉,射频 OFF。master 即使发 POLL,耳机收不到
- slot100 开始:耳机唤醒,打开射频,监听 4 个 slot(slot100,101,102,103),这 4 个 slot 内 master 可以发 POLL / 数据包,耳机正常应答
- slot104:Sniff 窗口结束 → 耳机重新休眠
- 等待下一次 slot200,再次唤醒监听 4 个 slot

浙公网安备 33010602011771号