Electronic – GND difference between CAN nodes


I am running a short (2 m) CAN bus with about 20 nodes. 1 Mbit/s speed, PIC 18F2580s and 18F4580s with MCP2551 transceivers, 10 MHz (with PLL to 40 MHz) crystal oscillators. Both ends are terminated at 120 ohms. Sample point is at 70%.

Nodes are in three groups, each powered from a separate isolated power supply, but the grounds are all commoned along the bus.

I get quite a number of message errors, framing, bit stuffing. Looking at CANH and CANL on an oscilloscope, everything looks beautiful. No ringing, no reflections, and the timing correct. Measuring the oscillators with an accurate frequency measurer shows only a tiny variation.

So far, the only way I have been able to reduce the number of message errors is to beef up the ground wire along the bus until I get the GND difference below about 150 mV. The further above that I go, the more errors I get.

Why? According to the MCP2551 datasheet, they should be able to cope with GND differences up to 7 V!

Am I misunderstanding something?

Best Answer

Are you sure the message errors are a result of the CAN bus and not a result of the performance of the rest of the node(the PIC circuits)?

CAN is differential, as long as you don't exceed the common mode voltage limits of the transceiver the relative ground levels shouldn't matter and there is no need to send a ground connection with the CAN signals (maybe a shield but thats a different story).

However with isolated power supplies yet the ground connection being there you well could have some ground current loops that are causing problems with the rest of the circuit.