Multi-host with ESB

I plan to use an ESB as a low latency and high speed protocol.

However, there must be multiple hosts on one network.

Hosts or devices must be able to communicate with multiple hosts simultaneously or sequentially.

However, this communication only occurs at limited times, and typically forms a 1:n general ESB network.

Here are some ideas.

1. The host uses the same address. It has a unique ID somehow, and the device sends data specifying the host ID. The host ignores packets not addressed to it.

2. The host uses a different address. The device dynamically switches addresses and changes destination host.

The problems I can think of are as follows.

1. Because noack packets are used, data cannot be sent from the host to the device. Is there some way to avoid collisions in data transmission from the host to the device?

2. The device has to dynamically switch addresses. Is this supported?

Could you please give me some advice?

Parents
  • Hello,

    I get the impression you have already started a good thought process on how to implement this. In a system with multiple devices and multiple hosts, I think using noack is a good idea, you can still implement a soft implemented bi-directional data (handled fully by the MCU), where for instance device will switch channel after transmitting a packet, and for instance listen in rx mode for a short period in case the host have received the packet and want to send some data in reverse direction. In ESB you are very free to modify any parameter when in idle mode, so shortly after transmitting or receiving packet, there is no problem to change address or frequency if you want.

    Kenneth

  • A new question has arisen, so let me ask it.
    Considering the existence of selective_auto_ack, is it possible to configure the host so that only one host out of multiple hosts returns an Ack by changing the host settings?
    This may require modifying the ESB library, but if this is possible, it seems like a very powerful solution.

  • This selective auto ack is a feature to allow ack or noack to be used by the transmitter. But I would expect it should be possible to modify the ESB library to force it to not send ack whatsoever, but you would have to look at the source of the ESB library and perform those changes yourself in this case. But yes, I expect it should be possible.

    Kenneth

Reply
  • This selective auto ack is a feature to allow ack or noack to be used by the transmitter. But I would expect it should be possible to modify the ESB library to force it to not send ack whatsoever, but you would have to look at the source of the ESB library and perform those changes yourself in this case. But yes, I expect it should be possible.

    Kenneth

Children
No Data
Related