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

CRC error of ESB communication of nRF24L01P and nRF52832

There was a similar question in the past, but I couldn't solve it by referring to it.
ESB communication between nRF24L01P and nRF52832 (PCA10040) fails.

nRF24L01P-> PTX nRF52832-> PRX

The settings of nRF24L01P are as follows.
CRC-> enable, 2byte
mode-> PTX
auto acknowledgement data pipe 0-> enable
RX / TX Address field width-> 5byte
ARD-> 250us, ARC-> 15
Freqency-> 2404
Data Rate-> 2Mbps
TX address-> 52,02,00,00,02
RX pipe0 address-> 52,02,00,00,02
Send data-> 16byte

address value
0x00 0x0E
0x01 0x01
0x02 0x01
0x03 0x03
0x04 0x0F
0x05 0x04
0x06 0x0E
0x07 0x70
0x10 0x5202000002
0xA0 0x5202000002

The setting of nRF52832 is executed with the following code.
The base is nRF5_SDK_15.3.0_59ac345 \ examples \ proprietary_rf \ esb_prx.


uint32_t esb_init( void )
{
    uint32_t err_code;
    uint8_t base_addr_0[4] = {0x02, 0x00, 0x00,0x02};
    uint8_t base_addr_1[4] = {0xC2, 0xC2, 0xC2, 0xC2};
    uint8_t addr_prefix[8] = {0x52, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8 };
    nrf_esb_config_t nrf_esb_config         = NRF_ESB_DEFAULT_CONFIG;
    nrf_esb_config.payload_length           = 16;
    nrf_esb_config.protocol                 = NRF_ESB_PROTOCOL_ESB_DPL;
    nrf_esb_config.bitrate                  = NRF_ESB_BITRATE_2MBPS;
    nrf_esb_config.mode                     = NRF_ESB_MODE_PRX;
    nrf_esb_config.event_handler            = nrf_esb_event_handler;
    nrf_esb_config.selective_auto_ack       = true;
	nrf_esb_config.crc 						= NRF_ESB_CRC_16BIT;

    err_code = nrf_esb_init(&nrf_esb_config);
    VERIFY_SUCCESS(err_code);
	nrf_esb_flush_rx();
	nrf_esb_enable_pipes(0x01);
	nrf_esb_set_address_length(4);	
	nrf_esb_set_rf_channel(0x04);
		
    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);
	return err_code;
}

There is no response even if break is set in nrf_esb_event_handler.
When you stop and look at RADIO in the system viewer, it looks like this:

EVENTS_ADDRESS 0x00000001
EVENTS_PAYLOAD 0x00000001
EVENTS_END 0x00000001
EVENTS_DEVMATCH 0x00000000
EVENTS_DEVMISS 0x00000001
EVENTS_CRCOK 0x00000000
EVENTS_CRCERROR 0x00000001

If you set nrf_esb_config.crc = NRF_ESB_CRC_OFF ;, a break will occur in nrf_esb_event_handler, but the content of payload is different from the content being sent.

Is there anything else I need to set up on the nRF52832 side?
I would appreciate your answer.

Best regards.

Parents Reply Children
Related