2. LoRa物理层调制原理

LoRa 的物理层核心是 Chirp 扩频调制(Chirp Spread Spectrum,CSS)。要理解 LoRa 为什么能在极低信噪比下通信,必须先把“Chirp”这个信号本身看清楚。所谓 Chirp,就是频率随时间线性变化的信号:在一个符号周期 Ts 内,频率从起始频率线性扫到终止频率。LoRa 使用的是“上扫频”Chirp,即频率从低到高线性增加,扫过的频率范围就是带宽 BW。如果频率从 f0 扫到 f0+BW,就完成一次完整扫频;若扫到带宽上边界后“折返”到带宽下边界继续扫,就形成 LoRa 特有的循环移位 Chirp。

LoRa 调制的关键不在“扫频”本身,而在于起始频率的偏移。一个符号携带 SF 个比特,共有 2^SF 种可能的起始相位/频率位置。发送端把待发送的 SF 位数据映射为 Chirp 在带宽内的起始频点,接收端则通过“去 Chirp”(de-chirp)把接收信号与本地参考 Chirp 相乘,将频率偏移转化为一个单频音(tone),再做 FFT 检测峰值位置,从而恢复出符号值。这个过程就是 LoRa 解调的本质:把“频率偏移”变成“频谱峰值位置”。

LoRa Chirp 扩频调制与解调信号链 发送端 SF 位数据 → 起始频点 生成循环移位 Chirp 空中信号 频率线性扫过 BW 受噪声/干扰影响 接收端 本地 Chirp 去扩频 FFT 检测峰值位置 恢复数据 峰值 → 符号值 符号 → SF 位 时间 t 频率 f BW 上扫 Chirp(频率线性增加) 循环移位 Chirp(起始频点不同) 关键参数关系 符号速率 Rs = BW / 2^SF 比特率 Rb = SF × BW / 2^SF × CR 扩频增益 = 10·log10(2^SF) dB 灵敏度 ≈ -174 + 10·log10(BW) + NF + SNR_req SF↑ → 速率↓、灵敏度↑、抗干扰↑ BW↑ → 速率↑、灵敏度↓、抗噪↓

从上面的信号链可以看到,LoRa 的“扩频”并不是把信号带宽简单展宽,而是用 Chirp 的循环移位来承载信息。一个符号的持续时间 Ts = 2^SF / BW,符号速率 Rs = BW / 2^SF。当 SF 增大时,2^SF 指数增长,符号周期变长,每个符号携带的比特数增加,但符号速率下降。这就是 LoRa 中“扩频因子”最直接的作用:用时间换灵敏度。

扩频因子 SF:决定灵敏度与速率的首要参数

扩频因子 SF 通常取 7~12。每增加 1,符号周期翻倍,扩频增益增加约 3 dB,接收灵敏度约改善 2.5~3 dB,但相同带宽下的比特率减半。以 BW=125 kHz 为例:SF=7 时 Ts=1.024 ms,Rs=976.6 sym/s;SF=12 时 Ts=32.768 ms,Rs=30.5 sym/s。若编码率 CR=4/5,则 SF=7 的比特率约为 976.6×7×0.8≈5.47 kbps,而 SF=12 仅约 30.5×12×0.8≈293 bps。可见 SF 的选择直接决定链路是“快而近”还是“慢而远”。

实际工程中,SF 不是越大越好。SF 增大后,符号时间变长,若节点在移动或信道快速变化,长符号会跨越多个相干时间,导致解调性能下降;同时,长符号也意味着更长的空中占用时间,在密集组网中会增加碰撞概率。因此,SF 的选择要结合距离、速率需求、网络容量和移动性综合权衡。

带宽 BW:决定速率与抗噪能力的另一维

带宽 BW 是 Chirp 扫过的频率范围,常见取值 125 kHz、250 kHz、500 kHz。带宽越大,符号速率越高,因为 Rs=BW/2^SF;但接收机噪声带宽也越大,底噪抬升,灵敏度下降。粗略地,带宽每翻一倍,噪声功率增加 3 dB,灵敏度约恶化 3 dB,而速率约提升一倍。所以 BW=500 kHz 适合高速短距场景,BW=125 kHz 适合低速远距场景。需要注意的是,LoRa 的带宽选择还受地区法规限制,例如中国 470~510 MHz 频段对占空比和带宽有明确要求。

