
CAN (Controller Area Network) communication protocol is a robust vehicle bus standard designed to allow microcontrollers and devices to communicate with each other without a host computer. It is a message-based protocol, designed originally for multiplex electrical wiring within automobiles, but is also used in many other embedded systems.
CAN protocol was developed by Robert Bosch GmbH in the 1980s for automotive applications. The primary goals were to reduce wiring complexity, increase reliability, and enable real-time communication between various electronic control units (ECUs) in vehicles.
Key features of CAN include:
The CAN bus uses a two-wire differential signaling scheme:
In dominant state: CAN_H ≈ 3.5V, CAN_L ≈ 1.5V In recessive state: Both lines at approximately 2.5V (no differential voltage)
The differential nature makes CAN highly resistant to electromagnetic interference (EMI), which is crucial in automotive and industrial environments.
CAN networks typically use 120Ω termination resistors at both ends of the bus to prevent signal reflections.
CAN uses either Standard (11-bit identifier) or Extended (29-bit identifier) frame formats. Each frame consists of:
CAN implements sophisticated error detection mechanisms:
When errors are detected, nodes maintain transmit and receive error counters and can transition from Error Active to Error Passive, and eventually to Bus-Off state.
CAN is widely used in:
Several CAN variants have been developed to meet evolving needs:
CAN protocol remains a cornerstone of embedded communication systems due to its reliability, real-time capabilities, and robustness in harsh environments. Understanding CAN is essential for embedded engineers working in automotive, industrial, and many other sectors where reliable communication between microcontrollers is critical.
Quick Links
Legal Stuff


