我正在使用带有NRF24l01 +芯片的Arduino。不幸的是,Mirf库的“发送”方法并没有告诉你它是否成功。
此外,有这样的循环:
Mirf.send(data);
while(Mirf.isSending()){
//Wait.
}
即使数据包尚未发送,也只是恢复。现在,看起来我不必重新发明轮子,因为阅读nrf24l01 datasheet (page 27/78):
增强型ShockBurst™具有自动数据包事务处理功能 用于轻松实现可靠的双向数据链路。 [snip]自动数据包事务处理的工作原理如下:
- 您可以通过从PTX传输数据包来开始交易 到PRX。增强型ShockBurst™会自动将PTX设置为接收模式以等待ACK数据包。
- 如果PRX,Enhanced ShockBurst™收到数据包 自动装配和 在返回接收模式之前,将确认包(ACK包)发送到PTX。
- 如果PTX没有立即收到ACK数据包,则增强 ShockBurst™自动重新传输原始数据包 在可编程延迟之后,将PTX设置为接收模式以等待 对于ACK数据包。
醇>
启用此功能(数据表第57页):
看起来我需要写一些像00011111这样的东西来注册芯片上的0x01。我有什么想法可以实现这个目标吗?
答案 0 :(得分:1)
使用Mirf::writeRegister()
功能。