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

nrf24l01+ with autoack i can only receive for once

Hello,greetings. I am trying to communicate among 2 NRF24L01+ modules using stm32 and stc89c52. With EN_AA = 0x00, EN_RXADDR = 0x00, SETUP_RETR = 0x00 on PTX ,and EN_AA = 0x00, EN_RXADDR = 0x01 on RTX, I am able to transmit data and receive data normally.

But when I change EN_AA = 0x01, EN_RXADDR = 0x01 ,SETUP_RETR = 0x00 on transmitter ,EN_AA = 0x01, EN_RXADDR = 0x01 on receiver,stm32 as RTX ,can only receive data for once, and PTX never receives auto ACK .

Then I have to cut the power of RTX ,turn the power on, download program , so I can receive data, but only once.

I try to modify SETUP_RETR, it doesn't work .

  • Hi EN_AA,

    Have you made sure you have configured the RX_ADDR_P0 to match with TX_ADDR ? This is mentioned at page 75, Appendix A in the nRF24L01+ spec. Have you check if TX_DS is set high after you send the packet ? If the ACK packet is not received, you would need to clear MAX_RT before you send the next package. In addition have you set the NO_ACK bit in the package to 0 to enable ACK ?

    Another thing may cause the issue is that, if you send the same payload, and try to flush the TXFIFO everytime you send a packet, you may end up having identical package send to RX. On the RX side it will interpret this as a re-transmission package and will discard it.

Related