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

  • Hi,

    Are you using a specific example? Are you getting any error codes? where does the program halt when degugging? there is a Backward compatibility guide here, that you could check that you are following.

  • I use the nRF52840 dongle.

    I soldered some wires to get a uart @ 115200 working ( for debugging purposes)

    therefore I started with a example/ peripheral "uart" example and added proprietary_rf radio ...

    errorcodes ? - do you mean from the compiler ? no there are no errors ..

    I assume that I have problems if several 51822 are transmitting their payloads simultanously ...

    Because I have several of 51822 ( with same Address - their ID is located in the payload ) which are sending their payloads.

    The 24L01 has absolutely no problem with that.

    Therefore I assume that I have to disable / enable the receive Interrupt within the 52840 software - like i have done it within the 24l01.

    But how to "disable" the receive event ? or do i have to modify the RADIO_IRQHandler ...

    all payloads I receive are OK -

    unfortunately I'm not able to let only on of my 51822 send, because i lost some of my battery powered samples somewhere here and I'm not able to localize them, that I can deactivate them :-)

  • It looks like a CRC error.

    So how to delete or disable the CRC error event ?

    best regards Wenne

  • Are you using standard ESB? Normally you would simply discard the packet and wait for the next one if you get a CRC error.

    Alternatively if you enabled data whitening you might be hitting errata 245. But this is not enabled by default for ESB.

  • Thank you very much for your reply.

    I'm checking the events now.

    So if I detect for example the 

    NRF_RADIO->EVENTS_FRAMESTART == 1   event

    I have to Reset the radio with

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

    because I'm not able to reset this flag on my own.

    So my program is working stable now and receives my Slaves payloads,  but I'm not very happy with my solution because I have to Reset and reinitialize the Radiopart very very often ...

    So how to reset the radioflags, without powering the Radio on and off ?

    Is there a documentation wich radio events are set in which sequence while receiving data ?

    which events are cleared automatically ?

    If there is a permanent CRC or Framestart event, because the flag will not be cleared  what will happen ?

    Will the radio run into a shutdown ?

    Which events can be deleted and which ones have to be cleared by radio power on/off only ?

    Will there be problems if i power on and power off the radio very very often ?

    How to discard packets ? 

    I only accept packages if i receive the 

    NRF_ESB_EVENT_RX_RECEIVED  event.

    Thanks !

     

Related