NRF24L01 PID问题

我在测试的时候遇到一个神奇的现象,

因为是测试,所以PTX和PRX两端都重复发送一些数据。

会出现如下现象:

  • PTX发送端能正常发送数据并收到ACK应答包;
  • 然而PRX端没有收到任何数据,状态寄存器STATUS和缓冲区寄存器FIFO_STATUS也没有任何变化。即使单片机不运行,PTX端收到依然还在正常进行。将PRX端断电PTX才发送失败了。

分析:

  • 就是说,出现如上现象时,PRX端应答PTX了,但是PRX却不认为自己收到有效数据了.
  • 再将发送端数据的第一个字节自增1,PRX就能正常收到数据。
  • 所以初步确定是PRX接收端认为是重复数据副本并被丢弃。

摘自计数书册:

 

 7.3.3.2PID(数据包标识)2位PID字段用于检测接收到的数据包是新的还是重新传输的。PID可防止PRX设备向接收主机单片机多次呈现相同的有效负载。对于通过SPI接收到的每个新数据包,PID字段在TX侧递增。PRX设备使用PID和CRC字段(见第30页的第7.3.5节)来确定数据包是重传输还是新传输。当链路上丢失几个数据包时,PID字段可能等于最后接收到的PID。如果一个包具有与前一个包相同的PID,nRF24L01+将比较来自两个包的CRC和。如果CRC和也相等,最后接收的包被认为是之前接收的包的副本并被丢弃。

 结果:

理论上PID会递增的,递增了接收端就不会被丢了啊,所以PID为啥不增呢?

我也不知道!!!

知道有这个问题,每次发送的数据不一样就能保证CRC变化,就不会被判断重复包而被丢弃。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值