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

nRF24L01+ increasing range using MultiCeiver and ShockBurst …

With ShockBurst activated the PRX receives some of the packets at 7 to 8 meters, and the PTX only receives the ACK at 4 to 5 meters….

The explanation for this is that the PTX can sent up to 16 times the same packet, eventually one of the 16 packets will arrive in the PRX.. Meanwhile the PRX only send the ACK once, and thus reducing the probability of the PTX to receive this one ACK packet!

Can the PRX be configure to do ShockBurst, by blinding sending up to 16 or less the same ACK?

Best Regards … Renato

Parents
  • Hi Hung Bui ,

    Hi have made some changes in the nRF24L01+ that are now communicating at up to 8metters, using this module:

    www.aliexpress.com/.../32308100252.html

    This setup for the PTX:

    -> RF_CONFIG, EN_CRC_bm|PWR_UP_bm|PRIM_TX_bm, -> RF_EN_AA, ENAA_P0_bm, -> RF_EN_RXADDR, ERX_P0_bm, -> RF_SETUP_RETR, RETR_4000uS|RETR_10, -> RF_RF_SETUP, RATE_250Kb|_0DBM_bm, -> RF_STATUS, RX_DR_bm|TX_DS_bm|MAX_RT_bm, -> RF_RX_PW_P0, RF_PAYLOAD_LEN, -> RF_DYNPD, 0, -> RF_FEATURE, EN_ACK_PAY_bm

    This Setup for the PRX:

    -> RF_CONFIG, EN_CRC_bm|PWR_UP_bm|PRIM_RX_bm, -> RF_EN_AA, ENAA_P4_bm|ENAA_P3_bm|ENAA_P2_bm|ENAA_P1_bm|ENAA_P0_bm, -> RF_EN_RXADDR, ERX_P4_bm|ERX_P3_bm|ERX_P2_bm|ERX_P1_bm|ERX_P0_bm, -> RF_SETUP_RETR, RETR_500uS|RETR_10, -> RF_RF_SETUP, RATE_250Kb|_0DBM_bm, -> RF_STATUS, RX_DR_bm|TX_DS_bm|MAX_RT_bm, -> RF_RX_PW_P0, RF_PAYLOAD_LEN, -> RF_RX_PW_P1, RF_PAYLOAD_LEN -> RF_RX_PW_P2, RF_PAYLOAD_LEN, -> RF_RX_PW_P3, RF_PAYLOAD_LEN, -> RF_RX_PW_P4, RF_PAYLOAD_LEN, -> RF_DYNPD, 0, -> RF_FEATURE, EN_ACK_PAY_bm

    Changing the speed from 250K to 1M has no effect on range!

    Do you have any recommendations?

    Meanwhile we have decided that we will make the Radio in the main PCB board... So, your offered support will be welcome…

    OBS: I am using 100bF and 47uF/tant on the power input...

    With the above configuration, I am also having a major problem in the PTX...

    The PTX is sending a packet using W_TX_PAYLOAD each 100mil/sec... and the MAX_RT on the PTX side is activating about 50% of the time... Strangely if I send the packet using W_TX_PAYLOAD_NOACK the MAX_RT also activates...

    Is the PTX not receiving the ACK from the PRX? Why sending a packet W_TX_PAYLOAD_NOACK the MAX_RT activates?

    Please see the images … the PTX does not receive the ACK…!image descriptionimage description

    Tanks Renato

