3、广播通道选择:37/38/39信道分配、跳频算法、信道映射
聊到BLE广播,有个问题我经常被问到:为什么偏偏是37、38、39这三个信道?
嗯,这得从2.4GHz频段说起。这个频段太热闹了——Wi-Fi、蓝牙经典、Zigbee、甚至微波炉都挤在这里。BLE如果想稳定工作,就得学会“躲”。
我个人习惯把这三个广播信道叫作“安全通道”。它们巧妙地避开了Wi-Fi最常用的1、6、11信道。你想想看,如果广播信道正好和Wi-Fi主信道重叠,那设备扫描时大概率会丢包。我在项目中遇到过好几次,客户说手机离设备两米就搜不到广播了,结果一查,Wi-Fi路由器就在旁边,信道6,正好压住了BLE的39信道。
3.1 三个广播信道的分配逻辑
BLE在2.4GHz频段划分了40个信道,每个信道2MHz带宽。其中:
- 37信道(2402MHz):起始信道,对应Wi-Fi信道1的左侧保护带
- 38信道(2426MHz):中间信道,正好卡在Wi-Fi信道1和6之间
- 39信道(2480MHz):最高频信道,在Wi-Fi信道11的右侧
| 广播信道 | 中心频率 | 对应BLE索引 | Wi-Fi干扰风险 |
|---|---|---|---|
| CH 37 | 2402 MHz | 索引 0 | 低(Wi-Fi信道1左侧) |
| CH 38 | 2426 MHz | 索引 12 | 低(Wi-Fi信道1与6之间) |
| CH 39 | 2480 MHz | 索引 39 | 低(Wi-Fi信道11右侧) |
核心要点:三个广播信道不是随便选的。它们之间的间隔足够大,能提供频率分集增益。如果一个信道被干扰,另外两个大概率还能正常工作。
3.2 跳频算法:不是乱跳,是“伪随机”
广播阶段的跳频和连接后的跳频不太一样。广播阶段用的是固定信道序列——设备在37、38、39三个信道上轮流发送。
具体流程是这样的:
- 设备在每个广播事件中,依次在37、38、39信道上发送相同的广播包
- 每个信道上的发送间隔由广播间隔(advInterval)控制
- 接收端(扫描器)也在三个信道上轮流监听
为什么不用更复杂的跳频?说白了,广播阶段设备之间还没有建立连接,没法协商跳频模式。固定轮询三个信道是最简单、最可靠的方案。
我的经验:调试广播稳定性时,我习惯先看三个信道的RSSI值。如果某个信道RSSI明显偏低,基本可以断定那个频点被干扰了。这时候调整广播信道映射(如果芯片支持)比增大发射功率更有效。
3.3 信道映射:谁在听,谁在说
信道映射(Channel Map)是一个40位的位图,每一位对应一个BLE信道(索引0-39)。位值为1表示该信道可用,0表示不可用。
广播阶段使用的信道映射存储在广播参数中。默认情况下,37、38、39三个信道都是启用的。但有些场景下需要调整:
- 法规要求:某些国家/地区对特定频段有使用限制
- 干扰规避:检测到某个信道持续被强干扰,可以动态关闭
- 功耗优化:减少广播信道数量可以降低扫描器功耗(但会牺牲可靠性)
// 信道映射示例:40位位图
// 位0 = 信道37 (2402 MHz)
// 位12 = 信道38 (2426 MHz)
// 位39 = 信道39 (2480 MHz)
// 默认广播信道映射(仅启用37/38/39)
uint8_t default_adv_channel_map[5] = {
0x01, // 位0: 信道37启用
0x10, // 位12: 信道38启用
0x80, // 位39: 信道39启用
0x00,
0x00
};
// 关闭信道38(例如检测到强干扰)
uint8_t custom_adv_channel_map[5] = {
0x01, // 仅保留信道37
0x00, // 信道38关闭
0x80, // 信道39启用
0x00,
0x00
};
注意:修改广播信道映射后,扫描器必须同步更新。否则会出现“设备在发,扫描器没在听”的尴尬情况。我曾经在产线上遇到过一批设备扫描不到广播,排查了两天才发现是信道映射没同步。
3.4 广播信道选择的核心逻辑
下面这张图展示了BLE广播信道选择的全貌:
3.5 实际项目中的信道选择策略
我在多个量产项目中总结了几条经验:
- 不要轻易关闭广播信道:除非你确认某个信道被强干扰(比如RSSI持续高于-50dBm),否则保持三个信道全开。少一个信道,广播成功率下降不止33%——因为干扰是突发性的。
- 扫描器端也要做信道映射同步:如果广播端关闭了某个信道,扫描器必须知道。否则扫描器会在那个信道上空等,浪费功耗和时间。
- 动态信道切换要谨慎:实时检测干扰并切换信道听起来很美,但实现起来容易引入时序问题。我建议先做静态配置,等系统稳定了再考虑动态方案。
调试小技巧:用频谱仪看三个广播信道的底噪。如果某个信道底噪比另外两个高10dB以上,果断关掉它。我曾经在一个工厂车间里,38信道被一台老旧的Wi-Fi摄像头持续干扰,关掉后广播成功率从82%提升到了99.5%。
好了,广播信道选择这块就聊到这。记住三个数字:37、38、39。它们是BLE广播的“安全三角”,选对了,后面的工作就顺了。