3. 物理层(PHY):1Mbps、2Mbps、Coded PHY(S2/S8)的区别、调制方式(GFSK)、工作频段与信道划分(2400-2483.5MHz,40个信道)、跳频机制
各位同学,咱们今天聊聊BLE的物理层。说白了,物理层就是无线通信的“地基”。你上层的协议栈再花哨,如果物理层这关过不去,数据就发不出去。我当年刚接触蓝牙时,总觉得物理层就是调个频、发个波,没什么技术含量。直到有一次做量产测试,发现一批设备在强干扰环境下死活连不上,排查到最后,问题就出在物理层参数配置上。嗯,从那以后我再也不敢小看这一层了。
3.1 工作频段与信道划分
BLE工作在ISM频段,也就是2.4GHz这个“大杂烩”频段。具体范围是2400MHz到2483.5MHz。你想想看,Wi-Fi、Zigbee、微波炉、甚至无线鼠标都在这个频段里挤着,环境有多嘈杂可想而知。
BLE把这个频段划分成了40个信道,每个信道带宽2MHz。这40个信道又分成两类:
- 3个广播信道:37信道(2402MHz)、38信道(2426MHz)、39信道(2480MHz)。这三个信道专门用于设备发现和连接建立。
- 37个数据信道:0-36信道,用于连接后的数据传输。
我个人习惯把广播信道记成“37、38、39”,因为这三个数字刚好是连续的。为什么选这三个频点?因为它们巧妙地避开了Wi-Fi的1、6、11三个主信道,减少了干扰。这个设计很聪明,不是吗?
核心要点:40个信道,3个广播 + 37个数据,每个信道2MHz带宽。广播信道负责“找人”,数据信道负责“传话”。
3.2 调制方式:GFSK
BLE用的调制方式是GFSK,全称是高斯频移键控。说白了,就是通过改变载波频率来表示0和1。
GFSK和普通的FSK有什么区别?关键在于“高斯”两个字。GFSK在调制前加了一个高斯滤波器,把信号的跳变沿变得平滑。这样做的好处是:
- 频谱利用率高:信号带宽更窄,相邻信道干扰小。
- 抗干扰能力强:平滑的跳变沿减少了高频分量。
我记得有一次做EMC测试,设备在2.4GHz频段有杂散超标。排查了半天,发现是GFSK的调制指数设置偏大,导致频谱展宽。调整参数后,问题就解决了。所以啊,GFSK虽然看起来简单,但参数调优还是需要经验的。
小技巧:GFSK的调制指数通常设为0.5。这个值在抗干扰和频谱效率之间取得了很好的平衡。如果你在做低功耗设计,可以适当降低调制指数,但不要低于0.45,否则误码率会急剧上升。
3.3 三种PHY模式:1Mbps、2Mbps、Coded PHY
BLE 4.0时代只有1Mbps一种模式。到了BLE 5.0,增加了2Mbps和Coded PHY。这三种模式各有千秋,咱们一个一个说。
| 参数 | 1Mbps PHY | 2Mbps PHY | Coded PHY (S2) | Coded PHY (S8) |
|---|---|---|---|---|
| 数据速率 | 1 Mbps | 2 Mbps | 500 kbps | 125 kbps |
| 编码方式 | 无 | 无 | 2倍重复编码 | 8倍重复编码 |
| 接收灵敏度 | -96 dBm | -93 dBm | -99 dBm | -103 dBm |
| 传输距离 | 约100米 | 约50米 | 约200米 | 约400米 |
| 典型场景 | 通用连接 | 高速数据传输 | 中等距离 | 远距离/穿墙 |
1Mbps PHY:这是最基础的模式,兼容性最好。所有BLE设备都支持。如果你不确定用什么模式,选1Mbps准没错。
2Mbps PHY:速率翻倍,但灵敏度下降了3dB。这意味着传输距离会缩短。我建议在近距离、大数据量传输时使用,比如OTA升级、音频传输等场景。
Coded PHY:这是BLE 5.0的亮点。它通过重复编码的方式,牺牲速率换取距离。S2模式把每个bit重复2次,速率降到500kbps;S8模式重复8次,速率降到125kbps。但换来的是接收灵敏度大幅提升,最远可以传400米。
避坑指南:我曾经在一个项目中,为了追求远距离,直接用了S8模式。结果发现设备在近距离通信时,连接建立时间变得很长。后来才意识到,Coded PHY的编码开销会导致连接间隔变大。所以,远距离场景用Coded PHY,近距离场景还是用1Mbps或2Mbps更合适。
3.4 跳频机制
跳频是BLE抗干扰的核心手段。你想想看,40个信道挤在2.4GHz频段,如果不跳频,两个设备撞到同一个信道上,数据就冲突了。
BLE的跳频机制是这样的:
- 建立连接时:主设备和从设备协商一个跳频序列。这个序列基于设备的蓝牙地址和时钟生成。
- 连接过程中:每个连接事件使用一个信道。主设备根据跳频序列计算下一个信道。
- 信道映射:如果某个信道干扰太大,可以把它标记为“不可用”,跳频时会跳过它。
跳频的公式其实不复杂:
// 跳频信道计算(简化版)
next_channel = (current_channel + hop_increment) mod 37
// 如果next_channel被标记为不可用,则使用重新映射表
if (channel_map[next_channel] == 0) {
next_channel = remapping_table[next_channel];
}
这里的hop_increment是一个5到16之间的随机数,由主设备在连接时指定。为什么是5到16?因为要保证跳频序列能遍历所有可用信道,不会卡在几个信道上。
经验之谈:我在做蓝牙网关项目时,发现某些信道(比如信道0和信道39)经常被Wi-Fi干扰。于是我在信道映射中把这些信道标记为不可用。结果连接稳定性提升了30%以上。所以,如果你在做固定场景的BLE设备,建议根据实际环境动态调整信道映射。
3.5 三种PHY的切换策略
BLE 5.0支持在连接过程中动态切换PHY模式。这个功能叫LE PHY Update。主设备可以发起PHY切换请求,从设备同意后,双方就切换到新的PHY模式。
我一般建议这样切换:
- 连接建立初期:用1Mbps PHY,确保兼容性和稳定性。
- 数据传输阶段:如果信号强度好(RSSI > -60 dBm),切换到2Mbps PHY提高吞吐量。
- 信号弱时:如果RSSI < -80 dBm,切换到Coded PHY S8模式,保证连接不中断。
这里要注意,PHY切换是有开销的。切换过程中会有短暂的通信中断。所以不要频繁切换,建议至少间隔几秒钟。
总结一下:1Mbps是“万金油”,2Mbps是“快马”,Coded PHY是“长跑健将”。根据场景选对模式,你的BLE产品才能发挥最佳性能。
3.6 物理层知识体系图
下面这张图把物理层的核心知识点串起来了。你可以看到,从频段划分到信道分配,再到调制方式和三种PHY模式,最后通过跳频机制实现抗干扰。整个链路是环环相扣的。