This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

NRF24L01+ interrupting MCU only once.

Hi, I am using NRF24L01+ as wireless communication medium. The NRF on PRX side interrupts MCU only once for recieved data. Although it sends ACK to NRF at PTX side. And I have also seen that this NRF at PRX side "discards" data recieved, by polling the registers. Same problem was faced by one and he had written post on Nrodic forum and got answer. But I am not able to interpret that answer. In that he says:"To resolve the problem I simply stopped reading from the receive payload registers, which was the source of this bug, and read from the payload buffer instead." How can this be possible, RX FIFO data can be recieved only by R_RX_PAYLOAD command and without it how it can be done? Link for above question is:devzone.nordicsemi.com/.../ Please guide me.

Parents
  • Hello,

    I faced a similar problem. Our system is quite simple, a nRF24L01P-EK board (from Nordic) on the Tx side, and our own board - also with a nRF24L01P - on the Rx side. I use the basic Enhanced ShockBurst, with a static payload size (16 bytes).

    The first packet is correctly received and acknowleged, the payload correctly read, but the IRQ line does not go up after the status register is written to reset the RX_DR flag.

    After two days spent to search an explanation on this forum, and after trying tens of changes, I finally found that resetting the RX_DR flag twice solves the problem ! I can now transmit as many packets as I want, they are all received (I set max retransmit to 0 on the Tx side, to be sure nothing is lost).

    So now I would like to understand why the reset has to be done twice to work ? Did I miss something in the documentation ? Has somebody faced the same trouble ?

    Regards, Didier

Reply
  • Hello,

    I faced a similar problem. Our system is quite simple, a nRF24L01P-EK board (from Nordic) on the Tx side, and our own board - also with a nRF24L01P - on the Rx side. I use the basic Enhanced ShockBurst, with a static payload size (16 bytes).

    The first packet is correctly received and acknowleged, the payload correctly read, but the IRQ line does not go up after the status register is written to reset the RX_DR flag.

    After two days spent to search an explanation on this forum, and after trying tens of changes, I finally found that resetting the RX_DR flag twice solves the problem ! I can now transmit as many packets as I want, they are all received (I set max retransmit to 0 on the Tx side, to be sure nothing is lost).

    So now I would like to understand why the reset has to be done twice to work ? Did I miss something in the documentation ? Has somebody faced the same trouble ?

    Regards, Didier

Children
Related