LoRa数据帧结构是一种针对低功耗、远距离传输优化的特殊包结构,由前导码、同步字、可选的帧头、有效载荷和可选的循环冗余校验(CRC)五部分组成;前导码(Preamble)由一系列可编程长度的上行调制符号构成,用于接收端同步和检测信号;同步字(Sync Word)是一个可配置的识别字节,用于区分不同LoRa网络;可选的帧头(Header)包含有效载荷长度、编码率和CRC存在性等信息,在显式模式下使用以增强灵活性,而在隐式模式下则由发送和接收端预先约定;有效载荷(Payload)部分包含实际传输的数据内容,最大可支持256字节;最后的CRC校验位用于检测数据传输过程中的错误,确保通信可靠性;整个数据帧设计充分体现了LoRa技术在带宽效率与能量消耗间的精妙平衡,适应各种复杂环境下的长距离低功耗物联网应用场景。
LoRa(Long Range)是一种基于扩频调制技术的低功耗广域网(LPWAN)通信协议,其数据帧结构分为物理层(PHY)和MAC层(LoRaWAN协议)两部分。以下从物理层结构、MAC层规范、上下行帧差异及控制字段含义等方面进行详细解析。
一、物理层(PHY)帧结构
LoRa物理层帧由前导码(Preamble)、报头(Header)、载荷数据(Payload)和CRC校验码四部分组成。
1.前导码(Preamble)
作用:用于接收端与发射端的信号同步,由一系列未经调制的UpChirp和DownChirp信号组成。
配置:长度可编程,范围0至65536个符号。例如,在US902-928频段,默认前导码长度为8个符号,实际发送时可能扩展为12个符号以增强同步稳定性。
组成:包含可变前导码、LoRa帧同步字(Sync Word)和帧起始分隔符。同步字用于区分不同代际的LoRa模组(如一代和二代),需在设备间统一配置以避免通信异常。
2.报头(Header)
显式模式(Explicit Header):当扩频因子(SF)≠6时启用,包含以下信息:
3.有效载荷长度(字节数);
纠错码率(CR):如4/8码率,用于提升抗干扰能力;
CRC校验标志:指示是否对载荷进行16位CRC校验。
隐式模式(Implicit Header):当SF=6时启用,省略报头字段以提升传输效率,要求接收端预知载荷长度和编码参数。
报头CRC(PHDR_CRC):校验报头完整性,仅在显式模式下存在。
4.载荷数据(Payload)
内容:实际传输的应用程序或网络层数据,长度可变,最大由区域规范限制(如EU863-870频段最大为243字节)。
纠错与加密:支持前向纠错(FEC)和AES-128加密,确保数据完整性和安全性。
CRC校验码
可选性:仅在显式模式且报头中启用CRC标志时附加,用于校验载荷数据。
上行帧要求:根据LoRaWAN规范,上行帧必须包含CRC字段,而下行帧可能省略。
二、MAC层(LoRaWAN)帧结构
MAC层帧基于LoRaWAN协议,由MAC头(MHDR)、MAC负载(MACPayload)和消息完整性码(MIC)组成。
1.MAC头(MHDR)
字段结构:
位域 | MType(3位) | RFU(3位) | Major(2位) |
---|
功能:
MType:定义消息类型,如入网请求(Join-Request)、确认数据帧(Confirmed Data)等。
Major:指定协议主版本号(如LoRaWAN 1.0或1.1),影响后续字段解析。
2.MAC负载(MACPayload)
组成:
帧头(FHDR):包含终端地址(DevAddr)、帧控制(FCtrl)、帧计数器(FCnt)和帧选项(FOpts)。
端口(FPort):区分应用数据与MAC命令(FPort=0时FRMPayload仅含MAC命令)。
帧负载(FRMPayload):加密后的应用数据,长度由区域规范限制。
帧头(FHDR)详解:
DevAddr:4字节终端短地址,由网络服务器分配。
FCtrl:1字节控制字段,包含自适应数据速率(ADR)、确认(ACK)、帧挂起(FPending)等标志位(详见下文“控制字段”部分)。
FCnt:2字节帧计数器,用于跟踪上行(FCntUp)和下行(FCntDown)数据帧数量。LoRaWAN 1.1引入双计数器机制,分别由网络服务器和应用服务器管理。
FOpts:0-15字节的MAC命令字段(如链路自适应指令),与FRMPayload互斥。
3.消息完整性码(MIC)
作用:通过AES-128算法生成4字节校验码,确保帧完整性和防篡改。
计算方式:基于B0/B1块(含DevAddr、FCnt、方向位等参数)加密后截取部分结果。
三、上行与下行帧结构差异
物理层差异:
CRC校验:上行帧必须包含CRC,而下行帧可省略。
同步模式:上行帧默认使用显式报头,而下行帧可能采用隐式模式(如信标帧)。
MAC层差异:
FCtrl字段:
上行帧:包含ADRACKReq(请求速率自适应)和ACK(确认请求)位。
下行帧:包含FPending(数据挂起)位,指示网关有待发数据,要求终端快速开启接收窗口。
帧计数器:上行使用FCntUp,下行使用FCntDown;LoRaWAN 1.1进一步细分NFCntDown(MAC指令)和AFCntDown(应用数据)。
负载长度:上行帧负载通常更长(如包含传感器数据),而下行帧可能仅含确认或控制指令。
四、控制字段(FCtrl)详解
上行帧FCtrl结构:
位 | 7(ADR) | 6(ADRACKReq) | 5(ACK) | 4(RFU) | 3-0(FOptsLen) |
---|
ADR:启用自适应数据速率,网络动态优化终端速率和发射功率。
ADRACKReq:请求网络更新ADR参数(如信号质量恶化时)。
ACK:指示需对已确认帧进行应答。
下行帧FCtrl结构:
位 | 7(ADR) | 6(RFU) | 5(ACK) | 4(FPending) | 3-0(FOptsLen) |
---|
FPending:仅用于下行,指示网关有更多数据待发送,要求终端尽快响应。
五、扩展特性
扩频因子(SF)与速率权衡:SF越大(6-12),传输距离越远,但速率越低。
安全机制:物理层CRC与MAC层MIC结合,配合AES-128加密,提供端到端安全。
网络容量:单个网关支持数千节点,通过动态速率和信道跳频(FHSS)降低冲突。
LoRa数据帧通过分层设计兼顾物理层可靠性与MAC层灵活性。物理层以CSS调制和可配置帧结构实现远距离通信;MAC层通过FCtrl字段、双计数器和安全机制优化网络管理与能效。理解帧结构对于解决设备互联、速率适配和抗干扰问题至关重要。