nrf24l01+ multiceiver with three transmitters

I am trying to setup a multiceiver scenario with the nrf24l01+ with three transmitters (PTX1,PTX2 and PTX3) and one receiver (PRX) with enhanced shockburst but I am having trouble getting PTX3 to work. I am using the cheap nrf24 modules from ebay.

The closest existing question that I could find was this but even having solved for that addressing issue has not solved my problem.

My receiver (PRX) is configured as follows:

RX address 0:E7,E7,E7,E7,E7,
RX address 1:C2,C2,C2,C2,C2,
RX address 2:C3
RX address 3:C4
RX address 4:C5
RX address 5:C6
EN_AA:3F (0b00111111)
EN_RXADDR:3F (0b00111111)

Note that:

  • I have purposefully chosen the chip defaults to make sure my addressing wasn't the problem
  • I have ensured that I have only clocked in 1 byte into RX_ADDR_P[2345] and read out only 1 byte to ensure that I have the addresses correct
  • EN_AA : Enhanced shock burst is turned all for all 6 pipes (I am only using 3 however)
  • EX_RXADDR : All data pipes have been enabled

My first transmitter (PTX1) is configured as follows:

TX_ADDR:E7,E7,E7,E7,E7
RX address 0:E7,E7,E7,E7,E7
EN_AA:3F (0b00111111)
EN_RXADDR:3F (0b00111111)

My second transmitter (PTX2) is configured as follows:

TX_ADDR:C2,C2,C2,C2,C2
RX address 0:C2,C2,C2,C2,C2
EN_AA:3F (0b00111111)
EN_RXADDR:3F (0b00111111)

My first and second transmitter have no issues communicating with PRX.

My third transmitter (PTX3) is configured as follows:

TX_ADDR:C2,C2,C2,C2,C3
RX address 0:C2,C2,C2,C2,C3
EN_AA:3F (0b00111111)
EN_RXADDR:3F (0b00111111)

Note that:

  • I ensured that all 5 address bytes are clocked into TX_ADDR and RX_ADDR_0
  • TX_ADDR is equal to RX_ADDR for this receiver (as it should be)

For whatever reason, PTX3 is not able to communicate with PRX. The sending fails and even after 15 retries it is not able to send and gives up.

I have checked the following:

  • It is not faulty hardware/wiring on PTX3. I did this by flashing the code on PTX3 to behave like PTX1 and PTX2 and it was able to send successfully to PRX. Thus my guess is that I have not configured something properly on the nrf module associated with PTX3.
  • From the specification all I can see is that I need to make sure that EN_AA and EN_RXADDR are properly set (which I believe they are on PRX3) and that TX_ADDR is equal to RX_ADDR_P0 on PRX3 (which again I have setup).

I am clueless how to proceed. Any pointers would be much appreciated.