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.
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.
Classical CAN and CAN FD
CAN Bus Arbitration
Higher-Layer Protocols
SAE J1939
NMEA 2000
CANopen
Development Tools
CAN Monitoring & Analyzing Gateway
Programming Environment
The Arduino IDE
Software Design
Driver Software
Standard Features
Read
Write
Status
Additional Features
Read Error Counter
Read Controller Status
Silent Mode
Sleep Mode
Timer Functionality
Serial Protocol
Hardware Platforms
Arduino Uno
Arduino Due
ESP32
ESP32-S3
Teensy
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…




