求助 NRF24L01数据手册中的ACK丢失问题,能否自动处理?
本人在使用NRF时,发现通信可靠度测试时会在100中发生3-5次,一方接收一方发送,而接收端判断接收正确,而发送端则判断发送错误的情况。
详细看了看数据手册,找到了病因:怀疑是由以下的ACK丢失的情况产生的。
虽然数据手册提供了这样的时序图,但是没有说明芯片是否提供了解决此问题的机制,
在此种情况下,接收端会在传输端未确认ACK发送完成前确认接受完成。那么其 DL 代表
接收端已认为接收完成,那么接收端是否还会继续接受一次把ACK给确定的发出去?
若是不能,则由于ACK的丢失,一方接收完成另一方发送失败的情况就必然发生了?
请问,这样的情况如何避免??
数据手册还提供了这样一个图:
显然这是丢失ACK处理图,由于ACK传输没有重传机制,所以ACK帧虽然短小,传输失败的概率还是有的,
值得注意的是:UL1* 和UL2*代表什么意思?是代表重新配置接收?
还有DLDLIRQ的差别是什么?DL代表接收FIFO已满?DLIRQ代表接收完成ACK发送也完成?
不得而知。
求了解的人,鉴定一下?
新手上路,发点求助;四眼望处,依然无助。。。{:sad:} 无助···{:sad:}{:sad:} NRF24L01作为监听模式,它是怎么监听的呢。 hffdxh 发表于 2013-4-13 15:24 static/image/common/back.gif
NRF24L01作为监听模式,它是怎么监听的呢。
这个类似于硬件处理的接收,应该是连续接收,断点发射,接收之后读码译码校验CRC,之后发出中断 这个问题我算是基本解决,可以尝试采用发送接收端均使用IRQ的低为接收成功,发送成功的标志,然后就可以自动处理此类事情。另外这里的程序结构应有所变化,主要是CE拉低的时刻,遇到同样问题的同学可以研究一下,祝你们成功! 楼上的,我发现发送20次后收发时间就没那么稳定了,发送会时间变长,接收有时候也会变长,你遇到过没有? 数据帧不会重复接收,前导码里有帧序号。24L01接收到重复帧会返回ACK,但是不通知单片机。
无线通信本身就存在不确定性。 channe 发表于 2013-5-2 20:40 static/image/common/back.gif
数据帧不会重复接收,前导码里有帧序号。24L01接收到重复帧会返回ACK,但是不通知单片机。
无线通信本身就 ...
但是同一个位置不动,每次过20次后就发生这种情况,这个应该不叫不确定性了吧? lanmanck 发表于 2013-5-2 20:36 static/image/common/back.gif
楼上的,我发现发送20次后收发时间就没那么稳定了,发送会时间变长,接收有时候也会变长,你遇到过没有? ...
有,但是这个与次数无关,是某一次传输的问题。总之这个传输成功的时间并不是一个确定的值。对接时间可能会长会短。最好的办法是搞超时重传。 channe 发表于 2013-5-2 20:40 static/image/common/back.gif
数据帧不会重复接收,前导码里有帧序号。24L01接收到重复帧会返回ACK,但是不通知单片机。
无线通信本身就 ...
那也就是说不能指望有百分之百的通信成功,唯一可以确定的就是用足够的重传覆盖错误的概率,达到最终的通信成功? achieveIEEE 发表于 2013-5-3 09:45 static/image/common/back.gif
那也就是说不能指望有百分之百的通信成功,唯一可以确定的就是用足够的重传覆盖错误的概率,达到最终的通 ...
请问你现在的发送和接收超时一次是多长时间?我从20ms一直到200ms都试过,没有合适的结论。
另外跳频方面你做的怎么样?有无相关资料? lanmanck 发表于 2013-5-3 09:58 static/image/common/back.gif
请问你现在的发送和接收超时一次是多长时间?我从20ms一直到200ms都试过,没有合适的结论。
另外跳频方面 ...
跳频传输我做的似乎还不如不跳频,传输连接速度太慢。
给你个办法:你用软件测试一下传输的时间。我成功传输的平均时间大致为20ms,那么传输失败依据你上位机的要求而定,一般限制在100ms内。这样的话,等你重传的时候能够接得上,这次传输就OK了。
但是,毕竟传输帧长和传输距离有很大相关度,如果帧长,则会增大差错率,也就是传输事件增加,这时就需要提升一下超时的时间了,一般控制在成功时间的2-3倍、应该是问题不大。
页:
[1]