CAN message appears on the CAN Bus multiple times

I have an environment that consists of a Tracker SOM Evaluation Board, Kvaser Leaf Light V2, and an ECU. I’m developing a prototype on the Tracker - the main feature is to reflash a new application into the ECU. I’m using Uds messages. Using the Kvaser cable and Kvaser CanKing I observe certain messages repeating. I’ve confirmed through debug output messages that the Tracker code is only sending the message once. I researched the mcp25625 one-shot as possible culprit. I’ve added the enOneShotTX routine found here (GitHub - coryjfowler/MCP_CAN_lib: MCP_CAN Library) and have added a call when I init but I still see the same duplicate message behavior.

I’ve tested with and without termination on the CAN bus - I did this as I found one source that says the Tracker includes termination and one that says it doesn’t. The duplicate behavior exists with and without termination.

Note that the duplicate messages vary from session to session - meaning it’s not always the same message. Many times, the duplicate is the first message transmitted.

Any assistance will be greatly appreciated!!!

The Tracker One does not include the termination resistors, though they might be mentioned in some older posts because the pre-production units did have them, but they were removed in the production units so no customer units should have ever had terminating resistors.

The Tracker SoM Evaluation board does have 120 ohm termination resistors.

I’d guess that you are still having reflections from improper termination. There should be 120 ohms at both ends of the CAN bus. So it does matter where in the bus the Tracker is positioned.

With the eval board, it pretty much needs to be at one end or the other, because it has built in resistors. If you need to position the eval board tapped into the middle of the bus, you need to remove the termination resistors from the eval board and put termination resistors at the ends of the bus.

Wow - thank you for the quick answer!!

I’ve confirmed that both ends of the CAN bus are terminated with 120 ohms. I turned all units off and measured 60 ohms of resistance between CAN H and CAN L. I’m still getting reflection. I am powering the CAN bus with a 12V supply as that is what is required for the ECU controller. For the Tracker, I’m only connecting CAN H and CAN L wires to the CAN bus. Is it possible that I have a ground issue?

Should add one more piece of information. The entire reflash process is running on a separate Thread. Is there any way that is causing issues?

It might not be reflections, it could be some other issue that I am not aware of.

CAN is differential so you don’t need a separate ground, you only need the two CAN data lines (H and L, or P and N).