CAN engineering, explained simply
Learn CAN without the usual confusion.
Clear how-to guides and working examples for CAN bus, J1939, DBC files, Python, C++, XCP, diagnostics, and UDS.
What Is CAN Bus? A Simple Guide for Engineers
Learn what CAN bus is, how CAN messages work, why vehicles use it, and what you need to start reading CAN data.
What Is J1939? A Simple CAN Bus Guide
Learn what SAE J1939 is, where it is used, and how PGNs, SPNs, source addresses, and 29-bit CAN IDs fit together.
What Is a PGN in J1939? PGNs and SPNs Explained
Learn what a J1939 PGN is, how to extract it from a 29-bit CAN ID, and how PGNs and SPNs are used to decode heavy-vehicle data.
What Is a DBC Viewer? How to Read CAN Database Files
Learn what a DBC viewer does, what information a DBC file contains, and how to inspect CAN messages and signals step by step.
What Is CANalyzer? CANalyzer vs DBC Viewer
Learn what Vector CANalyzer is used for and how a CAN bus analyzer differs from a focused DBC viewer.
What Is Canmatrix? Canmatrix vs DBC Viewer
Learn what the Python canmatrix library does, how to convert CAN database files, and when to use canmatrix instead of a visual DBC viewer.
How to Use CAN Bus: A Simple Step-by-Step Guide
Learn how to connect to a CAN bus, set the bitrate, record frames, send a test frame, and decode data with a DBC file.
How to Enable CAN Bus in Embedded C Code
Learn the steps to initialize a CAN peripheral, configure bit timing and filters, start CAN, and send a frame from embedded C code.
CAN Bus Python Example: Send and Receive Messages
Use python-can with SocketCAN to send, receive, filter, and test CAN messages in a small working Python example.
CAN Bus C++ Example: Send and Receive with SocketCAN
Build a small C++ SocketCAN program that opens can0, sends a CAN frame, waits for a frame, and prints the ID and data.
What Is XCP? ECU Measurement and Calibration Explained
Learn what the XCP protocol is, how it connects calibration tools to ECUs, and how XCP, A2L files, CAN, Ethernet, and UDS differ.
XCP Python Example: Connect to an ECU with pyXCP
Use pyXCP in a simple Python example to connect to an XCP slave over CAN, read the ECU identifier, and inspect connection properties.
XCP C++ Example: Connect to an ECU over CAN
Build a small Linux C++ SocketCAN example that sends an XCP CONNECT command, waits for the ECU response, and checks the response packet.
CAN Bus Diagnostics Example: Read Engine RPM with OBD-II
Send a simple read-only OBD-II request over CAN with Python and decode the engine RPM response step by step.
What Is UDS? Unified Diagnostic Services Explained
Learn what UDS diagnostics is, how UDS requests and responses work, and what sessions, DIDs, DTCs, security access, and ISO-TP mean.
How to Implement UDS over CAN: Python Client Example
Build a simple UDS client over ISO-TP and SocketCAN, read a VIN DID, handle errors, and understand what the ECU server must implement.
How to validate a DBC file before release
A practical DBC validation checklist for CAN and CAN FD teams covering message IDs, signal layouts, scaling, multiplexing, comments, log replay, and release review.
Multiplexed DBC signals explained without the usual confusion
A practical guide to multiplexed DBC messages, mux selector signals, conditional signals, payload reuse, common mistakes, and how to decode mux-heavy CAN data.
CAN error frames and bus-off debugging with SocketCAN
A practical CAN bus troubleshooting guide covering error frames, error counters, error-active, error-passive, bus-off, bitrate mistakes, termination, SocketCAN diagnostics, and recovery.
Decode CAN logs with python-can and cantools
A practical Python workflow for decoding CAN and CAN FD logs with python-can, cantools, DBC files, unknown-ID handling, timestamps, CSV export, and signal validation.
CAN log file formats: candump, ASC, BLF, MF4, and CSV
A practical comparison of CAN log formats including candump logs, Vector ASC, Vector BLF, MF4/MDF, and CSV for replay, storage, DBC decoding, and engineering analysis.
How to create a DBC file from reverse-engineered CAN logs
A careful workflow for reverse engineering CAN signals from raw logs, using stimulus notes, bit-change analysis, candidate signals, scale and offset checks, DBC drafting, and validation.
How to use candump and can-utils for practical CAN bus debugging
A hands-on SocketCAN and can-utils guide for engineers who need to bring up CAN interfaces, capture traffic with candump, send test frames, filter IDs, and prepare logs for DBC decoding.
How to record CAN bus data without creating useless logs
A field-tested workflow for recording CAN and CAN FD traffic with SocketCAN, candump, timestamps, filters, replay, and DBC decode checks.
How DBC signal encoding and decoding works
A practical explanation of CAN DBC signal start bits, byte order, signedness, scale, offset, multiplexing, and how to encode or decode messages with Python and cantools.
LIN bus for CAN engineers: where it fits and how to think about it
A practical LIN bus guide for engineers who already know CAN, covering master-slave scheduling, LDF files, signals, gateways, diagnostics, and why LIN still appears beside CAN and Ethernet.
Automotive Ethernet for CAN engineers
A practical guide to Automotive Ethernet for engineers coming from CAN and CAN FD, covering 100BASE-T1, 1000BASE-T1, gateways, tcpdump, SOME/IP-style thinking, and why Ethernet does not replace every CAN bus.
Automotive DBC tool alternatives in 2026: how to choose without wasting integration time
A practical decision guide for choosing DBC tooling across desktop, browser, and commercial options based on workflow, validation depth, and ecosystem constraints.
What are DBC files, where are they used, and how teams actually work with them
A practical guide to DBC files in automotive engineering: structure, usage across ECUs, diagnostics and validation workflows, and common mistakes to avoid.
ARXML, XCD/XDD, and DBC: when to use which format in automotive development
A practical format guide for automotive teams working across AUTOSAR configuration, CAN databases, and OEM or toolchain-specific data exchange files.
DBC Utility v1.0.3 deep dive: what changed and why it matters for real CAN/DBC workflows
A factual breakdown of DBC Utility v1.0.3, including compare modes, multiplexer support, layout visualization, and practical upgrade impact for engineering teams.
How to review DBC changes safely with dbcUtility Compare: a practical workflow for engineering teams
A step-by-step guide for using dbcUtility Compare modes to review CAN/DBC changes, reduce regressions, and keep database updates traceable.
Why CAN still matters and where it is better than other vehicle buses
CAN is not newer than Automotive Ethernet, but newer does not always mean better. This guide compares CAN with LIN, FlexRay, and Ethernet in the contexts where engineers actually make architecture decisions.
CAN FD explained: why classical CAN had to evolve
CAN FD extends classical CAN without abandoning the familiar ecosystem. Learn what changed in the frame, why payload and bitrate mattered, and when CAN FD is the better choice.
Automotive Ethernet, ECUs, gateways, and the rest of the vehicle network stack
CAN does not live alone. This guide explains how ECUs, gateways, LIN, FlexRay, and Automotive Ethernet coexist inside modern vehicles and why zonal architectures are reshaping the map.
DBC Utility versus other CAN database tools: competitor review and tool-fit guide
A balanced comparison of DBC Utility with CANdb++, BUSMASTER, Kvaser tools, CSS Electronics' DBC editor, and SavvyCAN, with advantages and disadvantages for both sides.
No guides match that search yet.