我正在使用NRF24l01 +芯片的Arduino。不幸的是,Mirf庫的「send」方法並不能告訴你它是否成功。重試發送一個數據包直到它被髮送
而且,具有這樣的循環:
Mirf.send(data);
while(Mirf.isSending()){
//Wait.
}
剛剛恢復,即使該數據包沒有交貨。現在,它看起來像我不必重新發明輪子,因爲讀的nRF24L01 datasheet (page 27/78):
強化的ShockBurst™功能可以自動分組事務處理 爲易於實現可靠的雙向數據鏈路。 [剪斷的自動分組事務處理的工作原理如下:
- 可以通過從PTX 到PRX發送數據分組開始交易。增強ShockBurst™自動將PTX設置爲接收模式以等待ACK數據包。
- 如果PRX接收到數據包,增強型ShockBurst™ 自動組裝並且 在返回到接收模式之前將確認數據包(ACK數據包)發送到PTX。
- 如果PTX沒有立即收到ACK數據包,增強型 ShockBurst™在可編程延遲後自動重發原始數據包 ,並將PTX設置爲接收模式,以等待ACK數據包的 。
要啓用此功能(數據表第57頁):
它看起來像我需要寫類似00011111的芯片上寄存器0x01。任何想法如何我可以實現這一目標?
您的NRF24l01 +芯片通過SPI連接到Arduino,是否正確? 「W_REGISTER」命令(寫入寄存器命令)在數據手冊的第51頁有描述。或者我誤解了你的問題? – angelatlarge
@angelatlarge是的,謝謝你。問題是,如何通過Arduino SPI將該命令與我的參數一起發送給芯片?我會看看更多的教程。 – David
看的地方是Mirf圖書館的資源。最基本的,你可以使用'MirfHardwareSpiDriver :: transfer()',但看起來你可能需要做些什麼。請參閱'Mirf.cpp'源代碼[here](https://github.com/aaronds/arduino-nrf24l01/blob/master/Mirf/Mirf.cpp) – angelatlarge