查看: 1017|回复: 0

[技术交流] LoRa模组持续接收功能详解

[复制链接]

67

主题

100

帖子

570

积分

利尔达员工

Rank: 9Rank: 9Rank: 9

积分
570
发表于 2020-9-24 14:18:15 | 显示全部楼层 |阅读模式
  SX127x和SX126x系列的lora模组在接收上都存在着一种模式叫持续接收模式。正常的接收模式,在接收完完整的一包数据后便会退到standby状态。但持续接收并不会。
以下我们以SX1262为例,其对应的模组为LSD4RF-2R822N30。我们看一下SX1262规格书中对接收模式的描述。

  除了特殊功能的listen mode外,共有3种接收模式,细分下其实是2种,一种是单次接收,一种是持续接收。单次接收是每次接收完成边会自动退回到standby状态,单次接收中还可以选择超时时间,超过时间后也会自动回到standby。平时使用中大多数采用单次接收。但当需要连续接收几包数据时,单次接收的回到standby的机制可能就会导致错过后面的数据包。此时便需要使用到持续接收模式。再接收完一包数据后并不会退出接收状态,可以继续接受后面到来的数据。

  我们知道,lora芯片对于数据缓存区有着自己的规则,一块固定大小的区域,由使用者自己规划TX和RX的数据。我们再单次接收中,可以每次进入接收状态时都重置存放空间及起始位置,那么每次我们接收到的数据都是我们设定的固定位置起始。但是持续接收便稍有区别。持续接收,那么接收到的数据便会以我们初始设定的起始位置开始按顺序除非,当达到规划空间的最后的一个字节时,便会重新从起始位置存放。因此,在读取数据时的时候就需要注意地址的偏移。

  我们举个简单的例子。假设我对RX的空间规划为从0x00到0x20,共32个字节区域。我进入持续接收模式,我收到的第一包数据长10字节,便会存放在0x00~0x09。此时我们去读数据只需要设定偏移地址为0x00,读取10字节即可。当我收到第二包数据长20个字节,便会存放在0x0A~0x1D位置。此时我们去读取数据就需要将偏移地址设为0x0A去读取20个字节。

  因此,在持续接收模式中,用户需要格外注意偏移地址,确保读取的数据是对应所需要的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表