PROBLEM:
My nRF24L01 transceiver occasionally stops working (about every 2 minutes) when receiving and transmitting data packets.
I found that when the power supply occasionally drops below 3.3V for a 0.10 second duration and then comes back to normal 3.3V -- the nRF24L01 transceiver stops working.
However, once the transceiver stops working, my firmware currently does not attempt to restart the transceiver.
GOAL:
I want to be able to detect when the nRF24L01transceiver has stopped working in real-time, and re-initialize the transceiver registers for a full startup.
I do not want to fix the fluctuations in the power supply as this is beyond my development scope.
Rather, I want the firmware to detect when the transceiver has stopped working, and re-initialize the transceiver registers and re-start the transceiver for normal operation.
Ideally, I would like to read a NAME ID code or fixed value from the nRF24L01 transceiver that identifies if the transceiver is functioning properly.
I looked at the Status register, but all of the bits seem to be dynamic -- indicating when the read buffer is full,etc. Whereby, I cannot see how status can help me detect a transceiver failure.
The firmware current reads the nRF24L01 status register at startup and it always returns 0x0E value indicating the transceiver has successfully started.
However, when the transceiver is running, the status register also returns flags related to read/write buffer full state. And thereby, corrupting the 0x0E value state.
What is the solution?
Thanks,
Ken Huebner
Software Engineer
Huebner Design