NRF24 TX to NRF52 RX without ESB, basic config (no AA/DPL)

Hi,

I have a nRF24L01+ as the TX and have lots of existing nRF24L01+ RXs. I would like use the nRF52810 as the RX as it saves the need for an MCU and on BOM parts. The current nRF24 TX/RX configuration is very basic, 2Mbit, 5 byte address, 2 bytes static length, no ACK/AA, one RX address and one RF channel.

There is an nRF52 TX/RX snippet of code online that didn't use the ESB and have been changing it to suit the nRF24 but still can't get it working as an RX. If I use an nRF52 DK dev board as the TX and another nRF52 DK as the RX, they do communicate together properly with the changes I've made.

Please find below my code. Not sure if the CRC poly value or address is correct.

Existing nRF24 RX config
nrfRx = 0x776E727801;
#define mirf_CONFIG ( (1<<EN_CRC) | (0<<CRCO) )
mirf_config_register(RF_CH, 1);
mirf_config_register(RX_PW_P0, 2);
mirf_config_register(EN_AA, 0<<ENAA_P0);
mirf_config_register(SETUP_RETR, 0);
mirf_write_register(RX_ADDR_P0, nrfRx, 5);
mirf_config_register(EN_RXADDR, (1<<ERX_P0));


nRF52 RX config
NRF_RADIO->MODE = RADIO_MODE_MODE_Nrf_2Mbit << RADIO_MODE_MODE_Pos;

NRF_RADIO->PCNF0 = (0 << RADIO_PCNF0_S0LEN_Pos) | (6 << RADIO_PCNF0_LFLEN_Pos) | (3 << RADIO_PCNF0_S1LEN_Pos);
NRF_RADIO->PCNF1 = (RADIO_PCNF1_WHITEEN_Disabled << RADIO_PCNF1_WHITEEN_Pos) | (RADIO_PCNF1_ENDIAN_Big << RADIO_PCNF1_ENDIAN_Pos) | (4 << RADIO_PCNF1_BALEN_Pos) | (0 << RADIO_PCNF1_STATLEN_Pos) | (2 << RADIO_PCNF1_MAXLEN_Pos);

NRF_RADIO->BASE0 = 0x1E4E76EE; // RX address reversed
NRF_RADIO->PREFIX0 = 0x80;
NRF_RADIO->RXADDRESSES = RADIO_RXADDRESSES_ADDR0_Enabled << RADIO_RXADDRESSES_ADDR0_Pos;

NRF_RADIO->CRCCNF = (RADIO_CRCCNF_LEN_One << RADIO_CRCCNF_LEN_Pos);
NRF_RADIO->CRCPOLY = 0x107;
NRF_RADIO->CRCINIT = 0xFF;

NRF_RADIO->FREQUENCY = 1 << RADIO_FREQUENCY_FREQUENCY_Pos;

Thank you!

Parents Reply Children
No Data
Related