CAN Analyzer mode and no ACKs

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Not applicable
On my CAN bus, there is one transmitter node working in standalone mode (send-and-forget) and lots and lots of passive listeners. Reason behind this is that the transmitted frames are very time sensitive, so I can't afford having listening nodes malfunction and start spewing out Error Frames disrupting the bus timing.

The problem is that since all nodes are in Analyzer Mode, no ACKs are being sent which means that they all receive frames from the transmitter, but discards them.

The CAN Analyzer Mode makes it possible to monitor the CAN traffic for each CAN node
individually without affecting the logical state of the CAN bus. The CAN Analyzer Mode
for CAN node x is selected by setting Node x Control Register bit NCRx.CALM.

In CAN Analyzer Mode, the transmit pin of a CAN node is held at a recessive level
permanently. The CAN node may receive frames (Data, Remote, and Error Frames) but
is not allowed to transmit. Received Data/Remote Frames are not acknowledged (i.e.
acknowledge slot is sent recessive) but will be received and stored in matching message
objects as long as there is any other node that acknowledges the frame
. The complete
message object functionality is available, but no transmit request will be executed.


Is there any way to configure the MultiCAN peripheral to accept CAN frames without expecting another node to ACK? Connecting e.g. a Kvaser Dongle solves the issue for all the passive nodes (since it ACKs), but it's not a production line solution.
0 Likes
4 Replies
Not applicable
I don't know if it is possible to configure a MultiCAN node this way (and I am to lacy to check the manual now).
But what about configuring a second CAN node on your XMC and connect it somehow locally, just before the transceiver, or spent an additional transceiver.
0 Likes
Travis
Employee
Employee
First solution authored Welcome! 500 replies posted

Is there any way to configure the MultiCAN peripheral to accept CAN frames without expecting another node to ACK? Connecting e.g. a Kvaser Dongle solves the issue for all the passive nodes (since it ACKs), but it's not a production line solution.


Yes, XMC4500 CAN is able to be configured as analyzer mode, which can receive data/remote with no acknowledge.


18.3.5.1 Analyzer Mode
The CAN Analyzer Mode makes it possible to monitor the CAN traffic for each CAN node
individually without affecting the logical state of the CAN bus. The CAN Analyzer Mode
for CAN node x is selected by setting Node x Control Register bit NCRx.CALM.
In CAN Analyzer Mode, the transmit pin of a CAN node is held at a recessive level
permanently. The CAN node may receive frames (Data, Remote, and Error Frames) but
is not allowed to transmit. Received Data/Remote Frames are not acknowledged (i.e.
acknowledge slot is sent recessive) but will be received and stored in matching message
objects as long as there is any other node that acknowledges the frame. The complete
message object functionality is available, but no transmit request will be executed.
0 Likes
Not applicable
Travis wrote:
Yes, XMC4500 CAN is able to be configured as analyzer mode, which can receive data/remote with no acknowledge.


18.3.5.1 Analyzer Mode
The CAN Analyzer Mode makes it possible to monitor the CAN traffic for each CAN node
individually without affecting the logical state of the CAN bus. The CAN Analyzer Mode
for CAN node x is selected by setting Node x Control Register bit NCRx.CALM.
In CAN Analyzer Mode, the transmit pin of a CAN node is held at a recessive level
permanently. The CAN node may receive frames (Data, Remote, and Error Frames) but
is not allowed to transmit. Received Data/Remote Frames are not acknowledged (i.e.
acknowledge slot is sent recessive) but will be received and stored in matching message
objects as long as there is any other node that acknowledges the frame
. The complete
message object functionality is available, but no transmit request will be executed.


But see, the Analyzer mode still expects another node to acknowledge the message (I highlighted that part in your excerpt). Is there any way around this?
0 Likes
Not applicable
Heinz wrote:
I don't know if it is possible to configure a MultiCAN node this way (and I am to lacy to check the manual now).
But what about configuring a second CAN node on your XMC and connect it somehow locally, just before the transceiver, or spent an additional transceiver.

Good idea. Though in this case, I don't have any free pins suitable for CAN left. I've maxed out the processor already. Hence, I was hoping for a SW solution.
0 Likes