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

GZLL host not responding to more than 3 pipes

I am trying to set up a GZLL star network on the 51822. I understand that a single GZLL host can support up to eight devices but whenever my host attempts to communicate with more than 2 devices each communicating under a unique pipe the host controller seizes. It is still receiving packets from the other devices but it is unable to add any ACK packets to its tx fifo buffer.

Are there any examples of a host that will communicate with 8 devices simultaneously? Am I correctly understanding that each device should communicate via its own pipe?

Parents
  • Hi,

    It is correct that each device shall communicate with the host using an unique pipe. If you setup two devices on the same pipe (ie: same RF address), you will get a collision and your communication will not work properly.

    If I understand correctly, the communication works with 8 devices -> 1 host, but the ACK payload is unreliable? If yes, could you please elaborate on what's happening?

    Note that the host only has a 3 payload deep buffer in the FIFO. This means that if you upload 3 payloads on one pipe, where the device seldom sends payloads to the host (device does not poll the host often enough compared to other devices), you will use up all the space and block other devices from receiving an ack-payload.

    In general; it is very important to check your error codes given by the gazell function calls to see if there is anything that's failing.

    Cheers, Håkon

  • This is because you have limited space in your FIFO on the host side. You cannot upload more than 3 ACK-payloads. To resolve this, you will have to handle this on the host and device side. The device can simply send the command "Prepare an ACK payload for me", and then the host recognizes this command and uploads a packet into the host-FIFO. Then the device can send another payload to fetch the ACK-payload from the host. Or you can do this the other way around. Device can send payload #1, then if it has not received an ACK-payload, it sends dummy-payload #2 to retrieve the ACK-payload.

Reply
  • This is because you have limited space in your FIFO on the host side. You cannot upload more than 3 ACK-payloads. To resolve this, you will have to handle this on the host and device side. The device can simply send the command "Prepare an ACK payload for me", and then the host recognizes this command and uploads a packet into the host-FIFO. Then the device can send another payload to fetch the ACK-payload from the host. Or you can do this the other way around. Device can send payload #1, then if it has not received an ACK-payload, it sends dummy-payload #2 to retrieve the ACK-payload.

Children
No Data
Related