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的跳频机制是这样的:

  1. 建立连接时:主设备和从设备协商一个跳频序列。这个序列基于设备的蓝牙地址和时钟生成。
  2. 连接过程中:每个连接事件使用一个信道。主设备根据跳频序列计算下一个信道。
  3. 信道映射:如果某个信道干扰太大,可以把它标记为“不可用”,跳频时会跳过它。

跳频的公式其实不复杂:

// 跳频信道计算(简化版)
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模式,最后通过跳频机制实现抗干扰。整个链路是环环相扣的。

BLE物理层知识体系图 BLE物理层知识体系 工作频段:2400-2483.5 MHz 40个信道:3个广播信道 + 37个数据信道 调制方式:GFSK(高斯频移键控) 三种PHY模式:1Mbps / 2Mbps / Coded PHY (S2/S8) 跳频机制:抗干扰核心手段 从频段到跳频,每一层都服务于一个目标:可靠、低功耗的无线通信