2、LoRa物理层原理:扩频调制技术(CSS)、啁啾扩频(Chirp Spread Spectrum)原理、扩频因子(SF)与带宽(BW)的关系

好,咱们直接进入正题。LoRa 之所以能在远距离、低功耗的场景下表现那么出色,核心秘密就藏在它的物理层里。说白了,就是它用了一种非常聪明的调制方式——CSS(Chirp Spread Spectrum,啁啾扩频)

我当年第一次接触 LoRa 的时候,心里也犯嘀咕:这玩意儿跟传统的 FSK(频移键控)到底有啥本质区别?后来啃完 Semtech 的 datasheet,又亲手调了几个月的参数,才算真正摸透了它的脾气。今天我就把这点心得掰开了跟你聊聊。

2.1 什么是扩频调制?为什么要扩频?

先问个问题:为什么 Wi-Fi 和蓝牙在开阔地能传个几十米,而 LoRa 能传几公里?

答案就是扩频

传统无线通信,比如 FSK,是把信号能量集中在一个很窄的频带里发射出去。好处是接收端容易解调,坏处是——抗干扰能力差,而且容易被截获。

扩频就不一样了。它把信号的能量“摊开”到一个很宽的频带上。你想想看,同样一杯水,倒进一个窄杯子里水位很高,倒进一个大盘子里就几乎看不见了。扩频就是这个道理。

这样做的好处有两个:

  • 抗干扰强:窄带干扰只能影响扩频信号的一小部分能量,接收端通过解扩还能把信号恢复出来。
  • 隐蔽性好:信号功率谱密度低,淹没在噪声里,别人很难发现你在通信。
💡 我的经验:我在一个工业现场项目里遇到过,电机变频器产生的强电磁干扰把 2.4G 的 Wi-Fi 打得完全没法用。后来换成 LoRa,虽然数据速率慢,但通信一次都没断过。这就是扩频的硬实力。

2.2 啁啾扩频(CSS)——LoRa 的灵魂

CSS 的全称是 Chirp Spread Spectrum。这里的“Chirp”就是“啁啾”,形容鸟叫声。为什么叫这个名字?因为它的载波频率会随时间线性变化,听起来就像鸟叫一样。

具体来说,LoRa 的调制过程是这样的:

  1. 发送端生成一个频率随时间线性上升(或下降)的 Chirp 信号。
  2. 这个 Chirp 信号的起始频率由待发送的数据决定。
  3. 接收端通过检测 Chirp 信号的起始频率来解调数据。

嗯,这里要注意:CSS 不是简单的频率跳变,而是一个连续的、线性的频率扫描。这个特性让它对多普勒频移和频率偏移有天然的容忍度。

我记得有一次做无人机数传测试,飞机飞得很快,多普勒频移很明显。用 FSK 的话,接收端需要不停地做 AFC(自动频率控制),很麻烦。但 LoRa 的 CSS 调制几乎不受影响,因为频率偏移只是让整个 Chirp 信号整体平移了一点,接收端照样能解调出来。

2.3 扩频因子(SF)与带宽(BW)的关系

这是 LoRa 参数配置里最核心的一对关系。搞懂了它们,你就掌握了 LoRa 调优的钥匙。

2.3.1 扩频因子(SF)

扩频因子,英文叫 Spreading Factor,取值范围是 7 到 12。它表示每个数据比特用多少个 Chirp 符号来编码。

举个例子:

  • SF=7:每个比特用 2^7 = 128 个 Chirp 符号编码。
  • SF=12:每个比特用 2^12 = 4096 个 Chirp 符号编码。

你想想看,同样的一个比特,用 128 个符号和用 4096 个符号去表示,哪个更抗干扰?当然是后者。符号越多,冗余越大,接收端越容易从噪声里把信号捞出来。

但代价也很明显:数据速率会降低。因为你要花更多的时间去发送一个比特。

核心公式(简化版)
数据速率 (bps) ≈ SF × (BW / 2^SF)
你看,分母是 2^SF,SF 每增加 1,速率就减半。

2.3.2 带宽(BW)

带宽决定了 Chirp 信号扫频的范围。LoRa 常用的带宽有 125kHz、250kHz 和 500kHz。

带宽越大,Chirp 信号扫得越快,单位时间内能传输的符号就越多,数据速率就越高。但带宽大了,噪声功率也跟着增加(噪声功率 = 带宽 × 噪声功率谱密度),接收灵敏度会下降。

2.3.3 SF 和 BW 的联合影响

我习惯用一个表格来总结它们的关系:

参数组合 数据速率 接收灵敏度 抗干扰能力 典型场景
SF=7, BW=125kHz 高 (~5.5 kbps) 低 (~-123 dBm) 近距离、高速率
SF=12, BW=125kHz 低 (~0.3 kbps) 高 (~-137 dBm) 远距离、穿墙
SF=7, BW=500kHz 最高 (~21.9 kbps) 最低 (~-116 dBm) 最弱 高速数据采集
SF=12, BW=500kHz 中等 (~1.2 kbps) 中等 (~-130 dBm) 中等 平衡型应用

从表格里能看出一个规律:SF 和 BW 共同决定了 LoRa 链路的“距离-速率”折中

我曾经在一个智慧农业项目里踩过坑。客户要求终端设备每 5 分钟上报一次土壤湿度数据,距离要求 3 公里以上。我一开始图省事,用了 SF=7, BW=125kHz,结果到了 1.5 公里就丢包严重。后来改成 SF=12, BW=125kHz,虽然速率慢得可怜(一个数据包要传 2 秒多),但 3 公里稳稳的。这就是教训。

⚠️ 避坑指南:我曾经在同一个网络里混用 SF=7 和 SF=12 的节点,结果发现 SF=7 的节点经常被 SF=12 的节点“淹没”。因为 SF=12 的信号在空中停留时间更长,更容易造成冲突。所以,同一个 LoRa 信道里,尽量使用相同的 SF,或者做好时分调度。

2.4 小结

好了,这一章的内容就这些。总结一下:

  • CSS 是 LoRa 的核心调制技术,通过线性频率扫描实现扩频。
  • 扩频因子 SF 决定了每个比特的冗余度,SF 越大,距离越远,速率越慢。
  • 带宽 BW 决定了扫频范围,BW 越大,速率越快,灵敏度越低。
  • SF 和 BW 需要根据实际场景做权衡,没有“万能配置”。

下一章我会讲 LoRa 的编码与交织技术,看看它是怎么进一步对抗突发干扰的。到时候见。