nRF24L01 Dynamic Payload Length Problem.

Hi ,

In Revision 2.0 datasheet of nRF24L01 , a new feature called “DYNAMIC PAYLOAD LENGTH” is added.

I tried to use the same at the receiver side so that transmitter can transmit a payload of varying size.I am not using other feature like Payload with ACK and Selective Auto Acknowledgement.

My problem is that i could not receive any payload at the receiver side.

I used the following settings

nrf24l01_lock_unlock(); /* ACTIVATE command followed by data 0x73 /
nrf24l01_enable_dynamic_pl(); /
FEATURE = 0x40 → Enable Dynamic payload length */
nrf24l01_setup_dyn_pl(0x02);
/*DYNPD = 0x02 ->Enable Dynamic payload length data pipe 1 */

RX_PW_P1=1 /* Enable the pipe of 1 Byte */

I transmitted 8 bytes of payload in pipe 1 which is not received at the receiver.

But Once i changed the settings as shown below , I am able to receive the character

RX_PW_P1=8 /* Enable the pipe of 8 Byte */

nrf24l01_setup_dyn_pl(0x00);/DYNPD = 0x00/

I could not understand the behaviour of Dynamic Payload Length

Any help would be greatly appreicated

Hi All,

Below is cited from the datasheet version 2.0(Page 27 of 74)

In order to enable DPL the EN_DPL bit in the FEATURE register must be set. In RX mode the DYNPD register has to be set. A PTX that transmits to a PRX with DPL enabled must have the DPL_P0 bit in DYNPDset.

Based on this finally my problem is solved.

I would like to thank “yorkbluedream” who is the member of this group has helped me in solving the problem.

Final Conclusion is

At TX side ,

ONLY DPL_P0 must be set irrespective of any pipe is uded for tx.