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

nRF24L01+ Pipe2 to Pipe5 not working.

In an RFID application, we have nrf24l01+ and SMT32F4xx on the Reader and nrf24lu1+ on the tag.

The Reader is acting as multiceiver currently.

Pipe 0 and Pipe 1 are working fine. We have problem with Pipe 2 to Pipe 5.

RF channel is 2 , payload is 10, 250Kbps data rate.

Following is the register dump on the Reader: RX_ADDR_P0 = e7 e7 e7 e7 e7, RX_ADDR_P1 = e1 e1 e1 e1 e0, RX_ADDR_P2 = d2, RX_ADDR_P3 = c3, RX_ADDR_P4 = b4, RX_ADDR_P5 = a5, CONFIG = b, EN_AA = 3f, EN_RXADDR = 3f, SETUP_AW = 3, SETUP_RETR = 4f, RF_CH = 2, RF_SETUP = 26, RX_PW_P0 = a, RX_PW_P1 = a, RX_PW_P2 = a, RX_PW_P3 = a, RX_PW_P4 = a, RX_PW_P5 = a.

Rgds, Pradeep

Parents
  • @Pradeep: Next time please edit your question or add comment instead of using Answer section. I haven't seen you configure the RX_ADDR_P0 in the code. It should be configured. I suspect there could be a mismatch on the order of byte (byte endianness).

    You can try to test by using RX_ADDR_P1 = {0xE1, 0xE1, 0xE1, 0xE1, 0xE1}; RX_ADDR_P2 = 0xD2

    and then try both: TX_addr[5] = {0xE1,0xE1,0xE1,0xE1,0xD2}; and TX_addr[5] = {0xD2,0xE1,0xE1,0xE1,0xE1};

    respectively, to see if it's the case.

    I don't know how you write the register with nrf24_writeRegister() but I would suggest to use hal_nrf_write_multibyte_reg() function in hal_nrf.c . Or better could you use hal_nrf_set_address() as in the example ? I suggest to test first with both side from the code from the example to make sure it works before moving to your code.

Reply
  • @Pradeep: Next time please edit your question or add comment instead of using Answer section. I haven't seen you configure the RX_ADDR_P0 in the code. It should be configured. I suspect there could be a mismatch on the order of byte (byte endianness).

    You can try to test by using RX_ADDR_P1 = {0xE1, 0xE1, 0xE1, 0xE1, 0xE1}; RX_ADDR_P2 = 0xD2

    and then try both: TX_addr[5] = {0xE1,0xE1,0xE1,0xE1,0xD2}; and TX_addr[5] = {0xD2,0xE1,0xE1,0xE1,0xE1};

    respectively, to see if it's the case.

    I don't know how you write the register with nrf24_writeRegister() but I would suggest to use hal_nrf_write_multibyte_reg() function in hal_nrf.c . Or better could you use hal_nrf_set_address() as in the example ? I suggest to test first with both side from the code from the example to make sure it works before moving to your code.

Children
No Data
Related