本文主要是介绍SX127X -数据包结构以及数据传输时间,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
LoRa™ 调制解调器采用隐式和显式两种数据包格式。其中,显式数据包的报头较短,主要包含字节数、编码率及是否在数据包中使用循环冗余 (CRC)等信息,数据包格式见下图。
LoRa™ 的数据包包含以下三个组成部分:
- 前导码
- 可选报头
- 数据有效负载
-
1、Preamble
- 前导码用于保持接收机与输入的数据流同步。。作用是提醒接收芯片,即将发送的是有效信号,注意接收,以免丢失有用信号,当前导码发送完毕后,会立即发送有效数据。。
- 默认Preamble数据size为12个符号长度,长度可以根据实际应用扩展(内部变量)。。例如:在接收密集型应用中,为了缩短接收机占空比,可以缩短前导码长度。。实际发送前导码长度范围为6+4 ~ 65535 +4个符号。。。
-
LoRa的接收机会定期检测前导码。。因此接收和发射端前导码长度需一致,如果未知,应将接收机的前导码长度设置为最大值。
2、Header
可以通过操作模式,选择显示/隐式两种Header类型:在RegModemConfig1寄存器上,通过设定ImplicitHeaderModeOn选择。
2.1 显式报头模式
LoRa默认都为显式Header模式,在这种模式下,Header会包含Payload的相关信息,包括:
- Payload长度(byte)
- 前向纠错编码率
- 是否使用CRC(16位)
-
Header按照最大纠错码(4/8)发送,另外Header还包含自己的CRC,接收机可以先Check该项以丢弃无效Header数据包。。
2.2 隐式报头模式
在特定情况下,如果Payload长度、编码率以及CRC为固定值或已知,则可以通过隐式Header模式来缩短发送时间。。该情况下 ,需要手动设置无线链路两端的Payload长度、错误编码率以及CRC。。。
注意:如果扩频因子SF设为6,则只能使用隐式报头模式
3、Payload
- 数据有效负载
数据包有效负载是一个长度不固定的字段,而实际长度和纠错编码率CR则由显式模式下的报头指定或者由隐式模式下在寄存器的设置来决定。另外,还可以选择在有效负载中包含CRC码。Payload是在FIFO中读写 - 低数据速率优化
由于扩频因子较高时数据包的发送时间可能较长,因此可以选择在数据包发送和接收期间提高传输对频率变化的鲁棒性。有效数据速率较低时,可通过LowDataRateOptimize位提高LoRa链路的鲁棒性。当单个符号传输时间超过16毫秒时,必须使用LowDataRateOptimize位。注意:发射机和接收机的LowDataRateOptimize位设置必须一致。 -
4、数据传输时间的计算
由上一节http://blog.csdn.net/HowieXue/article/details/78028881可以得出Rs,则单个LoRa数据包的符号周期Ts:
Ts=1/Rs
其中,LoRa数据包总传输时间,等于前导码传输时间Tpre+数据包传输时间Tpay。前导码传输时间即为:
Tpre = (Npre+4.25)Tpay
其中,Npre表示已设定的前导码长度,(可以读取RegPreambleMsb和RegPreambleLsb寄存器得到),Payload有效负载的时间Tpay取决于所使用的报头模式。。。
计算Payload符号数的公式如下:
因此,总传输时间实际为:
Tpacket = Tpre + payloadSymNb*Tpay
这篇关于SX127X -数据包结构以及数据传输时间的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!