Wilfried Voss

Wilfried Voss

What You Didn’t Know About CAN

Understanding the Limitations Behind CAN’s Reliability

Wilfried Voss's avatar
Wilfried Voss
Sep 19, 2026
∙ Paid

This article is part of CAN Bus Embedded Development, my growing online book about practical CAN Bus hardware, software, and embedded system development.

View the complete Table of Contents →


Controller Area Network is an ingenious communication technology, but part of its strength comes from what it does not attempt to do.

CAN provides highly reliable transmission, nondestructive bus arbitration, extensive error detection, automatic retransmission, and mechanisms for removing persistently faulty nodes from the network. At the same time, it leaves many functions that developers may expect from a network protocol entirely to the application.

Some of these characteristics are easily overlooked, even by engineers who have worked with CAN for years.

CAN Does Not Have Node IDs

Neither Classical CAN nor CAN FD provides native node IDs.

A CAN data frame does not contain a source address identifying the node that transmitted it, nor does it contain a destination address identifying the node that should receive it.

Instead, CAN uses a CAN Message ID.

The basic principle is simple: A node transmitting a message does not know—or even care—where that message goes. All nodes connected to the network see the same data frame and determine whether they are interested in it, usually through the CAN controller’s acceptance filters.

The reverse is equally important. A node receiving a CAN message does not inherently know which physical node transmitted it. It receives a CAN Message ID and the associated data.

At first, this may sound restrictive. In practice, it is one of CAN’s strengths.

The CAN controller does not need to maintain addresses, routing information, connections, or information about the other devices on the network. A node simply publishes information onto the bus, and interested nodes receive it.

The simpler, the better.

If an application requires node addresses, source identification, destination addresses, network management, or similar functionality, those features must be implemented by the application or by a higher-layer protocol.

CANopen, SAE J1939, and NMEA 2000 are examples of protocols that add such functionality on top of CAN. The important distinction is that these are features of the higher-layer protocol, not CAN itself.

User's avatar

Continue reading this post for free, courtesy of Wilfried Voss.

Or purchase a paid subscription.
© 2026 Wilfried Voss · Privacy ∙ Terms ∙ Collection notice
Start your SubstackGet the app
Substack is the home for great culture