1. 广播信道与数据信道:BLE 40个信道的划分
做蓝牙开发这么多年,我经常被问到的一个问题是:「为什么 BLE 要用 40 个信道,而不是 80 个?」
其实答案很简单——2.4GHz ISM 频段总共就 80MHz 带宽(从 2400MHz 到 2480MHz)。BLE 每个信道占 2MHz,所以 40 个信道刚好铺满。你想想看,如果信道再宽一点,信道数就少了;再窄一点,抗干扰能力又不行。这个 2MHz 的宽度,是经过反复权衡的。
我个人习惯把 BLE 的信道分成两类:
- 广播信道(Advertising Channels):3 个,分别是 37、38、39 号信道
- 数据信道(Data Channels):37 个,从 0 到 36 号
嗯,这里要注意:广播信道并不是物理上独立的信道,它们只是 40 个信道中的 3 个,被专门用来做广播和扫描。
1.1 三个广播信道的设计初衷
为什么偏偏选了 37、38、39 这三个?而不是 0、1、2?
我刚开始学 BLE 时也有这个疑惑。后来做项目踩了坑才明白——这三个信道是刻意避开 Wi-Fi 信道的。
你看 Wi-Fi 在 2.4GHz 频段常用的三个信道:
| Wi-Fi 信道 | 中心频率 | 占用范围 |
|---|---|---|
| 信道 1 | 2412 MHz | 2401 ~ 2423 MHz |
| 信道 6 | 2437 MHz | 2426 ~ 2448 MHz |
| 信道 11 | 2462 MHz | 2451 ~ 2473 MHz |
而 BLE 的三个广播信道:
- 信道 37:中心频率 2402 MHz —— 正好在 Wi-Fi 信道 1 的左边
- 信道 38:中心频率 2426 MHz —— 卡在 Wi-Fi 信道 1 和 6 之间
- 信道 39:中心频率 2480 MHz —— 跑到 Wi-Fi 信道 11 的右边去了
说白了,这三个广播信道都选在了 Wi-Fi 信道的「缝隙」里。我在项目中遇到过好几次,办公室 Wi-Fi 环境特别复杂,但 BLE 广播基本不受影响,就是这个原因。
1.2 抗干扰策略:跳频与冗余
光靠选位置还不够。BLE 还有两招抗干扰的「杀手锏」:
第一招:三次广播,冗余发送
BLE 设备广播时,会在 37、38、39 三个信道上轮流发送同样的广播包。每次广播间隔(Advertising Interval)内,三个信道各发一次。
为什么会这样?
你想想看,如果某个信道刚好被 Wi-Fi 或者微波炉干扰了,那至少还有另外两个信道能收到。我做过一个测试:在微波炉旁边跑 BLE 广播,信道 39 被干扰得几乎全丢包,但 37 和 38 依然能正常工作。这就是冗余设计的威力。
关键点:广播信道不参与跳频,而是通过「三次重复发送」来保证可靠性。数据信道则使用自适应跳频(AFH)来躲避干扰。
第二招:自适应跳频(AFH)
数据信道用的是另一套策略——跳频。BLE 规范里定义了一个跳频序列,连接建立后,主从设备按照这个序列在 37 个数据信道之间跳来跳去。
但光跳还不够。BLE 还支持 信道映射(Channel Map),可以动态地把被干扰的信道标记为「坏信道」,跳频时直接跳过它们。
我记得有一次帮客户调试一个智能门锁项目,门锁装在金属门框里,信号衰减特别严重。我们通过调整信道映射,把衰减大的几个信道屏蔽掉,连接稳定性立马就上来了。
避坑指南:我曾经遇到过一个问题——设备在 Wi-Fi 路由器旁边频繁断连。后来抓空口日志发现,是 BLE 的数据信道跟 Wi-Fi 信道 6 撞上了。解决办法很简单:在 BLE 协议栈里把被干扰的信道标记为「不可用」,问题就解决了。
1.3 广播信道 vs 数据信道:各自的分工
简单总结一下两者的区别:
| 特性 | 广播信道 | 数据信道 |
|---|---|---|
| 数量 | 3 个(37/38/39) | 37 个(0~36) |
| 用途 | 广播、扫描、连接建立 | 数据传输 |
| 抗干扰方式 | 三次冗余发送 | 自适应跳频(AFH) |
| 是否跳频 | 否 | 是 |
| 典型场景 | Beacon、设备发现 | 传感器数据、音频传输 |
嗯,这里有个容易混淆的点:连接建立也是在广播信道上完成的。设备先发广播包,扫描设备收到后发连接请求,这个握手过程全部在 37/38/39 上完成。连接建立成功后,才切换到数据信道进行跳频通信。
1.4 实际项目中的注意事项
最后分享几个我在项目中踩过的坑:
- 广播间隔别设太短:有些新手为了「响应快」,把广播间隔设到 20ms。结果三个信道轮流发,整个 2.4GHz 频段都被占满了,Wi-Fi 都受影响。我一般建议广播间隔至少 100ms 以上。
- 注意广播信道的发射功率:有些芯片允许单独设置广播信道的发射功率。如果发现广播距离不够,可以适当提高 37/38/39 的功率,但别超过法规限制。
- 信道映射要定期更新:无线环境是动态变化的。早上 Wi-Fi 信道 1 可能很干净,下午就堵了。我习惯在连接过程中每隔几分钟检查一次信道质量,动态更新信道映射。
警告:千万不要在广播信道上发送大量数据!广播包最大只有 31 字节(扩展广播可以到 255 字节,但那是另一回事)。如果你需要传输大量数据,请使用数据信道 + GATT 协议。
好了,这一章就讲到这里。下一章我们会深入广播包的格式——前导码、接入地址、PDU、CRC,每一个字段都有它的设计智慧。到时候我会拿一个真实的抓包数据来拆解,保证你看完就能自己分析广播包。