1

I'm sending a message on a CAN bus with no powered on nodes. The CAN message returned has a message ID of 0x2000 0088, which indicates a CAN_ERR_FLAG.

CAN_ERR_PROT and CAN_ERR_BUSERROR are set.

Data[0..7]: 0x00 0x00 0x80 0x19 0x00 0x00 0x00 0x00

Decoding the data[2] = CAN_ERR_PROT_TX and, data[3] = CAN_ERR_PROT_LOC_ACK

This is an expected condition as there are no nodes on the bus to acknowledge the message.

But...

We are epolling on the device and its continuously reporting the above error. Even if we turn on a CAN node we still receive these errors.

If we start our application with the CAN node powered on everything behaves as expected.

Wireshark capture

How should we recover from this condition?

  • 1
    Most likely the device you're polling with is in listen only/silent mode. That's the only way I can think of that it would fail to acknowledge the messages. As for recovering after ack errors the easiest way would be to reinitialize the bus. – Teejay Bruno Aug 16 '21 at 20:08
  • What makes you think it is caused by software? [What are the most common causes of CAN bus communication errors?](https://electrical.codidact.com/posts/276251) – Lundin Aug 17 '21 at 06:51

0 Answers0