LoRa数据包结构分析及数据传输时间的计算

LoRa数据包结构和数据格式的分析

LoRa有两种数据包格式:显示和隐式
其中显示数据包的报头较短,主要包含字节数、编码率及是否使用CRC等信息。

LoRa数据包包含:

  • Preamble(前导码)
  • Header(可选类型的报头)
  • Payload(数据有效负载)

如下图:
 


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

数据包有效负载Payload是一个长度不固定的字段,实际长度和编码率CR则可以由显式Header模式下的报头制定或者由隐式模式下在寄存器的设置来决定。。另外,还可以选择在Payload中包含CRC。。。Payload是在FIFO中读写。。。


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

说明:LoRa应用学习站通过公开互联网收集、整理并转载有关LoRa及物联网应用解决方案,以供广大LoRa应用开发者和爱好者共同学习交流和参考运用到实际生产生活中。本站所有转载的文章、图片、音频、视频等资料的版权归版权所有人所有并衷心感谢您的付出,由于本站采用的非本站原创文章及图片等内容无法一一联系确认版权者,如果本网所选内容的文章原创作者认为其作品不宜放在本站,请及时通过以下留言功能通知我们采取适当措施,避免给双方造成不必要的经济损失。如果您希望保留本文在LoRa学习站,但希望文章末尾提供对作者的致谢或者产品、网站交换链接的,也请将需求写入以下留言栏中,谢谢您的支持。让我们共同努力,打造万物互联的未来美好生活!

您的留言或需求: