搜索
bottom↓
回复: 1

nRF24L01+发送方发送成功但是接受方未收到数据

[复制链接]

出0入0汤圆

发表于 2011-6-23 10:52:25 | 显示全部楼层 |阅读模式
如题,两片nRF24L01+通信,一片发(也就是PTX),一片收(PRX),采用ESB模式,自动ACK。现在遇到一个问题,在某次通信中,PTX产生了TX_DS中断表示发送成功了,但是PRX没产生任何中断,而且RX_FIFO也是空的。快一个星期了,都没想到原因,咨询官方的技术支持,他们也说想不出原因。
    用示波器抓了PRX的VDD_PA和IRQ脚的波形,可以看到在出问题的包的时候,VDD_PA有一个正脉冲,表示PRX确实是发送了ACK的,但是IRQ并没有变化,因此没有中断产生,读取FIFO STATUS寄存器也发现RX_FIFO是空的。
   玩nRF2401P+也1年了,自认对其还是比较了解的,按照datasheet上的信息,倒是有一种情况下会出现这个问题,那就是当前包的PID和上一包的PID相同,因此PRX接收到后认为是上一包发送的ACK对方没有收到而自动重发的,因此回复一个ACK,然后把接收到的包丢掉,也不产生中断。遇到这种情况的情形可能有两种:一是确实PRX接收到了并且回复了ACK,但是PTX没有收到ACK,所以自动重发,二是,在第N包发送成功后,接下来的3个包都丢掉了,第N+4个包的PID和第N个包相同(PID是由两位表示,每次由SPI写TX FIFO加1),并且两个包的CRC也相同,被PRX当做是自动重发的情况而丢掉。 分析一下,排除第一种情况,因为第一种情况的话,PRX的RX FIFO肯定是会有这一包的数据的,事实是RX FIFO是空的,至于第二种情况,首先概率太小,而每次都是在一个固定的地方出现这个问题,说明是在某种条件下一定会出现这个问题,而不是一个丢包的概率问题,其次我也跟踪调试了,在出现这个问题的包和上一个发送成功的包之间并没有丢失的包(PTX没有产生MAX_RT中断),所以应该也不是这个问题。那么基本上可以排除PID导致这个问题了。
   真是百思不得其解,把问题贴出来请大家帮忙想想,会有可能是什么情况导致这个问题,或者有什么好的调试思路。对这个芯片比较了解的同学帮我看看我上面分析的对不对,有没有什么遗漏的地方。谢谢。

出0入0汤圆

发表于 2011-7-30 19:20:03 | 显示全部楼层
不能帮楼主解决问题,我也遇到相同的问题了。但是楼主分析问题很透彻,学习了。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-4 02:48

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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