目录
- 1 前言
- 2 CR与长交织
- 3 小结
1 前言
在使用Semtech的第三代LoRa芯片(LR11xx系列)配置参数时,可能会注意到参数CR多出了Long Interleaver参数选项,截取lr11xx_driver代码片段如下:
/*!
@brief LoRa Coding Rate configurations
*/
typedef enum
{
LR11XX_RADIO_LORA_NO_CR = 0x00, //!< No Coding Rate
LR11XX_RADIO_LORA_CR_4_5 = 0x01, //!< Coding Rate 4/5 Short Interleaver
LR11XX_RADIO_LORA_CR_4_6 = 0x02, //!< Coding Rate 4/6 Short Interleaver
LR11XX_RADIO_LORA_CR_4_7 = 0x03, //!< Coding Rate 4/7 Short Interleaver
LR11XX_RADIO_LORA_CR_4_8 = 0x04, //!< Coding Rate 4/8 Short Interleaver
LR11XX_RADIO_LORA_CR_LI_4_5 = 0x05, //!< Coding Rate 4/5 Long Interleaver
LR11XX_RADIO_LORA_CR_LI_4_6 = 0x06, //!< Coding Rate 4/6 Long Interleaver
LR11XX_RADIO_LORA_CR_LI_4_8 = 0x07, //!< Coding Rate 4/8 Long Interleaver
} lr11xx_radio_lora_cr_t;
那么长交织与短交织的区别是什么?长交织有什么优势吗?接下来我们详细了解一下这个参数。
2 CR与长交织
上图是一个LoRa package进入射频芯片后的数据处理流程。先介绍一下参数CR,它是code rate,即编码速率的英文缩写。一个数据包产生时,调制器通过纠错编码机将前向纠错编码(Forward Error Correction,FEC)添加到数据包字节中,添加的规则是将有效载荷数据每个字节分成半字节(4比特一组),然后,根据编码速率配置,在1到4冗余纠错位之间选择并追加到每个半字节后。由此通过纠错编码后,产生的(4+CR)位比特段会被存储到交织器的存储阵列中。交织器(Interleaver)有(4+CR)列和SF行。一旦交织器满了,它的内容将编码到码元(symbol)上,每个码元(symbol)都带有SF位。因此,交织器内有(4+CR)*SF 比特,独立于扩频因子SF被编码到4+CR码元上。经过此过程的编码调制后,数据包就会被发出。
由此可见,交织器本身就是为了提高数据抗干扰的鲁棒性。更高的编码率提供了更好的抗扰性,但需要更长的传输时间。在正常情况下,CR4_5提供了最佳折中。
那么长短交织的区别是:
- 使用短交织时,当干扰信号持续时间大于4个symbols(取决于CR值),本包将会丢失。而使用长交织时,当干扰信号持续时间是本包总时间的5%~15%(取决于CR值),本包将会丢失。比较来看,长交织抗干扰时间更久,即更强。
- 在使用相同编码率(比如CR4_5和CR_LI_4_5)条件下,使用长交织时的ToA时间小于或者等于使用短交织时的时间,这也意味着功耗可能会更低。
但并不是每个LoRa芯片都具有长交织选项,哪些有长交织呢?如下表。
Coding rate | Gen.1(SX127x) | Gen.2(SX126x) | Gen.3(LR11xx) |
---|---|---|---|
CR4_5 | Yes | Yes | Yes |
CR4_6 | Yes | Yes | Yes |
CR4_7 | Yes | Yes | Yes |
CR4_8 | Yes | Yes | Yes |
CR_LI_4_5 | No | No | Yes |
CR_LI_4_6 | No | No | Yes |
CR_LI_4_8 | No | No | Yes |
3 小结
可得出的结论是:(1)长交织比短交织抗环境干扰能力更强;(2)使用长交织并不会增加ToA时间,有些参数组合下甚至时间更短,也就是功耗会更低。