CAN Bus Embedded Development

CAN Bus Embedded Development is an online book published as a work in progress. Rather than releasing the entire book at once, I will build it topic by topic, adding new chapters and expanding existing material on a regular basis.

This format allows the book to evolve along with the technology and, just as importantly, with its readers. Subscribers can comment on individual topics, ask questions, and point out areas that deserve further explanation.

The table of contents will therefore remain flexible as the project grows, providing a structured path through the material while allowing new subjects to be added where they fit best. The goal is to create a practical, continuously developing reference for engineers, programmers, students, and anyone interested in building CAN Bus–based embedded systems.

This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.

Table of Contents

This is the initial concept and will continue to evolve as new topics are added and existing sections are expanded or refined.


SAE J1939 ECU Programming & Vehicle Bus Simulation with the Arduino

Written by an experienced specialist in Controller Area Network (CAN) technologies, this book provides a practical guide to understanding and implementing an SAE J1939 protocol stack for embedded systems.

The book combines detailed explanations with numerous C/C++ code examples and recorded J1939 network traffic, allowing readers to see not only how the software works, but also what actually happens on the CAN Bus. Topics include designing and transmitting J1939 data frames, receiving and processing messages, and simulating J1939 Electronic Control Units (ECUs).

Practical Arduino projects include a J1939 network scanner and an SAE J1939-to-USB gateway with an accompanying Windows GUI developed in Visual Studio C#. The projects culminate in ARD1939, a fully functional SAE J1939 protocol stack for the Arduino Uno and Mega 2560.

The book also explores two important areas of SAE J1939 in greater depth: the Transport Protocol defined by SAE J1939/21, including BAM and RTS/CTS sessions, and the Address Claim Procedure defined by SAE J1939/81. Code examples and recorded bus traffic illustrate how these mechanisms operate on an actual J1939 network.

By combining the accessibility of the Arduino development environment with practical source code, network analysis, and detailed protocol explanations, this book provides a hands-on path to learning SAE J1939 and developing real-world embedded J1939 applications. More information…