Introduction to CAN

Controller Area Networking or CAN is a communications standard with a rather prolific set of offspring that includes DeviceNet, CANopen, Can Kingdom and several hundred other offspring all over the world.

CAN is a serial communications standard for intelligent devices to communicate with each other. Unlike many other communication standards that provide fast data rates with thousands or millions of data bytes in a single frame, CAN has a bit rate that maxes out at 1 mega baud. Most industrial applications don’t even need that speed. Most use the lowly 125 kbaud. And where other standards move thousands of bytes in a single frame, CAN only move 8 bytes of data.

But where speed and capacity are strengths for many of the other standards, CAN’s strength is its low overhead and simple physical interface.  With its small packet size, even at 500 kbaud, a frame with eight bytes of data is only on the network wire for a quarter of a millisecond. For many control applications, this is plenty fast. Over the years, the underpowered 8-bit micro has been used to get the job done using as little as 4 k of program memory and 256 bytes of RAM to support a CAN application.

Bosch created CAN in Germany in March of 1985. The Bosch Company designed it to replace automotive wiring. In the early days of specification version 1.2, CAN messages contained an 11-bit identifier providing the capability to address 2047 identifiers. In 1992 CAN Specification 2.0 extended the identifier size to 29 bits, providing up to 56 million unique identifiers. As both specifications are still in use (sometimes on the same wire), the original 1.2 specification is called part A and the new specification 2.0 is termed part B. A unique attribute of CAN is that only two of the OSI Reference Model layers are defined (Figure 1), the Data Link Layer and the Physical Layer. The CAN Data Link Layer is normally split into two sub-layers, the Physical Signaling sub-layer, and the Media Access Control (MAC) sub-layer.

Bosch drove the creation of CANopen as an application layer protocol on top of CAN in the 1990s. The first revision of the specification came in 1994. CANopen is used widely in many automation applications because of its:

  • Extremely robust physical layer
  • Open technology
  • Small processor footprint (RAM, ROM Requirements)
  • Inexpensive physical components with multiple sources

One of the most extraordinary features of CAN (and CANopen) is bitwise arbitration. Bitwise Arbitration is the process that CAN uses to prioritize messages without losing any network bandwidth. On a CAN network, “zero” bits dominate “one” bits. As a device transmits a message, it listens to the bits on the network. If a device transmits a one and hears a zero, it knows that a higher priority message is being transmitted and it discontinues transmitting. The node with the higher priority message hears the bits it is transmitting and never knows it conflicted with a lower priority message. The message sequence on the network is preserved.

In 1987, Intel designed and delivered the first off-the-shelf integrated circuit to support CAN, the 82526. Soon after that, Philips Semiconductors released the 82C200 CAN controller. Today, silicon vendors incorporate CAN by default in every advanced processor that they create. Almost every industrial embedded microcontroller on the planet now contains one or more CAN interfaces.

CAN is used extensively in Automobiles, with almost every new passenger car manufactured anywhere is equipped with at least one CAN network. It is used in other types of vehicles as well, from trains to ships, as well as in industrial controls. CAN is one of the most dominant bus protocols; with more than 100 million CAN devices delivered every year.