新闻  |   论坛  |   博客  |   在线研讨会
LoRa关键参数【转】
电子禅石 | 2019-02-15 10:51:11    阅读:23626   发布文章

LoRa关键参数(扩频因子,编码率,带宽)的设定及解释

扩频因子(SF);

编码率(CR);

信号带宽(BW);

LoRa信号带宽BW、符号速率Rs和数据速率DR的关系;

LoRa信号带宽、扩频因子和编码率的设定。

针对特定应用,开发人员可通过调制扩频因子、调制带宽、纠错编码率这三个关键设计参数,对LoRa调制解调技术进行优化。。

1.扩频因子(SF)

LoRa采用多个信息码片来代表有效负载信息的每个位,扩频信息的发送速度称为符号速率(Rs),而码片速率与标称的Rs比值即为扩频因子(SF,SpreadingFactor),表示了每个信息位发送的符号数量。

LoRa扩频因子取值范围: 

1550200376648253.png

1550200456791327.png

注意:因为不同的SF之间为正交关系,因此必须提前获知链路发送端和接收端的SF。另外,还必须获知接受机输入端的信噪比。在负信噪比条件下信号也能正常接收,这改善了LoRa接受机的灵敏度,链路预算及覆盖范围。

理解扩频因子的概念:

通俗的说 扩频时你的数据每一位都和扩频因子相乘,例如有一个1 bit需要传送,当扩频因子为1时,传输的时候数据1就用一个1来表示,扩频因子为6时(有6位)111111,这111111就来表示1,这样乘出来每一位都由一个6位的数据来表示,也就是说需要传输总的数据量增大了6倍。 
这样扩频后传输可以降低误码率也就是信噪比,但是在同样数据量条件下却减少了可以传输的实际数据,所以,扩频因子越大,传输的数据数率(比特率)就越小。。。

Lora扩频因子的使用:

当扩频因子SF为6时,LoRa的数据传输速率最快,因此这一扩频因子仅在特定情况下使用。使用时需要配置LoRa芯片SX127x:

●在RegModemConfig2,将SpreadingFactor设为6

●将报头设置为隐式模式

●在寄存器地址(0x31)的2至0位写入0b101

●在寄存器地址(0x37)写入0x0C

2.编码率(CR)

编码率,是数据流中有用部分的比例。

编码率(或信息率)是数据流中有用部分(非冗余)的比例。也就是说,如果编码率是k/n,则对每k位有用信息,编码器总共产生n位的数据,其中n-k是多余的。

LoRa采用循环纠错编码进行前向错误检测与纠错。使用该方式会产生传输开销。

每次传输产生的数据开销如下:

1550200971682317.png

在存在干扰的情况下,前向纠错能有效提高链路的可靠性。由此,编码率(抗干扰性能)可以随着信道条件的变化而变化,可以选择在报头加入编码率以便接收端能够解析。

3.信号带宽(BW)

增加BW,可以提高有效数据速率以缩短传输时间,但是以牺牲部分接受灵敏度为代价。对于LoRa芯片SX127x,LoRa带宽为双边带宽(全信道带宽),而FSK调制方式的BW是指单边带宽。

LoRa带宽选项:

1550201167683318.png

1550201167147176.png

注意:较低频段(169MHz)不支持250K和500KHz的BW

4.LoRa信号带宽BW、符号速率Rs和数据速率DR的关系

LoRa符号速率Rs可以通过以下公式计算:

Rs=BW/(2^SF)

每Hz每秒发送一个码片。

LoRa数据速率DR可以通过以下公式计算:

DR=SF*( BW/2^SF)*CR

5.LoRa信号带宽、扩频因子和编码率的设定

LoRaWAN主要使用了125kHz信号带宽设置,但其他专用协议可以利用其他的信号带宽(BW)设置。改变BW、SF和CR也就改变了链路预算和传输时间,需要在电池寿命和距离上做个权衡。

6.空中速率

所谓空中速率表示LoRa/FSK 无线(在空气中的)通讯速率,也叫空中波特率,单位bps,空中速率高,则数据传输速度快,传输相同数据的时间延迟小,但传输距离会变短。
空中速率和距离、延迟的关系如下图:

6.png

   tLoRaSettings LoRaSettings =
   {
      870000000,      // RFFrequency
      20,             // Power  
      8,              // SignalBw [0: 7.8 kHz, 1: 10.4 kHz, 2: 15.6 kHz, 3: 20.8 kHz, 4: 31.2 kHz,
                      // 5: 41.6 kHz, 6: 62.5 kHz, 7: 125 kHz, 8: 250 kHz, 9: 500 kHz, other: Reserved] 
      7,              // SpreadingFactor [6: 64, 7: 128, 8: 256, 9: 512, 
                      // 10: 1024, 11: 2048, 12: 4096  chips]
      2,              // ErrorCoding [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8]
      true,           // CrcOn
      false,          // ImplicitHeaderOn
      1,              // RxSingleOn
      0,              // FreqHopOn
      4,              // HopPeriod
      100,            // TxPacketTimeout
      100,            // RxPacketTimeout
      4               // PayloadLength
   };

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
属于自己的技术积累分享,成为嵌入式系统研发高手。
推荐文章
最近访客