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

NRF24L01+ working irregulary

Hi everyone,

I bought two NRF24L01+ off ebay a couple of week ago and started to work on them this week. I seem to have problem with establishing a reliable communication between both devices. I enabled Shockburst by setting register EN_AA all to "1" and register EN_RXADDR all to "1". I should then have auto-acknowledgement on the TX device. Both device work with the IRQ pin with external interrupt on my two MCU (ATMEGA8) and interrupt are masked with the STATUS register to show what interrupt is trigerred by the NRF. I seem to have a bad communication, but the packet still cross from the TX to the RX irregularly. I checked the value of the received packet and it is the same as the one sent., but no acknowledge received in the TX device...

Any fast thoughts on why it would do this?

Thanks, Fred

  • Hi Fred,

    If I understand correctly, you are observing unstable communication where the PRX get's the packet, but the PTX does not get the ACK.

    Could you post a bit more details about your setup?

    1. What RF address do you use?
    2. Can you link to the module you bought?
    3. At what range is this tested with?

    BR Håkon

  • I use the same address as in the apprendix A int the product datasheet. TX5 device: TX_ADDR = 0xB3B4B5B605 TX5 device: RX_ADDR_P0 = 0xB3B4B5B605 RX device: RX_ADDR_P5 = 0xB3B4B5B605 As for the module, so I don't have the link anymore.

    For the range, it was tested a couple of inch apart, let's say about 6 inch. I read on the internet that the problem could come from a common ground so i alimented both module on separated power supply and putted a capacitor between VCC and GND, but I am still having the same problem...

  • Can you post your code so I can have a look? Also, can you take a picture of the module (w/close up on the nRF-chip markings) ?

    Best regards Håkon

  • Hi, Sorry for the delay but I have been pretty busy in the last days. My code was pretty messed up so I am now starting back from the begining. I think my problem comes from setting the RX device's address. In the Apprendix A on page 75 in the datasheet it says you need to set a 5 bytes address in register RX_ADDR_P5, but when you look on page 60, we see that the RX_ADDR_P5 register is only 1 byte long... How do you set the RX_ADDR_P5 register correctly?

    Thanks, Happy Holidays to you! Fred

  • Hi Fred,

    Thank you. Happy new year to you:)

    Glad to hear that you've most likely found the source of the issue. The RF PIPES 0 and 1 are 5 byte register, while the RF PIPES 2 to 5 are 1 byte (derived from PIPE1 address).

    A better overview of how the pipes are addressed is shown in the nRF24L01+ datasheet, page 40.

    BR, Håkon

1 2 3 4 5 »