esb rx with multiple tx devices.

Now I have some devices that use esb proprietary protocols. They have the same address as well as the channel address.

Now suppose there are multiple tx devices and one rx device at the same time.

If there are multiple tx devices trying to send data to rx with ack enabled, how will rx process the data? Will there be a failure?

( In my tests (The package is sent once a minute) , it seems to be happening, but I'm not sure why, maybe there's something wrong with my code.  Some devices lose packets once in 10 times, while others lose packets once in 20 times, but I'm not sure if it's because they receive data at the same time but don't have time to process it.)

TX:

- esb config -:

ESB_DPL, ret...delay = 0xffff, ret...count = 1, bit = 1MBPS, auto_ack = true, output_power = 4dbm

- Timer code structure - :

Enable HFCLK, Set payload, Init esb, Write payload

- esb callback -:

Disable esb, Disable HFCLK.

RX:

- esb callback -:

Read payload, Fifo put, write payload ( "OK" message )

- config -:

NEVER_DISABLE_TX

ESB_TX_FIFO_SIZE=16

ESB_RX_FIFO_SIZE=16

I use the development board made by myself, and RX needs low power consumption, which has been implemented so far, so it is very necessary to provide transmission efficiency. Is there anything I can optimize?

Parents
  • Hello,

    It's not a good idea to have several PTX that send data to the same PRX using the same address, the problem is that since all devices share address and use ack, you can end up in a situation that a PTX will interpret the packet from another PTX as the ACK for it's previously sent packet. So, ideally you can use a shared address the first packet, but then switch to one of the available "pipes" that the PRX have, so you ensure that normally every PTX use their own address.

    Kenneth

Reply
  • Hello,

    It's not a good idea to have several PTX that send data to the same PRX using the same address, the problem is that since all devices share address and use ack, you can end up in a situation that a PTX will interpret the packet from another PTX as the ACK for it's previously sent packet. So, ideally you can use a shared address the first packet, but then switch to one of the available "pipes" that the PRX have, so you ensure that normally every PTX use their own address.

    Kenneth

Children
Related