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

nRF52840 proprietary Radio stops receiving after some Data ...

Hallo,

my nRF52840 and my nRF24L01 are receiving the same data in proprietary radio mode.

Several nRF51822 are sending mixed up data.

Within the nRF24L01 - radio Interrupt routine I lock the receive interrupt while reading the payload ...

The nRF52840 is receiving via the "nrf_esb_event_handler"

After some random payloads( 1 .... 100 ) the nRF52840 receiver stops receiving. - ( The nRF24L01 - NEVER stops receiving )

If I reset the radio of hte nRF52840 by software

NRF_RADIO->POWER                = (RADIO_POWER_POWER_Disabled << RADIO_POWER_POWER_Pos);
nrf_delay_ms(10);
NRF_RADIO->POWER                = (RADIO_POWER_POWER_Enabled << RADIO_POWER_POWER_Pos);

and doing the initialisation of the radio again, the receiver continuies receiving payloads.

So why stops the receiver the receiving of payloads ?

maybe there is a full buffer, or there is a receiving error ?

Which register do i have to check ? 

how to "lock" the receiving event while reading the received data

best regards Wenne

  • Normally this would be handled by the ESB library, but seems you are modifying it a bit? Anyway you can check the INTENSET and INTENCLR registers.

    In ESB interrupts are cleared using    NVIC_ClearPendingIRQ(RADIO_IRQn);
        NVIC_EnableIRQ(RADIO_IRQn);

    Not sure exactly what you mean with powering on/off the radio. But you can disable / enable the radio as you wish, there should not be any limitation to that. Only the flash has endurance limitations.

    To see what events come when see Transmit sequence and Receive sequence

    And FYI, we are just starting summer vacations, which means our response times might increase. Personally I will be OOO for the next four weeks, so consider making a new case for follow up questions.

Related