4
\$\begingroup\$

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.

\$\endgroup\$
3
  • 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\$ Commented Sep 2, 2017 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\$ Commented Sep 2, 2017 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\$ Commented Sep 2, 2017 at 17:24

2 Answers 2

3
\$\begingroup\$

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.

\$\endgroup\$
2
  • \$\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\$ Commented Sep 2, 2017 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\$ Commented Sep 4, 2017 at 13:46
1
\$\begingroup\$

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.

\$\endgroup\$

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.