CAN - A Brief Tutorial: Nuts and Bolts
CAN - A Brief Tutorial: Nuts and Bolts
The CAN bus (Controller Area Networking) was defined in the late 1980 by Bosch, initially
for use in automotive applications.
It has the following characteristics:
CAN is unusual in that the entities on the network, called nodes, are not given specific
addresses. Instead, it is the messages themselves that have an identifier which also
determines the messages' priority. For this reason there is no theoretical limit to the number
of nodes although in practice it is ~64.
Two specifications are in use:
2.0A sometimes known as Basic or Standard CAN with 11 bit message identifiers
which was originally specified to operated at a maximum frequency of 250Kbit/sec -
ISO11519.
2.0B known as Full CAN or extended frame CAN with 29 bit message identifier which
can be used at up to 1Mbit/sec - ISO 11898.
Message formats
The CAN protocol uses a modified version of the Carrier Sense Multiple Access/Collision
Avoidance (CSMA/CA) technique used on Ethernet. Should two messages determine that
they are both trying to send at the same time then instead of both backing off and re-trying
later as is done with Ethernet, in the CAN scheme, the transmitters detect which message
has the highest priority and only the lower priority message gets delayed. This means that a
high priority message is sure of getting through.
Message Frames
These are the normal frames used to carry data. They contain the following fields -- this is a
simplified description as the controller takes care of the detail which is only of interest to
those designing controllers (who should consult the spec)
Start of frame (SOF)
Message Identifier (MID) either 11 or 29 bits long depending on the chosen mode
Remote Transmission Request (RTR) = 0 ----- see "Remote Frames" para below for non
zero value
Control field (CONTROL) this specifies the number of bytes of data to follow (0-8)
Data Field (DATA)
CRC field containing a fifteen bit cyclic redundancy check code
Acknowledge field (ACK) an empty slot which will be filled by the receiving node on
successful reception
End of Frame (EOF)
The way in which message collision is avoided is that each node as it transmits its MID looks
on the bus to see what everyone else is seeing. If it is in conflict with a higher priority
message identifier (one with a lower number) then the higher priority messages bit will hold
the signal down (a zero bit is said to be dominant) and the lower priority node will stop
transmitting.
Remote Frames
These are frames that are used to request that a particular message be put on the network -
of course a node somewhere on the network has to be set up to recognise the request, get
the data and put out a Message frame. This mechanism is used in polled networks. The
fields are ....
Start of frame (SOF)
Message Identifier (MID) either 11 or 29 bits long depending on the chosen mode.
Remote Transmission Request (RTR) = 1
Control field (CTRL) this specifies the number of bytes of data expected to be returned (0-
8).
CRC field containing a fifteen bit cyclic redundancy check code.
Acknowledge field (ACK) an empty slot which will be filled by the receiving node.
End of Frame (EOF)
Error checking
CAN is a very reliable system with multiple error checks
Stuffing error - a transmitting node inserts a high after five consecutive low bits (and a low
after five consecutive high). A receiving node that detects violation will flag a bit stuffing
error.
Bit error - A transmitting node always reads back the message as it is sending. If it detects
a different bit value on the bus than the one it sent, and the bit is not part of the arbitration
field or in the acknowledgement field, an error is detected.
Checksum error - each receiving node checks CAN messages for checksum errors.
Frame error - There are certain predefined bit values that must be transmitted at certain
points within any CAN Message Frame. If a receiver detects an invalid bit in one of these
positions a Form Error (sometimes also known as a Format Error) will be flagged.
Acknowledgement Error - If a transmitter determines that a message has not been
ACKnowledged then an ACK Error is flagged.
Variants
By defining only the physical and data link levels of the OSI communications model the CAN
specification has become the basis for a wide number of industry and manufacture specific
variants (and the source of much confusion as all the users may say they are using CAN). If
you are trying to clarify a CAN systems status the first thing to find out is the transceivers in
use - the most common "normal 5v" CAN uses the Philips 82C251 or the TJA1040.
TJA 1054 is a low power, low speed physical layer that is mostly used in automotive
applications. It employs the PCA82C252, TJA1053 or TJA1054 transceivers.
AU5790 also known as "Single Wire CAN" is a low power, low speed physical layer that is
mostly used in automotive applications. It employs the AU5790 transceiver.
DeviceNet - Developed for use in industrial process control it is based on the standard Full
CAN - ISO 11898-2 5v bus. However DeviceNet rigorously defines the physical interconnect,
has a more restrictive transceiver specification, 11 bit identifiers only, allows 125, 250 and
500KBaud operation only and regulates the message content allowing interoperability of
different manufacturers units.
CANopen - Also designed with control applications in mind, it is a software standard based
on the standard Full CAN - ISO 11898-2 5v bus. It limits the number of nodes to 127 and
allocates them IDs. Profiles are specified for each type of device by CiA to simplify using
systems from multiple manufacturers. Some standard network commands are defined that
allow modules to be automatically identified and allocated a node ID. The spec also defines
a way to handle synchronised data reads and writes as well as providing a standard way in
which large blocks of data can be read and written. We can supply CANopen diagnostic
and network management software.
TTCAN - Time Triggered CAN - The Time-Triggered Protocol has nodes reporting in
predefined time windows that have to be planned and synchronised but which then ensure
that an overload on the bus is not possible even in a worst case situation.
J1939 - A whole family of industry specific standards (agriculture, marine, truck & bus etc)
are built on the basic communication services of the J1939 specifications ( itself based on
Full CAN - ISO 11898-2) with industry-specific documents defining the particular
combination of layers for that industry.
B10011S is the Truck-Trailer CAN bus (ISO 11992-1) Specification (known as FMS or Bus-
FMS), it is a subset of J1939. For a software packages that knows the meaning of all the
FMS messages and can display them in a meaningful way see our FMS Toolkit.
MilCAN - is defined for use in military land vehicles where a deterministic protocol is
require. It sets up some rules for use and a software layer on top of a conventional CAN
network. A Pseudo Hardware Sync is created by one node "the SyncMaster" that sends
Sync CAN Frames with a "sync slot number".
MilCAN A uses 29 bit Identifiers. It allows both periodic and event driven data to be
transmitted via the bus.
MilCAN B uses 11 bit identifiers. It allows only periodic data to be transmitted via the bus
Adapter for
Max Max
Standard Common Name Baud Rate PCAN
nodes Length
interfaces
ISO 11783 ISOBUS 250 KBit/s 30 40m None
ISO 11898-
High speed-CAN max. 1 MBit/s 110 6500 m None
2
ISO 11898- Fault Tolerant PCAN
max. 125 KBit/s 32 500 m
3 CAN TJA1054
FMS or 2 (Point to PCAN-
ISO 11992 max. 125 KBit/s Point) 40 m
Truck/Trailer CAN BD10011S
Diagnostics On
ISO 15765
CAN
max 1 MBit/s 110
SAE
J1939 250 KBit/s 30 40m
LIN
Local Interconnect Network is simpler than CAN and is often used in automotive "body
functions" where performance is not critical but cost is with CAN being used to integrate the
operation of multiple LIN sub networks. LIN is a single master, multiple slave system that
uses a 12V single wire physical layer and a UART/SDI with master driven self
synchronisation. It is capable of running at data rates of up to 20Kbits per second over a
maximum distance of 40 Meters. We have a LIN to CAN gateway which simplifies
developing LIN and mixed systems.