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

What is the right configuration of registers for NRF24L01P (TX mode and RX mode)

After i test a lot of possible configurations for nrf24L01+ based on the documentation, i didn't come to the right setup for all the nRf24L01+ registers to send data from a module as an emitter and to receive as a receiver. here is the configurations i made for the initiation ( Transmitter)

config_transmiter();           // set as transmiter and power up
setRADDR();                    // address for pipe 1 
setTADDR();                    // same for receiver of pipe 0
rf_setup() ;
payload_size(8);               // 5 bytes
setRF_CH();                    // 2.431GHz
flushTX();                     // clear any data in TX FIFO
en_RXADDR(0x3F);
auto_ack(0x3F); 

address RX : 0x65646f4e32 address TX : 0x65646f4e31

( Receiver)

config_receiver();           // set as transmiter and power up
setSETUPAW();
setRADDR();                    // address for pipe 0 
setTADDR();                    // same for trasmiter
rf_setup() ;
payload_size(8);               // 5 bytes
setRF_CH();                    // 2.431GHz
flushRX();                     // clear any data in RX FIFO
en_RXADDR(0x3F);
auto_ack(0x3F);                // enable auto acknowledgment

address RX : 0x65646f4e31 address TX : 0x65646f4e31

Parents
  • Hi Mohamed

    When using the auto ACK (ESB) features of the nRF24L01+ you want to make sure that the TX and Pipe 0 address is the same on the PTX side. The reason for this is that the PTX uses pipe 0 to receive the acknowledgement sent by the PRX.

    Also, I can only see setSETUPAW(); referenced on the RX side. If you have a different address length on the TX and RX side then communication will fail.

    If you still have issues after checking these things, then it would help if you could write down the state of the configuration registers on both sides. Then I can look them over and see if I spot any more issues.

    Best regards
    Torbjørn

  • Here is all the config registers data generated with oscilloscope :

    Emitter RX_ADDR_P0 : 0xF0F0F0F0F0 TX_ADDR : 0xF0F0F0F0F0

    Register : 0x00 (CONFIG) 0x5A

    Register : 0x01 (EN_AA) 0x3F

    Register : 0x02 (EN_RXADDR) 0x03

    Register : 0x03 (SETUP_AW) 0x03

    Register : 0x04 (SETUP_RETR) 0x03

    Register : 0x05 (RF_CH) 0x1F

    Register : 0x06 (RF_SETUP) 0x0F

    Register : 0x07 (STATUS) 0x1E

    Register : 0x08 (OBSERVE_TX) 0x03

    Register : 0x09 (CD) 0x00

    Register : 0x0A (RX_ADDR_P0) 0xF0

    Register : 0x0B (RX_ADDR_P1) 0xC2

    Register : 0x0C (RX_ADDR_P2) 0xC3

    Register : 0x0D (RX_ADDR_P3) 0xC4

    Register : 0x0E (RX_ADDR_P4) 0xC5

    Register : 0x0F (RX_ADDR_P5) 0xC6

    Register : 0x10 (TX_ADDR) 0xF0

    Register : 0x11 (RX_PW_P0) 0x08

    Register : 0x12 (RX_PW_P1) 0x37

    Register : 0x13 (RX_PW_P2) 0x00

    Register : 0x14 (RX_PW_P3) 0x00

    Register : 0x15 (RX_PW_P4) 0x00

    Register : 0x16 (RX_PW_P5) 0x00

    Register : 0x17 (FIFO_STATUS) 0x11

    Register : 0x1C (DYNPD) 0x00

    Register : 0x1D (FEATURE) 0x00

    Receiver RX_ADDR_P0 : 0xF0F0F0F0F0 TX_ADDR : 0xF0F0F0F0F0

    0x00 CONFIG 0x3B

    0x01 EN_AA 0x3F

    0x02 EN_RXADDR 0x03

    0x03 SETUP_AW 0x03

    0x04 SETUP_RETR 0x03

    0x05 RF_CH 0x1F

    0x06 RF_SETUP 0x0F

    0x07 STATUS 0x0E

    0x08 OBSERVE_TX 0x00

    0x09 CD 0x00

    0x0A RX_ADDR_P0 0xF0

    0x0B RX_ADDR_P1 0xC2

    0x0C RX_ADDR_P2 0xC3

    0x0D RX_ADDR_P3 0xC4

    0x0E RX_ADDR_P4 0xC5

    0x0F RX_ADDR_P5 0xC6

    0x10 TX_ADDR 0xF0

    0x11 RX_PW_P0 0x08

    0x12 RX_PW_P1 0x00

    0x13 RX_PW_P2 0x00

    0x14 RX_PW_P3 0x00

    0x15 RX_PW_P4 0x00

    0x16 RX_PW_P5 0x00

    0x17 FIFO_STATUS 0x11

    0x1C DYNPD 0x00

    0x1D FEATURE 0x00

