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

Reply
  • 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

Children
Related