查看: 842|回复: 0

[技术交流] SX126X系列芯片通信时发送完成中断和接收完成中断时序问题

[复制链接]

67

主题

100

帖子

570

积分

利尔达员工

Rank: 9Rank: 9Rank: 9

积分
570
发表于 2020-10-17 13:16:49 | 显示全部楼层 |阅读模式
  SX126X系列芯片,如模组LSD4RF-2R822N30模组,使用的是SX1262芯片。在实际做通信时,设定好发射完成和接收完成的功能映射,在发射完成时会产生一个中断,接收完成也会产生一个中断。

  2个设备,一个定义为发射端,一个定义为接收端。发射端在发射完成后,可以在DIO1上检测到一个高电平跳变,示意着数据发送完成。接收端便能在DIO1上也检测到一个高电平跳变,示意着数据接收完成。

  从我们的直观理解上,发射端产生的发射完成中断应该是超前于接收端产生的接收中断。但是,如果实际去用仪器抓取两个设备的DIO1脚的电平变化会发现,某些配置下会出现接收中断超前了发射中断。

  如上图,蓝色是发射端的DIO1,黄色是接收端的DIO2,从直观看,好像是接受完成超前了发射完成。但是事实上这是不可能的,因为发射如果都没发射完成,接收自然不可能提前得到数据。

  对于这个现象,实际上是发射端的DIO1的跳变并不是真正的发射完成的时刻。SX126X系列还有一个引脚叫BUSY引脚,他主要是用于指示芯片是否空闲。

  我们对发射端的BUSY引脚进行检测。下图蓝色为发射端的BUSY引脚,黄色依旧是接收端的DIO1引脚。

  我们会发现BUSY进行了多次变化,向下跳变的位置刚好与DIO1的跳变吻合。我们回头来下发射的过程,发射指令通过SPI下达到芯片后,芯片会先启动PA,然后再进行数据的发射。

  同样,在数据发射完成后,会有一个关闭PA的过程,正是这个过程,令DIO1的跳变产生了延迟。

  实际上在蓝色的波形上,第一个向上跳变其实数据就已经发送完成了。这个时候PA正要关闭,等PA关闭了,BUSY向下跳变了的同时产生了DIO1的中断。

  这样看,发射完成实际上是超前接收完成的。

  而不同配置下,情况还有区别。

  前面的SF=5,BW=500的情况下,这个配置状态下速率是比较快的。而上面这张图是SF=7,BW=125可以观察到接收中断和发射完成中断很接近。这个配置的速率是比之前慢的。

  而这张图是SF=9,BW=125的情况,发射完成中断是远超前于接收中断的,这个速率比之前更慢。由此我们可以推测,速率快的情况下,接收端的解析的更快,由此参数接收中断的速度更快,更接近真实的发射完成的时刻,但依旧是滞后的,只是从DIO1的中断来看,在速度快的情况下,出现接收的DIO1超前了发射的DIO1。而速率慢的情况下,接收中断参数边慢了,所以离真实的发射完成更远,在DIO1上的表现则是趋近并逐渐远离。

  因此,在实际的通信操作中,需要注意的是,在某些配置下,发射完成中断产生会比另一个设备接收中断产生要来的迟一些。在通信的时序上要避免发射完成切入接收之前,接收端提早的开始发送数据了。当然,从最极限的情况下,接收中断超前发射完成中断的时间非常短暂,一般如果重新对接收有一定的处理,是不会发射接收端回数据时发射端还没切入接收,但不排除这种情况的可能性。

  因此,对于这个系列芯片的通信应用,需要知道这个情况的存在和原因,以便如果出现时序上的错误,可以快速定位到问题所在。

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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