编码率 CR:前向纠错带来的可靠性提升

编码率 CR 表示前向纠错码中有效信息比特与总比特的比例,LoRa 常用 4/5、4/6、4/7、4/8。以 4/5 为例,每 4 个信息比特附加 1 个纠错比特,总长 5 位;4/8 则附加 4 个纠错比特。CR 越小(冗余越多),纠错能力越强,但有效速率越低。在比特率公式中,CR 作为乘数出现:Rb = SF × (BW/2^SF) × CR。因此,CR=4/8 相比 4/5,速率下降约 37.5%,但抗突发干扰和抗衰落能力明显增强。实际中,若信道误码率较高,可适当降低 CR 来换取链路稳定性。

参数选择经验:先根据距离和速率需求确定 SF 与 BW 的组合,再用 CR 微调可靠性。例如,远距低速场景可选 SF=12、BW=125 kHz、CR=4/8;近距高速场景可选 SF=7、BW=500 kHz、CR=4/5。每次调整后,应通过实际链路测试观察 RSSI、SNR 和丢包率,而不是仅凭理论计算。

参数对速率与灵敏度的综合影响

把三个参数放在一起看,LoRa 的链路预算可以这样理解:灵敏度由 BW、SF 和 NF 共同决定,近似为 S = -174 + 10log10(BW) + NF + SNR_req。其中 SNR_req 是解调所需的最小信噪比,SF 越大,SNR_req 越低(可低至 -20 dB 左右),因此灵敏度越好。而速率则由 SF、BW、CR 三者共同决定。换句话说,SF 和 BW 决定“能不能收到”,CR 决定“收到后能不能纠对”。三者相互制约,不存在同时最大化速率和灵敏度的配置。

下面给出一个便于对照的参数示例表(以 125 kHz 带宽、CR=4/5 为例,数值为理论计算值,实际受硬件和环境影响会有偏差):

SF 符号周期 Ts 符号速率 Rs 比特率 Rb 扩频增益 典型灵敏度
71.024 ms976.6 sym/s≈5.47 kbps21.1 dB≈-123 dBm
94.096 ms244.1 sym/s≈1.76 kbps27.1 dB≈-129 dBm
108.192 ms122.1 sym/s≈0.98 kbps30.1 dB≈-132 dBm
1232.768 ms30.5 sym/s≈0.29 kbps36.1 dB≈-137 dBm

从表中可以直观看到:SF 每增加 2,符号周期变为原来的 4 倍,比特率约降为 1/4,而灵敏度改善约 6 dB。这个“4 倍时间换 6 dB”的关系,是 LoRa 链路规划中最常用的估算依据。实际部署时,可以先按目标距离和速率选定一组参数,再通过发送测试包、读取接收端 SNR 和丢包率来验证。若 SNR 余量不足,优先提高 SF 或降低 BW;若速率不够,则降低 SF 或增大 BW,并适当调整 CR。

注意:LoRa 的灵敏度提升并非无代价。SF 增大后,单包空中时间显著增加,在 1% 占空比限制下,发送频率必须相应降低。例如 SF=12、BW=125 kHz 时,一个 20 字节的有效载荷空中时间可能超过 1 秒,若法规要求 1% 占空比,则每分钟最多发送约 0.6 次。规划网络时必须把占空比、节点数量和上报周期一起考虑,否则会出现“参数选得很远,但网络容量不够”的问题。

总结来说,LoRa 物理层的 Chirp 扩频机制用循环移位承载信息,用去 Chirp 加 FFT 完成解调;SF、BW、CR 三个参数分别从“扩频增益、噪声带宽、纠错冗余”三个方向影响速率与灵敏度。理解它们之间的定量关系,才能在具体项目中做出合理的链路预算和参数配置,而不是盲目套用默认值。