Introduction 🤔
Can a robust protocol like the CAN bus still encounter errors? What is the structure of a CAN protocol error frame? What types of CAN errors exist? Let’s understand it all at once.
1 CAN Errors
The CAN bus[1] serves as the foundation and standard for automotive industrial automation systems, boasting remarkable robustness that effectively ensures the safe operation of these systems. Handling errors is crucial for CAN; in actual production, the causes of errors in the CAN bus can be diverse, requiring us to quickly identify faults, locate issues, and resolve them.
1.1 Causes of CAN Errors
CAN errors[2] can generally be attributed to the following categories: Wiring faults, Noise, CAN node failures, etc. When the receiver fails to successfully receive data from the sender, a CAN error may occur. At this point, the node does not directly report a fault but instead employs a retransmission failure mechanism, where the sender will retransmit the message.
1.2 Handling CAN Errors
Identifying and handling errors is a built-in function of every CAN node connected to the bus.
2 CAN Error Frames
Before analyzing CAN error frames, let’s first review the structure of a normal CAN data frame:
A CAN error frame is one of many types of CAN frames, specifically used for error notification.
3 Types of CAN Errors
CAN errors mainly include the following types:

- 1. Bit Error (Sender): Between SOF and EOF, the CAN node will read back each bit of data sent. If the read data bit level does not match the sent one, it is considered a bit error.
- 2. Bit Stuffing Error (Receiver): The node detects a sequence of 6 or more identical logical bits between SOF and CRC.
- 3. Form Error (Receiver): Certain bits must be dominant/recessive within the SOF/EOF field or ACK/CRC delimiters. If the received frame data’s level logic does not conform, an error is reported.
- 4. ACK Error (Sender): The sending node reads back the sent message and detects a recessive state in its ACK bit, indicating that no other node has received this message.
- 5. CRC Error (Receiver): The CRC calculated by the receiving node does not match the CRC field sent.
References
<span><span>[1]</span></span> CAN Bus: https://www.csselectronics.com/pages/can-bus-simple-intro-tutorial<span><span>[2]</span></span> CAN Errors: https://www.iso.org/standard/86384.html
If you’ve read this far, consider giving a like and follow to support the author 🙏, your support is the motivation for my continued creation!