I'm working on a CAN Bus Module with ATMEGA328P, MCP2515 and MCP2551. In my test setup, I have the module connected to a Raspberry Pi with a CAN hat.

The communication works in general - both nodes receive and decode the messages of the other node just fine. After hooking up a scope to the bus, I found that my module seems to send with 4V differential voltage while the raspberry sends with 2V as expected.

CAN part of my schematic:

CAN part of my schematic

A message sent by the Raspberry Pi (differential measurement): A message sent by the Raspberry Pi

A message sent by my module: A message sent by my module

The pink channel shows the voltage on the MCP2551's VDD pin between 4.9V and 5.2V - although the level is not totally smooth, it should be well within the supply voltage limits of the MCP2551)

Termination is 120Ohm on both Raspberry Pi and my module.

Any hints on why the MCP2551 in my module is sending with twice the expected voltage?

  • \$\begingroup\$ What the CAN specification says? \$\endgroup\$ Mar 29, 2021 at 6:54
  • \$\begingroup\$ A differential measurement isn't very helpful. First of all, measure resistance between CANH and CANL when all nodes are connected - is it 60 ohm? If not, then that's problem number 1. Otherwise, measure CANH and CANL individually. Should be 2.5V +1V for CANH and -1V for CANL. Sometimes when either of them is missing, it results in strange voltage levels on the other. \$\endgroup\$
    – Lundin
    Mar 29, 2021 at 8:00

1 Answer 1


I found the answer in a mistake with the oscilloscope probes - I used a standard probe for the differential measurement in the question instead of a differential probe. When measured with 2 separate probes against ground, the voltage difference is 2V as expected for both nodes transmitting.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.