重试发送数据包直到交付

时间:2013-03-29 13:04:28

标签: c++ c arduino

我正在使用带有NRF24l01 +芯片的Arduino。不幸的是,Mirf库的“发送”方法并没有告诉你它是否成功。

此外,有这样的循环:

Mirf.send(data);

while(Mirf.isSending()){
 //Wait.
}

即使数据包尚未发送,也只是恢复。现在,看起来我不必重新发明轮子,因为阅读nrf24l01 datasheet (page 27/78)

  

增强型ShockBurst™具有自动数据包事务处理功能   用于轻松实现可靠的双向数据链路。   [snip]自动数据包事务处理的工作原理如下:

     
      
  1. 您可以通过从PTX传输数据包来开始交易   到PRX。增强型ShockBurst™会自动将PTX设置为接收模式以等待ACK数据包。
  2.   
  3. 如果PRX,Enhanced ShockBurst™收到数据包   自动装配和    在返回接收模式之前,将确认包(ACK包)发送到PTX。
  4.   
  5. 如果PTX没有立即收到ACK数据包,则增强   ShockBurst™自动重新传输原始数据包   在可编程延迟之后,将PTX设置为接收模式以等待   对于ACK数据包。
  6.   

启用此功能(数据表第57页): enter image description here

看起来我需要写一些像00011111这样的东西来注册芯片上的0x01。我有什么想法可以实现这个目标吗?

1 个答案:

答案 0 :(得分:1)

使用Mirf::writeRegister()功能。