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

ANT Shared channel reverse message is not sent correctly

Hello.

I use nRF52 and tried to make the shared channel.

There are 1 Master and 1 ~ 3 Slave device.

When the master device send the notification messages to slave devices, they are received all messages.

And when the master send the messages in particular slave address (e.g. 0x01 0x00), the slaves are also received all messages, however, do not send the acknowledge messages(a.k.a reverse message) properly.

They only send the acknowledge messages once if they receive two forward messages.

To solve the problem, I also change the period to 50ms, 100ms, 1000ms, but it does not influence to the result.

Of course I read the document 'ANT_Message_Protocol_and_Usage_Rev_5.1' . But I don't know what is the problem.

Parents
  • Each slave in a shared channel network should have it's own unique 2byte address, this addess is set by calling a dummy sd_ant_broadcast_message_tx() on the slave, where the first 2 bytes is the address. All packets sent must have this fixed address. Channel type should be set to CHANNEL_TYPE_SHARED_SLAVE, as you have done.

    If the master wants to broadcast data to all slaves, then it sets the first 2bytes in sd_ant_broadcast_message_tx() to 0. If the master wants to send a packet to a specific slave, then it must set the 2first bytes to the unique address of the slave, only then can the slave also send data in reverse direction.

    Is this what you are doing? If you are, could you share your projects so I can test them here? You can edit your question and upload them there.

Reply
  • Each slave in a shared channel network should have it's own unique 2byte address, this addess is set by calling a dummy sd_ant_broadcast_message_tx() on the slave, where the first 2 bytes is the address. All packets sent must have this fixed address. Channel type should be set to CHANNEL_TYPE_SHARED_SLAVE, as you have done.

    If the master wants to broadcast data to all slaves, then it sets the first 2bytes in sd_ant_broadcast_message_tx() to 0. If the master wants to send a packet to a specific slave, then it must set the 2first bytes to the unique address of the slave, only then can the slave also send data in reverse direction.

    Is this what you are doing? If you are, could you share your projects so I can test them here? You can edit your question and upload them there.

Children
No Data
Related