2、LoRa物理层原理:扩频调制技术(CSS)、啁啾扩频(Chirp Spread Spectrum)原理、扩频因子(SF)与带宽(BW)的关系
好,咱们直接进入正题。LoRa 之所以能在远距离、低功耗的场景下表现那么出色,核心秘密就藏在它的物理层里。说白了,就是它用了一种非常聪明的调制方式——CSS(Chirp Spread Spectrum,啁啾扩频)。
我当年第一次接触 LoRa 的时候,心里也犯嘀咕:这玩意儿跟传统的 FSK(频移键控)到底有啥本质区别?后来啃完 Semtech 的 datasheet,又亲手调了几个月的参数,才算真正摸透了它的脾气。今天我就把这点心得掰开了跟你聊聊。
2.1 什么是扩频调制?为什么要扩频?
先问个问题:为什么 Wi-Fi 和蓝牙在开阔地能传个几十米,而 LoRa 能传几公里?
答案就是扩频。
传统无线通信,比如 FSK,是把信号能量集中在一个很窄的频带里发射出去。好处是接收端容易解调,坏处是——抗干扰能力差,而且容易被截获。
扩频就不一样了。它把信号的能量“摊开”到一个很宽的频带上。你想想看,同样一杯水,倒进一个窄杯子里水位很高,倒进一个大盘子里就几乎看不见了。扩频就是这个道理。
这样做的好处有两个:
- 抗干扰强:窄带干扰只能影响扩频信号的一小部分能量,接收端通过解扩还能把信号恢复出来。
- 隐蔽性好:信号功率谱密度低,淹没在噪声里,别人很难发现你在通信。
2.2 啁啾扩频(CSS)——LoRa 的灵魂
CSS 的全称是 Chirp Spread Spectrum。这里的“Chirp”就是“啁啾”,形容鸟叫声。为什么叫这个名字?因为它的载波频率会随时间线性变化,听起来就像鸟叫一样。
具体来说,LoRa 的调制过程是这样的:
- 发送端生成一个频率随时间线性上升(或下降)的 Chirp 信号。
- 这个 Chirp 信号的起始频率由待发送的数据决定。
- 接收端通过检测 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 公里稳稳的。这就是教训。
2.4 小结
好了,这一章的内容就这些。总结一下:
- CSS 是 LoRa 的核心调制技术,通过线性频率扫描实现扩频。
- 扩频因子 SF 决定了每个比特的冗余度,SF 越大,距离越远,速率越慢。
- 带宽 BW 决定了扫频范围,BW 越大,速率越快,灵敏度越低。
- SF 和 BW 需要根据实际场景做权衡,没有“万能配置”。
下一章我会讲 LoRa 的编码与交织技术,看看它是怎么进一步对抗突发干扰的。到时候见。