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

Parents
  • Hi Hakon,

    Ok, let's say ( following the diagram from my previous post):

    I would like to send data from PRX to PTX3. The procedure that I need to follow is to set PRX TX ADDR to match RX_ADDR_P0 address in PTX3. Right? Then I sent the data but I didn't observe TX_DS interrupt in the STATUS reg in the PRX device (i.e. ACK returned from the PTX3). If I do the same thing but change PTX3 with PTX6 device ( which PRX uses PIPE0 to communicate with it) I am receiving an TX_DS interrupt

    All PTX devices got an TX_DS interrupt at their side. I don't have any issues with RX_DR interrupt on PRX and PTX sides

    Best Regards, Ivo MIlev

Reply
  • Hi Hakon,

    Ok, let's say ( following the diagram from my previous post):

    I would like to send data from PRX to PTX3. The procedure that I need to follow is to set PRX TX ADDR to match RX_ADDR_P0 address in PTX3. Right? Then I sent the data but I didn't observe TX_DS interrupt in the STATUS reg in the PRX device (i.e. ACK returned from the PTX3). If I do the same thing but change PTX3 with PTX6 device ( which PRX uses PIPE0 to communicate with it) I am receiving an TX_DS interrupt

    All PTX devices got an TX_DS interrupt at their side. I don't have any issues with RX_DR interrupt on PRX and PTX sides

    Best Regards, Ivo MIlev

Children
  • Hi Ivo,

    Your understanding is reversed.

    On the PTX you should always set PTX_PIPE0 and PTX_TXADDR equal for auto-ACKing to work. This address should then correspond with an open RF pipe on the receiver (can be PIPE0 to PIPE5)

    On the PRX you open the PIPEs that you are using, then the hardware will configure the TXADDR automatically. You should not set TXADDR register on the PRX.

    Best regards Håkon

Related