天线|RF射频
直播中

李蕊

7年用户 222经验值
私信 关注
[问答]

nrf24l01的ACK以及重发与接收的问题如何解决

原子哥,各位大神:   

我在用开发板做那个NRF24L01的实验,我看文档的时候有以下的问题:

1、根据我的理解,发送端发完数据后自动变为接收模式等待ACK,接收端收到数据后自动转为发送ACK。这样对吧?

2、对于发送端没有收到ACK时,会重发数据给接收端。但是如果接收端实际上收到数据了,但是返回的ACK给丢了,那么发送端会重新发送数据包,但是文档中有一句这样的话:



接收方

接收方对新接收数据包的 PID 值与上一包进行比较,如果 PID 值不同,则认为接收的数据包是新数据包。如果 PID 值与上一包相同,则新接收的数据包有可能与前一包相同。接收方必须确认 CRC值是否相等,如果 CRC 值与前一包数据的 CRC 值相等,则认为是同一包数据并将其舍弃。



我对照了英文注解也差不多是这样,那么我说的问题啊,接收到发送端重发的数据包,接收端认为是相同的数据(重发的应该是一样的吧,包括CRC校验?)那么就会把包丢弃,但是这样会重新回发ACK么?

回帖(5)

高文军

2020-5-27 07:03:10
1,是的.

2,是的.
举报

陈畅妮

2020-5-27 07:17:17
各位前辈指导一下呗~
举报

徐静怡

2020-5-27 07:29:20
如果没有收到ack 那么发送端的PID应该不会变化的,还是会发送相同的数据包括PID。我的理解是这样的。
举报

林沧禄

2020-5-27 07:40:23

谢谢原子哥回答,对于第二个问题,意思就是如果收到完全一样的包,接收端丢弃之后,还是会应答一个ACK,没错吧?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分