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

nRF24L01+ Multi Tx, Single Rx Throughput Issues

We are using your nRF24l01+ chip in one of our products. we are using 1 nRF as receiver and 5 nRF's as transmitters.

While trying to use the chip with multiciever configuration, the receiver is not getting the data from transmitters every time. Obviously there will be some frames lost in air, but the difference for us is very noticeable. Approximately only 1 in every 20 times, the data is processed. In our application, dropping the occasional frame is non-consequential; we only need the latest data from the sending devices to plot it on a live display.

Our target is to get data from all transmitters every 15ms or faster. We are getting it only every 200ms or more.

The situation gets worse if we request ACK from Transmitter side. The transmitter is sending frames every 100ms or more in this case. We have to transmit the payload with acknowledgement every now and then to see if receiver is present or not for sleep management.

Find below our settings for the device

  • Address With - 5 bytes
  • CRC Enabled with 1 byte encoding scheme
  • All pipes enabled with Auto Acknowledgement
  • Auto Re-transmit delay - 1.5ms
  • Auto Re-transmit count - 15 times
  • RF Channel - 2
  • Continuous wave transmit enabled
  • RF Data Rate - 250kbps
  • RF output power - -18dBm
  • Dynamic Payload Enabled
  • Enabled Payload with ACK
  • Enabled Payload with NO_ACK
  • pipe 0 address - E7 E7 E7 E7 E7
  • pipe 1 address - C2 C2 C2 C2 C2
  • pipe 2 address - C2 C2 C2 C2 C3
  • pipe 3 address - C2 C2 C2 C2 C4
  • pipe 4 address - C2 C2 C2 C2 C5
  • pipe 5 address - C2 C2 C2 C2 C6

Can anyone help us achieve full throughput in multiciever configuration?

  • So if I understand you correctly you send a single packet every 15ms, from each PTX?
    How long is the payload?
    Also, is there any particular reason you are using 250kbps data rate and -18dBm output power?
    If you increase the data rate you get shorter packets with less chance of collision, and to compensate for the range loss you can just increase the output power.
    Is the TX time for each PTX set at a fixed interval on each device? For best performance you want a timing system that tries to find unique time slots for each PTX, so that they don't collide over and over.
    Best regards

Related