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

Parents
  • Hi Sebastien

    I think the problem might be in the address generation.

    Assuming this is the address:

    const byte addr[5] = {0x30, 0x26, 0xDA, 0x91, 0xD3};
    

    It is the first byte in the buffer (0x30) that is the prefix, and the remaining bytes that are the base. If you change the address configuration on the nRF52 side that should fix the issue.

    Best regards

Reply
  • Hi Sebastien

    I think the problem might be in the address generation.

    Assuming this is the address:

    const byte addr[5] = {0x30, 0x26, 0xDA, 0x91, 0xD3};
    

    It is the first byte in the buffer (0x30) that is the prefix, and the remaining bytes that are the base. If you change the address configuration on the nRF52 side that should fix the issue.

    Best regards

Children
No Data
Related