<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>can-bus on toorun.dev</title><link>https://toorun.dev/tags/can-bus/</link><description>Recent content in can-bus on toorun.dev</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Fri, 16 Oct 2026 09:00:00 +0000</lastBuildDate><atom:link href="https://toorun.dev/tags/can-bus/index.xml" rel="self" type="application/rss+xml"/><item><title>CAN Bus Protocols Explained: Raw CAN, UDS, OBD-II, J1939, CANopen, NMEA 2000, and More</title><link>https://toorun.dev/posts/can-bus-protocols-raw-can-uds-obd-ii-j1939-canopen-nmea-2000/</link><pubDate>Fri, 16 Oct 2026 09:00:00 +0000</pubDate><guid>https://toorun.dev/posts/can-bus-protocols-raw-can-uds-obd-ii-j1939-canopen-nmea-2000/</guid><description>CAN Bus Protocols Explained: Raw CAN, UDS, OBD-II, J1939, CANopen, NMEA 2000, and More A CAN interface on a controller does not tell you which messages it should send. CAN defines how nodes arbitrate for the bus, frame data, detect errors, and recover from faults. The meaning of those data bytes comes from a higher-layer protocol, an application&amp;rsquo;s message specification, or both.
That distinction explains why a CAN trace can look like a list of hexadecimal identifiers and bytes while still being impossible to interpret without the correct protocol and configuration.</description></item></channel></rss>