# CAN Protocol

The CAN (Controller Area Network) protocol is a serial-based digital communication protocol developed by BOSCH. It was initially developed for use in the automotive industry. It makes use of priority-based message arbitration. The voltage is not part of the standard, and operating voltages of 5V or 12V are commen.

A alternative communications protocol used in similar applications is the LIN protocol.

# Bit Rate And Transmission Distances

The following equation can be used as a rule-of-thumb to calculate the maximum transmission speed for distances larger than 50m.

$BR\times L\leq 60$

where:
$BR$ = bit rate (in Mbit/s)
$L$ = length (in m)

A table of common distances/transmission rates is shown below:

 Speed Distance 1Mbit/s 25m 800kBit/s 50m 500kBit/s 100m 250kBit/s 250m 125kBit/s 500m 50kBit/s 1000m 20kBit/s 2500m 10kBit/s 5000m

# Arbitration

The CAN network uses priority-based message arbitration. The drivers to the CAN line(s) are open-drain. This means that if a node writes a 0 (dominant), it will over-write a 1 (recessive). This is also called a “wired AND” configuration.

# Bit Stuffing

Any sequential sequence of 5 bits of the same type requires the transmitter to insert a bit of the opposite polarity. Consequentially, the receiver has to remove this bit from the incoming data stream.

# Message Lengths

There are two different message lengths supported by the CAM protocol.

• CAM Base Frame (CAN2.0A)
• CAM Extended Frame (CAN2.0B)

# Errors

There are 5 different types of errors:

• Bit Error: The transmitter monitors the bus level as it sends bits. If the level is not the same as what it is transmitting, a bit error occurs. Physical layer error.
• Stuff Error: If 6 or more consecutive bits of the same type are found. Physical layer error.
• Format Error: Data-link layer error.
• CRC Error: When the computed CRC does not match the one received in the message packet. Data-link layer error.
• Acknowledge (ACK) Error. Data-link layer error.

# Standards

## ISO11898

Widely followed basic CAN standard, defining parts of the physical and data link layers.

## CANopen

CANopen was developed for embedded devices in automation systems . It defines the OSI network layers that the basic CAN standards leaves unspecified, which includes the network layer and above.

## NEMA 2000

A communication protocol for ships which is based on the CAN standard.

## SAE J1939-11

Uses a shielded twisted pair. Used in trucks, agricultural and industrial equipment.

# IC’s

Atmel T89C51CC01 Microcontroller. 8-bit 8051 architecture, with CAN interface. Supports bootloading from the CAN protocol

MCP2551: Microchip Highspeed CAN Transceiver

The Freescale MC9SO8D range of microcontrollers have built-in support for both CAN and LIN communication protocols. The CAN peripheral block is called an MSCAN.