CAN Bus Errors Explained - A Simple Intro (2022 - #1 Tutorial) - CSS Electronics
CAN Bus Errors Explained - A Simple Intro (2022 - #1 Tutorial) - CSS Electronics
Products Software
Case Studies Docs
Guides Contact
a simple intro to
CAN errors
Need a practical intro to CAN bus errors?
In this tutorial you'll learn about the basics of CAN error handling, the 5 CAN bus
error types, the CAN error frame and CAN node error states.
To get practical, we'll also generate & record CAN errors in 6 experiments.
In this article
1. What are CAN bus errors?
2. The CAN error frame
3. 5 CAN error types
4. States & error counters
5. 6 practical experiments
6. LIN bus errors
7. CAN error logging use cases
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 1/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
8. FAQ
Download as PDF
A core benefit is the robustness of CAN, making it ideal for safety critical
applications. Here, it is worth noting:
CAN bus errors can occur for several reasons - faulty cables, noise, incorrect
termination, malfunctioning CAN nodes etc. Identifying, classifying and resolving
such CAN errors is key to ensuring the continued performance of the overall CAN
system.
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 2/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
6 bits 6 bits
TEC +8 REC+1 TEC-1 REC -1
1 1 3 1 3 1 3 1 3
1 0
Example step-by-step +
The example references a number of concepts that we will detail shortly: Error frames,
error types, counters and states.
To understand how this works, let us first look at a "normal" CAN frame (without
errors):
Bit stuffing is a subtle, but vital part of the CAN standard. Basically it states that
whenever a CAN node sends five bits of the same logic level (dominant or recessive),
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 3/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
it must send one bit of the opposite level. This extra bit is automatically removed by
the receiving CAN nodes. This process helps ensure continuous synchronisation of
the network.
As per the previous example, when CAN node 1 detects an error during the
transmission of a CAN message, it immediately transmits a sequence of 6 bits of the
same logic level - also referred to as raising an Active Error Flag.
Oscilloscope example +
Note that the other CAN nodes will see the Active Error Flag as a Bit Stuffing Error. In
response they also raise an Active Error Flag.
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 4/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
The result is that the error flags all overlap and the total sequence of dominant bits
lasts for 6 bits in total. All CAN nodes will in this case consider themselves the
'discovering' CAN nodes.
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 5/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
The other nodes only discover the Bit Stuffing Error after the full 6 bits have been
read, after which they simultaneously raise their error flags, resulting in a
subsequent sequence of 6 dominant bits - i.e. 12 in total.
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 6/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
Once halfway through the primary Active Error Flag, nodes 2 and 3 recognize the Bit
Stuffing Error (due to the 3 initial dominant bits being followed by another 3
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 7/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
dominant bits) and they begin raising their error flags. The result is that the
sequence of dominant bits from error flags becomes 9 bit long.
The above logic of raising error flags is reflected in what we call an 'active' CAN error
frame.
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 8/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
Note in particular how the secondary error flags raised by various nodes overlap
each other - and how the primary and secondary flags may overlap as well. The
result is that the dominant bit sequence from raised error flags may be 6 to 12 bits
long.
In practice, the active error frame may "begin" at different places in the erroneous
CAN frame, depending on when the error is discovered. The result, however, will be
the same: All nodes discard the erroneous CAN frame and the transmitting node can
attempt to re-transmit the failed message.
In this case it's relevant to distinguish between a Passive Error Flag raised by a
transmitting node and a receiving node.
This is in turn detected as a Bit Stuffing Error by all CAN nodes. Assuming the other
CAN nodes are still in their Error Active state, they will raise Active Error Flags of 6
dominant bits. In other words, a passive transmitter can still "communicate" that a
CAN frame is erroneous.
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 9/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 10/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
Effectively, this means that an Error Passive receiver no longer has the ability to
destroy frames transmitted by other CAN nodes.
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 11/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
We've already looked at Bit Errors and Bit Stuffing Errors briefly, both of which are
evaluated at the bit level. The remaining three CAN error types are evaluated at the
message level.
#1 Bit Error
Every CAN node on the CAN bus will monitor the signal level at any given time -
which means that a transmitting CAN node also "reads back" every bit it transmits. If
the transmitter reads a different data bit level vs. what it transmitted, the
transmitter detects this as a Bit Error.
Exceptions +
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 12/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 13/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
If a sequence of 6 bits of the same logical level is observed on the bus within a CAN
message (between the SOF and CRC field), the receiver detects this as a Bit Stuffing
Error aka Stuff Error.
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 14/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
#3 Form Error
This message-level check utilises the fact that certain fields/bits in the CAN message
must always be of a certain logical level. Specifically the 1-bit SOF must be dominant,
while the entire 8-bit EOF field must be recessive. Further, the ACK and CRC
delimiters must be recessive. If a receiver finds that any of these are bits are of an
invalid logical level, the receiver detects this as a Form Error.
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 15/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
When a transmitter sends a CAN message, it will contain the ACK field
(Acknowledgement), in which the transmitter will transmit a recessive bit. All
listening CAN nodes are expected to send a dominant bit in this field to verify the
reception of the message (regardless of whether the nodes are interested in the
message or not). If the transmitter does not read a dominant bit in the ACK slot, the
transmitter detects this as an ACK Error.
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 16/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
Every CAN message contains a Cyclic Redundancy Checksum field of 15 bits. Here,
the transmitter has calculated the CRC value and added it to the message. Every
receiving node will also calculate the CRC on their own. If the receiver's CRC
calculation does not match the transmitter's CRC, the receiver detects this as a CRC
Error.
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 17/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
As evident, CAN error handling helps destroy erroneous messages - and enables
CAN nodes to retry the transmission of erroneous messages.
This ensures that short-lived local disturbances (e.g. from noise) will not result in
invalid/lost data. Instead, the transmitter attempts to re-send the message. If it wins
arbitration (and there are no errors), the message is successfully sent.
This is where CAN node states and error counters come in.
Hardware reset
Error
Active
Hardware reset or
REC > 127 or
host reset with
TEC > 127
128 x 11 recessive
bit waiting time
REC < 128 or
TEC < 128
Error Bus
Passive TEC > 255
Off
In short, the purpose of CAN error tracking is to confine errors by gracefully reducing
the privileges of problematic CAN nodes.
1. Error Active: This is the default state of every CAN node, in which it is able to
transmit data and raise 'Active Error Flags' when detecting errors
2. Error Passive: In this state, the CAN node is still able to transmit data, but it now
raises 'Passive Error Flags' when detecting errors. Further, the CAN node now has
to wait for an extra 8 bits (aka Suspend Transmission Time) in addition to the 3 bit
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 18/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
intermission time before it can resume data transmission (to allow other CAN
nodes to take control of the bus)
3. Bus Off: In this state, the CAN node disconnects itself from the CAN bus and can
no longer transmit data or raise error flags
Every CAN controller keeps track of its own state and acts accordingly. CAN nodes shift
state depending on the value of their error counters. Specifically, every CAN node
keeps track on a Transmit Error Counter (TEC) and Receive Error Counter (REC):
A CAN node enters the Error Passive state if the REC or TEC exceed 127
A CAN node enters the Bus Off state if the TEC exceeds 255
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 19/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
As evident from the CAN error frame illustration, a CAN node that observes a
dominant bit after its own sequence of 6 dominant bits will know that it raised a
primary error flag. In this case, we can call this CAN node the 'discoverer' of the
error.
At first, it might sound positive to have a CAN node that repeatedly discovers errors
and reacts promptly by raising an error flag before other nodes. However, in
practice, the discoverer is typically also the culprit causing errors - and hence it is
punished more severely as per the overview.
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 20/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
Further, the CANedge2 adds WiFi, letting you auto-transfer data to your own server -
and update devices over-the-air.
Tip: Download the MF4 data for the tests to view the data in asammdf or CANalyzer.
download data →
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 21/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
As a benchmark, we start with a test involving no CAN bus errors. Here, a CANedge2
'transmitter' sends data to another CANedge2 'receiver' - and both log CAN bus
errors.
By loading the MF4 log file in the asammdf GUI we verify that no CAN errors
occurred during this test, which is to be expected.
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 22/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 23/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 24/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 25/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 26/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 27/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
In the default setup, data is transmitted by the CANedge2 B onto the CAN bus and
recorded with no errors. However, if we remove the CANedge1 from the bus there
are no longer any CAN nodes to acknowledge the frames sent by the transmitter.
As a result, the transmitter detects ACK Errors. In response, it increases its Transmit
Error Counter and raises Active Error Flags onto the CAN bus. These are in turn
recorded by CANedge2 A (which silently monitors the bus) as Form Errors.
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 28/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 29/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
To simulate this, we use the same setup as in test #4. In addition, we connect a
PCAN-USB device as a secondary transmitter.
The CANedge2 transmitter is now configured to output a single CAN frame every 10
ms with CAN ID 1 and a payload of eight 0xFF bytes. Further, we configure the
CANedge2 to disable retransmission of frames that were disrupted by errors. The
PCAN-USB outputs an identical CAN frame every 2 ms with the 1st byte of the
payload changed to 0xFE. The PCAN device has retransmissions enabled.
This setup quickly creates a frame collision, resulting in the CANedge and PCAN
transmitters detecting a Bit Error. In response to this, both raise an Active Error Flag,
which is detected as a Bit Stuffing Error by the CANedge receiver. The PCAN device
immediately attempts a retransmission and succeeds, while the CANedge waits with
further transmission until the next message is to be sent.
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 30/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 31/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 32/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
In this case, the frame collision results in a sequence of subsequent frame collisions as
both the CANedge2 and the PCAN-USB device attempt to re-transmit their disrupted
messages.
Due to the resulting Bit Errors, both raise a total of 16 Active Error Flags, which are
detected as Bit Stuffing Errors by the silent CANedge2 receiver. Both transmitters
then enter Error Passive mode and stop raising Active Error Flags, meaning none of
them can destroy CAN frames on the bus. As a result, one of the transmitters will
succeed in transmitting a full message, thus ending the retransmission frenzy - and
enabling both devices to resume transmission. However, this only lasts for a few
seconds before another collision occurs.
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 33/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 34/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 35/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
team will both be able to troubleshoot issues based on the actual CAN signals
(speed, RPM, temperatures) - as well as issues related with the lower layer CAN
communication in their prototype systems. This is particularly vital if the issues of
interest are intermittent and e.g. only happen once or twice per month. In such
scenarios, CAN bus interfaces are not well suited - and it becomes increasingly
relevant to have a cost-effective device to enable scalable deployments for faster
troubleshooting.
MF4
MF4
MF4
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 36/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
MF4
FAQ
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 37/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
For more intros, see our guides section - or download the 'Ultimate Guide' PDF.
J1939
logger
CANedge
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 38/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
OBD2
logger
CANedge/CLX000
CANopen
logger
CANedge
Contact
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 39/40
11/24/22, 3:50 PM CAN Bus Errors Explained - A Simple Intro [2022 | #1 Tutorial] – CSS Electronics
[email protected]
+45 91 25 25 63
Terms of Service
Newsletter
https://www.csselectronics.com/pages/can-bus-errors-intro-tutorial 40/40