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

[SOLVED] nRF24L01+: PRX doesn't get RX_DR

Best regards:

I have one PTX and one PRX, both nRF24L01+ with PA and LNA. PTX send 4 bytes to PRX but PRX doesn't get RX_DR, and PTX fire MAX_RT.

PRX:

CE = 0;
Init_PRX_mode();
Read all registers:

CONFIG[00]: 0F
EN_AA[01]: 01
EN_RXADDR[02]: 01
SETUP_AW[03]: 03
SETUP_RETR[04]: FF
RF_CH[05]: 4C
RF_SETUP[06]: 07
STATUS[07]: 0E
OBSERVE_TX[08]: 00
RPD[09]: 00
RX_ADDR_P0[0A]: E7E7E7E7E7
RX_ADDR_P1[0B]: C2C2C2C2C2
RX_ADDR_P2[0C]: C3
RX_ADDR_P3[0D]: C4
RX_ADDR_P4[0E]: C5
RX_ADDR_P5[0F]: C6
TX_ADDR[10]: E7E7E7E7E7
RX_PW_P0[11]: 04
RX_PW_P1[12]: 00
RX_PW_P2[13]: 00
RX_PW_P3[14]: 00
RX_PW_P4[15]: 00
RX_PW_P5[16]: 00
FIFO_STATUS[17]: 11
DYNPD[1C]: 01
FEATURE[1D]: 06

//code:
1. Load W_ACK_PAYLOAD with "0x12, 0x34, 0x56, 0x78" //(4 bytes)
2. CE = 1;
3. while( PIN_IRQ == 1 );
4. <---- the program flow never goes next line

PTX:

CE = 0;
Init_PTX_mode();
Read all registers:

CONFIG[00]: 0E
... the rest of registers are the same as PRX ...

//code:
1. Wait 5 seconds to send
2. Send W_TX_PAYLOAD with "0x1C, 0x54, 0x8A, 0xB4" //(4 bytes)
3. CE=1 ... 100uS ... CE=0  //CE Pulse
4. while( PIN_IRQ == 1 );
5. Read FIFO_STATUS = 01
6. Read STATUS = 1E
7. Loop step 5 and 6 and always are the same return

I see PTX doesn't send the data, therefore PRX doesn't get RX_DR=1 and neither PIN_IRQ=0.

PTX never get ACK from PRX.

Any idea, please?

Parents Reply Children
No Data
Related