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