Controller Area Network (CAN)
Controller Area Network (CAN)
Controller Area Network (CAN or CAN-bus) is a computer network protocol and bus
standard designed to allow microcontrollers and devices to communicate with each
other and without a host computer.
It was designed specifically for automotive applications but is now also used in other
areas.
CAN is also supported in the Linux Kernel since the 2.6.25 version.
Contents
[hide]
• 1 Origins
• 2 Applications
o 2.1 Automotive
• 3 CAN Network Testing
• 4 Technology
• 5 Data transmission
• 6 Bit timing
• 7 Layers
• 8 Frames
o 8.1 Data frame
8.1.1 Base frame format
8.1.2 Extended frame format
o 8.2 Remote frame
o 8.3 Error frame
o 8.4 Overload frame
• 9 Interframe spacing
• 10 Bit stuffing
• 11 Standards
• 12 Higher layer implementations
• 13 See also
• 14 References
• 15 External links
[edit] Origins
CAN-bus was originally developed in 1988 by Intel Corporation and Robert Bosch
GmbH[1]
[edit] Applications
[edit] Automotive
A modern automobile may have as many as 50 control units for various subsystems.
Typically the biggest processor is the Engine Control Unit; others are used for
transmission, airbags, antilock braking, cruise control, audio systems, windows, mirror
adjustment, etc. Some of these form independent subsystems, but communications
among others is essential. A subsystem may need to control actuators or receive
feedback from sensors. The CAN standard was devised to fill this need.
The CAN bus may be used in vehicles to connect engine control unit and transmission,
or (on a different bus) to connect the door locks, climate control, seat control, etc. Today
the CAN bus is also used as a fieldbus in general automation environments: this is
especially because of the cheap prices of some CAN Controllers and processors. On the
other hand any official use of CAN requires that a fee for the CAN Protocol License is
to be paid to Bosch who developed the protocol and hold patents.
The development of distributed network based systems often utilizes multiple suppliers
for the prototyping of different modules and sub-systems. In order to best control the
complexities incorporated from such a distributed developmental process, the Original
Equipment Manufacturer usually requires a set of standard tests and procedures to be
run on the prototypes prior to delivery.
These tests usually require the prototype ECU to be connected to a simulated system
where performance measurements can be made for consideration of the physical layer,
communication layer, and application layer. The standard tests are run repeatedly until
the Device Under Test (DUT) passes all necessary tests. The requirements for testing
vary depending on the Original Equipment Manufacturers focus and may include
portions of the following sample test sequence:
Communication: First Frame Timing, Wakeup Sequence, Periodic Frame Times, Event
Frames
The supplier module level testing cleans up a majority of issues, however the greatest
task of identifying and troubleshooting issues is often confronted during the integration
testing phase. The integration testing phase requires that the “live” ECU’s be
interconnected for the first time and the ultimate goal of this phase is to eliminate all
causes of system behavior which may negatively impact the manufactured products
reliability.
Time constraints require efficient use of test processes, available resources and tools to
ensure the highest levels of product quality are delivered at the conclusion of the
integration testing phase. Testing teams must possess a means for identification and
isolation of faults, along with the experience needed for quickly assessing possible root
causes. The time required for actually tracking down and solving the root failure mode
can often be extremely difficult and not time effective in widely distributed processes.
Testing tools must be scalable, flexible, and integrate able to provide test coverage for
all pertinent levels of the OSI model. The ideal test tools themselves must provide the
knowledge and know-how of skilled engineers by identifying questionable conditions,
and then using reasoning to guide the test engineer in solving the issue. The tool should
also be easily configurable, comprehensive, include predefined test libraries, and
provide extremely reliable measurements..
[edit] Technology
CAN is a broadcast (bus), differential serial bus standard for connecting electronic
control units (ECUs).
Each node is able to send and receive messages, but not simultaneously: a message
(consisting primarily of an ID — usually chosen to identify the message-type/sender —
and up to 8 message bytes) is transmitted serially onto the bus, one bit after another —
this signal-pattern codes the message (in NRZ) and is sensed by all nodes.
The devices that are connected by a CAN network are typically sensors, actuators and
control devices. A CAN message never reaches these devices directly, but instead a
host-processor and a CAN Controller is needed between these devices and the bus.
If the bus is free, any node may begin to transmit. If two or more nodes begin sending
messages at the same time, the message with the more dominant ID (which has more
dominant bits ie. bit 0) will overwrite other nodes' less dominant IDs, so that eventually
(after this arbitration on the ID) only the dominant message remains and is received by
all nodes.
Each node requires
• a host-processor
o The host-processor decides what received messages mean, and which
messages it wants to transmit itself
o Sensors, actuators and control devices can be connected to the host-
processor (if desired)
• a CAN Controller (hardware with a synchronous clock)
o Receiving: the CAN Controller stores received bits (one by one) from the
bus until an entire message is available, that can then be fetched by the
host processor (usually after the CAN Controller has triggered an
interrupt)
o Sending: the host-processor stores its transmit-messages into a CAN
Controller, which transmits the bits serially onto the bus
• a Transceiver (possibly integrated into the CAN Controller)
o Receiving: it adapts signal levels from the bus, to levels that the CAN
Controller expects and has protective circuitry that protect the CAN
Controller
o Sending: it converts the transmit-bit signal received from the CAN
Controller into a signal that is sent onto the bus
Bit rates up to 1 Mbit/s are possible at network lengths below 40 m. Decreasing the bit
rate allows longer network distances (e.g. 125 kbit/s at 500 m).
The CAN data link layer protocol is standardized in ISO 11898-1 (2003). This standard
describes mainly the data link layer — composed of the Logical Link Control (LLC)
sublayer and the Media Access Control (MAC) sublayer — and some aspects of the
physical layer of the OSI Reference Model. All the other protocol layers are left to the
network designer's choice.
This is achieved by CAN transmitting data through a binary model of "dominant" bits
and "recessive" bits where dominant is a logical 0 and recessive is a logical 1. This
means open collector, or 'wired or' physical implementation of the bus (but since
dominant is 0 this is sometimes referred to as wired-AND). If one node transmits a
dominant bit and another node transmits a recessive bit then the dominant bit "wins" (a
logical AND between the two).
So, if you are transmitting a recessive bit, and someone sends a dominant bit, you see a
dominant bit, and you know there was a collision. (All other collisions are invisible.)
The way this works is that a dominant bit is asserted by creating a voltage across the
wires while a recessive bit is simply not asserted on the bus. If anyone sets a voltage
difference, everyone sees it, hence, dominant. Thus there is no delay to the higher
priority messages, and the node transmitting the lower priority message automatically
attempts to re-transmit 6 bit clocks after the end of the dominant message.
When used with a differential bus, a Carrier Sense Multiple Access/Bitwise Arbitration
(CSMA/BA) scheme is often implemented: if two or more devices start transmitting at
the same time, there is a priority based arbitration scheme to decide which one will be
granted permission to continue transmitting. The CAN solution to this is prioritised
arbitration (and for the dominant message delay free), making CAN very suitable for
real time prioritised communications systems.
During arbitration, each transmitting node monitors the bus state and compares the
received bit with the transmitted bit. If a dominant bit is received when a recessive bit is
transmitted then the node stops transmitting (i.e., it lost arbitration). Arbitration is
performed during the transmission of the identifier field. Each node starting to transmit
at the same time sends an ID with dominant as binary 0, starting from the high bit. As
soon as their ID is a larger number (lower priority) they'll be sending 1 (recessive) and
see 0 (dominant), so they back off. At the end of ID transmission, all nodes but one have
backed off, and the highest priority message gets through unimpeded
[edit] Layers
Based on levels of abstraction, the structure of the CAN protocol can be described in
terms of the following layers:
• Application Layer
• Object Layer
o Message Filtering
o Message and Status Handling
• Transfer Layer
The Transfer Layer represents the kernel of the CAN protocol. It presents
messages received to the object layer and accepts messages to be transmitted
from the object layer. The transfer layer is responsible for bit timing and
synchronization, message framing, arbitration, acknowledgement, error
detection and signaling, and fault confinement. It performs:
o Fault Confinement
o Error Detection
o Message Validation
o Acknowledgement
o Arbitration
o Message Framing
o Transfer Rate and Timing
o Information Routing
• Physical Layer
The physical layer defines how the signals are actually transmitted. Tasks
include:
o Signal Level and Bit Representation
o Transmission Medium
[edit] Frames
A CAN network can be configured to work with two different message (or "frame")
formats: the standard or base frame format (or CAN 2.0 A), and the extended frame
format (or CAN 2.0 B). The only difference between the two formats is that the “CAN
base frame” supports a length of 11 bits for the identifier, and the “CAN extended
frame” supports a length of 29 bits for the identifier, made up of the 11-bit identifier
(“base identifier”) and an 18-bit extension (“identifier extension”). The distinction
between CAN base frame format and CAN extended frame format is made by using the
IDE bit, which is transmitted as dominant in case of an 11-bit frame, and transmitted as
recessive in case of a 29-bit frame. CAN controllers that support extended frame format
messages are also able to send and receive messages in CAN base frame format. All
frames begin with a start-of-frame (SOF) bit that, obviously, denotes the start of the
frame transmission.
The data frame is the only frame for actual data transmission. There are two message
formats:
The CAN standard requires the implementation must accept the base frame format and
may accept the extended frame format, but must tolerate the extended frame format.
Length
Field name Purpose
(bits)
Start-of-frame 1 Denotes the start of frame transmission
Identifier 11 A (unique) identifier for the data
Remote transmission
1 Must be dominant (0)Optional
request (RTR)
Identifier extension bit
1 Must be dominant (0)Optional
(IDE)
Reserved bit (it must be set to dominant (0), but
Reserved bit (r0) 1
accepted as either dominant or recessive)
Data length code (DLC) 4 Number of bytes of data (0-8 bytes)
Data to be transmitted (length dictated by DLC
Data field 0-8 bytes
field)
CRC 15 Cyclic redundancy check
CRC delimiter 1 Must be recessive (1)
Transmitter sends recessive (1) and any receiver can
ACK slot 1
assert a dominant (0)
ACK delimiter 1 Must be recessive (1)
End-of-frame (EOF) 7 Must be recessive (1)
One restriction placed on the identifier is that the first 7 bits cannot be all recessive bits.
(I.e., the 16 identifiers 1111111xxxx are invalid.)
Length
Field name Purpose
(bits)
Start-of-frame 1 Denotes the start of frame transmission
Identifier A 11 First part of the (unique) identifier for the data
Substitute remote
1 Must be recessive (1)Optional
request (SRR)
Identifier extension bit
1 Must be recessive (1)Optional
(IDE)
Identifier B 18 Second part of the (unique) identifier for the data
Remote transmission
1 Must be dominant (0)
request (RTR)
Reserved bits (it must be set dominant (0), but
Reserved bits (r0, r1) 2
accepted as either dominant or recessive)
Data length code (DLC) 4 Number of bytes of data (0-8 bytes)
Data to be transmitted (length dictated by DLC
Data field 0-8 bytes
field)
CRC 15 Cyclic redundancy check
CRC delimiter 1 Must be recessive (1)
Transmitter sends recessive (1) and any receiver
ACK slot 1
can assert a dominant (0)
ACK delimiter 1 Must be recessive (1)
End-of-frame (EOF) 7 Must be recessive (1)
•Generally data transmission is performed on an autonomous basis with the data source
node (e.g. a sensor) sending out a Data Frame. It is also possible, however, for a
destination node to request the data from the source by sending a Remote Frame. •There
are 2 differences between a Data Frame and a Remote Frame. Firstly the RTR-bit is
transmitted as a dominant bit in the Data Frame and secondly in the Remote Frame
there is no Data Field.
i.e.
The first field is given by the superposition of ERROR FLAGS contributed from
different stations. The following second field is the ERROR DELIMITER.
The overload frame contains the two bit fields Overload Flag and Overload Delimiter.
There are two kinds of overload conditions that can lead to the transmission of an
overload flag:
1. The internal conditions of a receiver, which requires a delay of the next data
frame or remote frame.
2. Detection of a dominant bit during intermission.
The start of an overload frame due to case 1 is only allowed to be started at the first bit
time of an expected intermission, whereas overload frames due to case 2 start one bit
after detecting the dominant bit. Overload Flag consists of six dominant bits. The
overall form corresponds to that of the active error flag. The overload flag’s form
destroys the fixed form of the intermission field. As a consequence, all other stations
also detect an overload condition and on their part start transmission of an overload flag.
Overload Delimiter consists of eight recessive bits. The overload delimiter is of the
same form as the error delimiter.
Interframe spacing between frames is normaly 96 bits. It provides time for machines on
an Ethernet network to listen and have a chance to send data.
[edit] Bit stuffing
In CAN frames, a bit of opposite polarity is inserted after five consecutive bits of the
same polarity. This practice is called bit stuffing, and is due to the "Non Return to Zero"
(NRZ) coding adopted. The "stuffed" data frames are destuffed by the receiver. Since bit
stuffing is used, six consecutive bits of the same type (111111 or 000000) are considered
an error. Bit stuffing implies that sent data frames could be larger than one would expect
by simply enumerating the bits shown in the tables above.
[edit] Standards
There are several CAN physical layer standards:
ISO 11898-2 uses a two-wire balanced signaling scheme. It is the most used physical
layer in car powertrain applications and industrial control networks.
SAE J1939 standard uses a two-wire twisted pair, -11 has a shield around the pair while
-15 does not. SAE 1939 is widely used in agricultural & construction equipment.
ISO 11783-2 uses four unshielded twisted wires; two for CAN and two for terminating
bias circuit (TBC) power and ground. This bus is used on agricultural tractors. This bus
is intended to provide interconnectivity with any implementation adhering to the
standard.
An ARINC technical working group develops the ARINC 825 standard with special
requirements for the aviation industry.