Reply
  • Hi Hung Bui ,

    Hi have made some changes in the nRF24L01+ that are now communicating at up to 8metters, using this module:

    www.aliexpress.com/.../32308100252.html

    This setup for the PTX:

    -> RF_CONFIG, EN_CRC_bm|PWR_UP_bm|PRIM_TX_bm, -> RF_EN_AA, ENAA_P0_bm, -> RF_EN_RXADDR, ERX_P0_bm, -> RF_SETUP_RETR, RETR_4000uS|RETR_10, -> RF_RF_SETUP, RATE_250Kb|_0DBM_bm, -> RF_STATUS, RX_DR_bm|TX_DS_bm|MAX_RT_bm, -> RF_RX_PW_P0, RF_PAYLOAD_LEN, -> RF_DYNPD, 0, -> RF_FEATURE, EN_ACK_PAY_bm

    This Setup for the PRX:

    -> RF_CONFIG, EN_CRC_bm|PWR_UP_bm|PRIM_RX_bm, -> RF_EN_AA, ENAA_P4_bm|ENAA_P3_bm|ENAA_P2_bm|ENAA_P1_bm|ENAA_P0_bm, -> RF_EN_RXADDR, ERX_P4_bm|ERX_P3_bm|ERX_P2_bm|ERX_P1_bm|ERX_P0_bm, -> RF_SETUP_RETR, RETR_500uS|RETR_10, -> RF_RF_SETUP, RATE_250Kb|_0DBM_bm, -> RF_STATUS, RX_DR_bm|TX_DS_bm|MAX_RT_bm, -> RF_RX_PW_P0, RF_PAYLOAD_LEN, -> RF_RX_PW_P1, RF_PAYLOAD_LEN -> RF_RX_PW_P2, RF_PAYLOAD_LEN, -> RF_RX_PW_P3, RF_PAYLOAD_LEN, -> RF_RX_PW_P4, RF_PAYLOAD_LEN, -> RF_DYNPD, 0, -> RF_FEATURE, EN_ACK_PAY_bm

    Changing the speed from 250K to 1M has no effect on range!

    Do you have any recommendations?

    Meanwhile we have decided that we will make the Radio in the main PCB board... So, your offered support will be welcome…

    OBS: I am using 100bF and 47uF/tant on the power input...

    With the above configuration, I am also having a major problem in the PTX...

    The PTX is sending a packet using W_TX_PAYLOAD each 100mil/sec... and the MAX_RT on the PTX side is activating about 50% of the time... Strangely if I send the packet using W_TX_PAYLOAD_NOACK the MAX_RT also activates...

    Is the PTX not receiving the ACK from the PRX? Why sending a packet W_TX_PAYLOAD_NOACK the MAX_RT activates?

    Please see the images … the PTX does not receive the ACK…!image descriptionimage description

    Tanks Renato

Children
  • @Renato: Thanks for clarifying the LNA line.

    Looking at the image trace, I can see that PRX's interval of sending ACK was different (larger) from the sending interval of the TX from PTX.

    Secondly, I can see that PRX has an interrupt (and sending smth) even before the first packet from PTX!

    This made me suspect that PRX maybe answering to smth else, not the PTX.

    Could you try to change the PRX address, and capture a longer trace that show both packet that is ACKed and packet with MAX_RT returned ? Also please make sure you have a nRF24L01+ not nRF24L01, I saw that in the link on aliexpress the seller state it's nRF24L01.

  • Finally... I have it working 100%.... and range is not an issue anymore !...

    Yes.. the ACK in the image had 0 bytes, and my EN_DPL has not activated... to solve this it is necessary to always charge the W_ACK_PAYLOAD with the 32bytes. (it shouldn't be necessary to always preload the ACK_PAYLOAD if the DPL was not activated)...

    But this was not my problem because I have tested that before, and no positive result...

    The problem was in my PTX ... It was an HARDWARE PROBLEM.... The modules from China had the same chip reference NRF24L01+ 1242AF, (the reference mentioned production date 2012 week 42) so I changed and tested with another chip NRF24L01+ 1408AF and this one worked 100% ....

    The 1242AF modules did not receive the ACK packet... Are there fake chips on the market that do not support the Enhanced Shockburst?

  • @Renato: It's great that you found the issue.

    The nRF24L01+ chip with trace code 1242AF and 1331AF are known to be counterfeit products.

    They are not original Nordic's products. Be careful when buying chip/module from un-official distributor.

Related