加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

如何理解LoRa中的扩频因子

10/21 11:55
545
阅读需 4 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

在之前的文章中,我了解到,LoRa的扩频通信中,其基本的一个符号是一个chirp,也就是一个线性调频,从时域和频域上来观察,就像下面图中展示的样子:

从频域上更容易理解,也就是我们想发送一个符号,就发送一个变化的频率信号。假设我们的带宽选择125kHz,也就是BW = 125kHz。那么我们发射的信号就是一个频率从0到125kHz,一步一步变化上去的信号。

那么这个变化的频率,它的步进是多少呢?假设我们定义SF=7,也就是我们需要讲125kHz的带宽进行128等分,这样频率从0扫到125kHz的话,就需要进行128步。在BW= 125kHz的带宽上,我们时域上的扫频间隔为频率的倒数,也就是8us。

因此,如果我们按照带宽BW= 125kHz,SF = 7的扩频因子,发送一个线性调制信号,就要经过128步的频率增加,每一步所花的时间是8us,一共需要128*8us= 1.024ms。

从上面的推理可以看出,SF越大,我们发送一个符号的时间就越长,所以我们的通信速率就越慢。我们以SF=7为例,看一下,符号是如何被调制到射频上去的。

如上图,在SF=7的情况下,我们把频率分为了128个台阶,接下来我们来定义符号。对于符号0,就用从频率f0开始,频率一步一步的增加,一直增加到f127的一个线性频率变化表示。对于符号1,就用从频率f1开始,频率一步一步的增加,一直增加到f127,再回到f0为止的线性频率变化来表示。

以此类推,我们看到图中每个symbol符号,都可以表示成一个唯一的,从起始频率开始,扫过整个带宽的频率变化信号。这样一来,我们就可以把0-127所表示的符号,通过一个变化的频率进行发送了。接下来继续看一下,如何将原始数据转换到Lora的一帧数据中。下图是以SF=8为例的

上图第二行为原始数据的二进制码,这里要注意,我们在lora调制之前,加入了前向纠错码来提高数据的可靠性传输,也就是我们可以增加多个冗余的bit值,当传输过程中有一个bit翻转,我们可以把这个翻转的bit找出来,并修正他。

这样的前向纠错机制,避免了我们传输过程中受到干扰,需要重传的问题。CR=4/5,也就是每4个bit的数据,增加一个bit的冗余。我们原始的32bit就被扩展为了40bit。这40bit是我们的lora数据帧的payload部分。lora的一帧数据还包括前导码和CRC部分。

其中前导码是多个线性调频的升频,这个符号是固定的,但是个数可以自定义,主要用来做时间同步,唤醒,频率漂移等校准等,具体不详。随后,40个bit的数据按照SF=8,也就是一个字节作为一个符号进行发送,最后是两个符号长度的CRC校验

相关推荐

电子产业图谱

多年硬件从业经验,专注分享从研发到供应链,再到精益制造过程中的经验和感悟!