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

nRF24L01+ as TX / nRF52 as RX no received event

Hi,

I have done some reverse eng on a nrf24l01+ emitters using spi spy and managed to catch datas using an arduino leonardo + nrf24l01+ using the following register setup:

const byte addr[5] = {0x30, 0x26, 0xDA, 0x91, 0xD3};
radio.write_register(NRF_CONFIG, 0x7C);   //0x20 0x7C
        //0 Reserved
        //1 RX_DR interrupt not reflected
        //1 RX_DS interrupt not reflected
        //1 MAX_RT interrupt not reflected
        //
        //1 CRC enabled
        //1 CRC 2bytes
        //0 PWR DOWN
        //0 PTX
      radio.write_register(EN_AA, 0x00);        //0x21 0x00 //No auto ack
      radio.write_register(SETUP_AW, 0x03);     //0x23 0x03 //Adr Width 5
      radio.write_register(SETUP_RETR, 0x00);   //0x24 0x00 //No retransmit
      radio.write_register(RF_SETUP, 0x00);     //0x26 0x00 //1Mbps
      radio.write_register(RX_ADDR_P1, addr, 5);
      radio.write_register(RX_PW_P1, 0x04);     //0x32 0x04 //P1 Payload size 4
      radio.write_register(FEATURE, 0x00);      //0x3D 0x00 
      radio.write_register(EN_RXADDR, 0x02);    //0x22 0x02 //Enable RX Addr Pipe 1
      radio.write_register(NRF_CONFIG, 0x3B);   //0x20 0x3B
        //0 Reserved
        //0 RX_DR interrupt IS reflected
        //1 RX_DS interrupt not reflected
        //1 MAX_RT interrupt not reflected
        //
        //1 CRC enabled
        //0 CRC 1 byte
        //1 PWR UP
        //1 PRX
      radio.write_register(RF_CH, 0x1C);        //0x25 0x1C

Now i am trying to catch datas using nRF52/pca10040 updating esb_prx_pca10040 with the following setup but no RX event fires:

    uint32_t esb_init( void )
{

uint32_t err_code;
uint8_t base_addr_0[4] = {0x30, 0x26, 0xDA, 0x90};
uint8_t base_addr_1[4] = {0x30, 0x26, 0xDA, 0x91};
uint8_t addr_prefix[8] = {0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9 };

    nrf_esb_config_t nrf_esb_config         = NRF_ESB_LEGACY_CONFIG;
    nrf_esb_config.payload_length           = 4;
    //nrf_esb_config.protocol                 = NRF_ESB_PROTOCOL_ESB_DPL;
    nrf_esb_config.bitrate                  = NRF_ESB_BITRATE_1MBPS;
    nrf_esb_config.mode                     = NRF_ESB_MODE_PRX;
    nrf_esb_config.event_handler            = nrf_esb_event_handler;
    nrf_esb_config.selective_auto_ack       = false;
		nrf_esb_config.crc										  = NRF_ESB_CRC_8BIT;

    err_code = nrf_esb_init(&nrf_esb_config);
    VERIFY_SUCCESS(err_code);

    err_code = nrf_esb_set_base_address_0(base_addr_0);
    VERIFY_SUCCESS(err_code);

    err_code = nrf_esb_set_base_address_1(base_addr_1);
    VERIFY_SUCCESS(err_code);

    err_code = nrf_esb_set_prefixes(addr_prefix, 8);
    VERIFY_SUCCESS(err_code);

		//
		// Channel
		//
		err_code = nrf_esb_set_rf_channel(0x1C); 
    VERIFY_SUCCESS(err_code);

    return err_code;
}

may you please help?

Many thanks in advance

Related