3、LoRa调制解调原理:Chirp扩频技术、前导码结构、数据包格式解析

聊到LoRa,绕不开的就是它的调制方式。很多人觉得LoRa神奇,距离远、穿透强,功耗还低。其实说白了,核心秘密就藏在Chirp扩频里。我最早接触LoRa时,也被这名字唬住了,后来拆开一看,嗯,没那么玄乎。

3.1 Chirp扩频技术:LoRa的灵魂

Chirp扩频,全称是线性调频扩频。它不像传统FSK那样靠频率跳变传数据,而是用频率连续变化的信号。你可以想象成一声鸟叫,从低音滑到高音,或者反过来。LoRa用的就是这种“啁啾”信号。

为什么选这个?我个人的理解是:抗干扰强,解调门槛低。传统扩频(比如DSSS)需要精确同步伪随机码,硬件复杂。Chirp不一样,它天然对频偏不敏感。我在项目里遇到过,终端设备用廉价晶振,频率漂了上千赫兹,FSK早就解不出来了,LoRa照样能收。

核心参数:扩频因子(SF)

LoRa用扩频因子SF(Spreading Factor)控制数据速率和灵敏度。SF从7到12,每增加1,灵敏度提升约2.5dB,但数据速率减半。

  • SF7:速率最快,约5.5kbps,适合近距离、大数据量
  • SF12:速率最慢,约0.3kbps,但灵敏度可达-137dBm

我建议:别盲目用高SF。有人觉得SF12最远就全用12,结果网络容量直接崩了。你想想看,SF12的空中时间比SF7长了近64倍,一个节点占用的信道资源够64个SF7节点用。

3.2 前导码结构:同步的关键

LoRa数据包开头有一段前导码(Preamble)。它的作用很简单:让接收机锁定信号,完成时间和频率同步

前导码由一组连续的Up-Chirp(频率从低到高)组成。长度可配置,默认是8个符号。我踩过一个坑:当时为了省电,把前导码设成了最小值4个符号。结果网关经常漏收,尤其是信号弱的时候。后来我改成8,问题就解决了。

避坑指南

我曾经在密集城区部署时,发现不同厂商的网关对前导码长度要求不一样。有的网关需要至少6个符号才能稳定解调。所以,前导码长度建议设为8-12个符号,兼容性最好。

前导码之后是同步字(Sync Word)。LoRa用两个字节的同步字区分网络。公共频段用0x34,私有网络可以自定义。我记得有一次,两个不同项目的节点互相串扰,查了半天才发现同步字设成了一样的。改掉之后,世界清净了。

3.3 数据包格式解析:从比特到字节

LoRa数据包分两种模式:显式模式隐式模式。显式模式带包头,隐式模式不带。我99%的情况都用显式模式,除非你知道载荷长度固定不变。

数据包结构如下:

字段 长度 说明
前导码 可配置(默认8符号) 同步用,Up-Chirp序列
同步字 2字节 网络标识,公共/私有
包头(显式模式) 4字节 含载荷长度、CRC、编码率
包头CRC 2字节 校验包头完整性
载荷 1-255字节 实际数据
载荷CRC 2字节(可选) 校验载荷完整性

这里有个细节:包头里的编码率(CR)。LoRa用4/5到4/8的编码率,CR越大,冗余越多,抗干扰越强。我一般设4/5,信号差的地方用4/8。但要注意,CR=4/8时,有效数据速率会降低一半。

重要提醒

载荷长度不是你想设多少就多少。LoRaWAN标准限制了最大载荷:

  • EU868频段:最大51字节(SF7)到242字节(SF12)
  • US915频段:最大11字节(SF7)到222字节(SF12)

我见过有人把载荷塞到200多字节,结果SF7下空中时间暴增,网关直接丢包。记住:LoRa不是用来传大包的,单包控制在20字节以内最稳妥。

3.4 调制解调流程:从发射到接收

发射端流程很简单:

  1. 数据经过CRC计算,加上包头
  2. 进行编码(FEC前向纠错)
  3. 交织(Interleaving),打散比特顺序,抗突发干扰
  4. 映射成Chirp符号,调制发射

接收端反过来:

  1. 检测前导码,完成同步
  2. 解调Chirp符号,恢复比特流
  3. 解交织、解码、CRC校验
  4. 输出载荷数据

这里有个关键点:解调时,接收机需要知道SF和带宽(BW)。如果设错了,完全解不出来。我建议在系统设计时,把SF和BW固定下来,别让终端动态切换。否则网关那边要同时解多个SF,复杂度飙升。

个人经验总结

做LoRa网络容量评估时,很多人只算数据速率,忽略了调制参数的影响。我习惯用这个公式估算单节点空中时间:

ToA = (2^SF / BW) * (PreambleLen + PayloadSymbols)

其中PayloadSymbols跟SF、CR、载荷长度都有关。算出来之后,你就能知道一个节点占用了多少信道时间。网络容量,说白了就是所有节点空中时间的总和不能超过信道可用时间。

嗯,关于调制解调原理,今天就聊这么多。下一章我会讲LoRaWAN的MAC层机制,包括信道接入、确认重传这些实战内容。到时候再细聊。