CAN bus transceivers come in 5 V and 3.3 V, and bus voltage levels are differential, 2.5 V +/-1.25 VV.

Is there a CAN bus which can be operated at 12 V (also the differential voltage is higher)? I would like to do this in order to make the bus more robust.

  • 1
    \$\begingroup\$ Why do you feel it is not robust enough? Increasing the differential voltage would dramatically increase the power dissipation in the termination resistors. \$\endgroup\$ – Kevin White Sep 2 '17 at 15:45
  • \$\begingroup\$ Thanks for the comment. I do agree it will increase the power dissipation. I was thinking noise margins would increase if run on higher voltage. \$\endgroup\$ – raj Sep 2 '17 at 16:05
  • 1
    \$\begingroup\$ Agreed, but why do you think the noise margins are insufficient? It is used successfully in millions of cars and industrial applications. \$\endgroup\$ – Kevin White Sep 2 '17 at 17:24

It depends on which parts of the CAN standard you want to adhere to. The nominal 2.5 V with 900 mV excursions is one part of the standard and is commonly used. There are off the shelf bus transceiver chips, like the MCP2551, that adhere to this standard.

However, you can make your own bus transceiver that uses whatever voltage levels you like, and still adhere to the logical and protocol parts of the standard. This still allows using the built-in CAN hardware in many microcontrollers. These usually have separate transmit and receive lines. Chips like the MCP2551 convert between that and the common 2.5 V differential CAN bus.

You could, for example, use RS-485 transceivers. That would give you a differential 0 to 5 V signal. You can implement your CAN bus as a open collector line. You can also create your own transceiver where the differential lines go from 0 to 12 V. If you do any of these things, though, don't expect off the shelf CAN devices to be able to connect directly.

Keep in mind that the 900 mV excursions of the standard CAN bus was chosen for a reason. The 120 Ω terminating resistors at each end are intended to match the typical impedance of a twisted pair. Otherwise, the 900 mV each line is supposed to be pulled from quiescent when the line is in dominant state is a tradeoff between noise immunity and current required against the 60 Ω impedance seen when driving the bus. In my experience, the noise immunity is quite good with that scheme. It is also routinely used in a cars, which are electrically very noisy. The car companies wouldn't be using this scheme if they didn't think it was sufficiently reliable.

  • \$\begingroup\$ Thanks for the detailed answer. I will not be able to make CAN transceiver. Running higher voltage gets more margin and hence this thought came to my mind. But from what you are saying it not going to that straight forward. \$\endgroup\$ – raj Sep 2 '17 at 16:07
  • \$\begingroup\$ Such solutions with RS-485 transceivers are from the dark ages... Instead of re-inventing the wheel, use fault-tolerant CAN transceivers that were explicitly designed for 0 - 5V levels. kvaser.com/about-can/the-can-protocol/can-physical-layers \$\endgroup\$ – Lundin Sep 4 '17 at 13:46

The 5V or 3.3V refers to the transceiver supply and the logic levels on the Tx/Rx lines. This voltage is not allowed to affect the CAN voltage levels, since they are indeed standardized to 2.5V +/-1V.

This is what we normally call CAN and it refers to the so-called "high speed" CAN, formally defined in ISO 11898-2, which is one of two possible standard hardware layers for a CAN bus.

You should not come up with home-brewn bus standards unless you absolutely must... In this case, you are trying to re-invent the wheel. There is already a standardized, fault-tolerant version of the CAN hardware layer, which works on 5V voltage levels, with baudrates up to 125kbps. This is formally named ISO 11898-3.

For fault-tolerant CAN you need special transceivers. I haven't used it myself, but TJA1055T or AMIS-41682 should be fine.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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