Reply
  • Here is all the config registers data generated with oscilloscope :

    Emitter RX_ADDR_P0 : 0xF0F0F0F0F0 TX_ADDR : 0xF0F0F0F0F0

    Register : 0x00 (CONFIG) 0x5A

    Register : 0x01 (EN_AA) 0x3F

    Register : 0x02 (EN_RXADDR) 0x03

    Register : 0x03 (SETUP_AW) 0x03

    Register : 0x04 (SETUP_RETR) 0x03

    Register : 0x05 (RF_CH) 0x1F

    Register : 0x06 (RF_SETUP) 0x0F

    Register : 0x07 (STATUS) 0x1E

    Register : 0x08 (OBSERVE_TX) 0x03

    Register : 0x09 (CD) 0x00

    Register : 0x0A (RX_ADDR_P0) 0xF0

    Register : 0x0B (RX_ADDR_P1) 0xC2

    Register : 0x0C (RX_ADDR_P2) 0xC3

    Register : 0x0D (RX_ADDR_P3) 0xC4

    Register : 0x0E (RX_ADDR_P4) 0xC5

    Register : 0x0F (RX_ADDR_P5) 0xC6

    Register : 0x10 (TX_ADDR) 0xF0

    Register : 0x11 (RX_PW_P0) 0x08

    Register : 0x12 (RX_PW_P1) 0x37

    Register : 0x13 (RX_PW_P2) 0x00

    Register : 0x14 (RX_PW_P3) 0x00

    Register : 0x15 (RX_PW_P4) 0x00

    Register : 0x16 (RX_PW_P5) 0x00

    Register : 0x17 (FIFO_STATUS) 0x11

    Register : 0x1C (DYNPD) 0x00

    Register : 0x1D (FEATURE) 0x00

    Receiver RX_ADDR_P0 : 0xF0F0F0F0F0 TX_ADDR : 0xF0F0F0F0F0

    0x00 CONFIG 0x3B

    0x01 EN_AA 0x3F

    0x02 EN_RXADDR 0x03

    0x03 SETUP_AW 0x03

    0x04 SETUP_RETR 0x03

    0x05 RF_CH 0x1F

    0x06 RF_SETUP 0x0F

    0x07 STATUS 0x0E

    0x08 OBSERVE_TX 0x00

    0x09 CD 0x00

    0x0A RX_ADDR_P0 0xF0

    0x0B RX_ADDR_P1 0xC2

    0x0C RX_ADDR_P2 0xC3

    0x0D RX_ADDR_P3 0xC4

    0x0E RX_ADDR_P4 0xC5

    0x0F RX_ADDR_P5 0xC6

    0x10 TX_ADDR 0xF0

    0x11 RX_PW_P0 0x08

    0x12 RX_PW_P1 0x00

    0x13 RX_PW_P2 0x00

    0x14 RX_PW_P3 0x00

    0x15 RX_PW_P4 0x00

    0x16 RX_PW_P5 0x00

    0x17 FIFO_STATUS 0x11

    0x1C DYNPD 0x00

    0x1D FEATURE 0x00

Children
No Data
Related