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 调制解调流程:从发射到接收
发射端流程很简单:
- 数据经过CRC计算,加上包头
- 进行编码(FEC前向纠错)
- 交织(Interleaving),打散比特顺序,抗突发干扰
- 映射成Chirp符号,调制发射
接收端反过来:
- 检测前导码,完成同步
- 解调Chirp符号,恢复比特流
- 解交织、解码、CRC校验
- 输出载荷数据
这里有个关键点:解调时,接收机需要知道SF和带宽(BW)。如果设错了,完全解不出来。我建议在系统设计时,把SF和BW固定下来,别让终端动态切换。否则网关那边要同时解多个SF,复杂度飙升。
个人经验总结
做LoRa网络容量评估时,很多人只算数据速率,忽略了调制参数的影响。我习惯用这个公式估算单节点空中时间:
ToA = (2^SF / BW) * (PreambleLen + PayloadSymbols)
其中PayloadSymbols跟SF、CR、载荷长度都有关。算出来之后,你就能知道一个节点占用了多少信道时间。网络容量,说白了就是所有节点空中时间的总和不能超过信道可用时间。
嗯,关于调制解调原理,今天就聊这么多。下一章我会讲LoRaWAN的MAC层机制,包括信道接入、确认重传这些实战内容。到时候再细聊。