<?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 in Embedded Systems on Embedded Systems Development</title><link>https://applied-ee.github.io/embedded/docs/digital-interfaces/can-bus/</link><description>Recent content in CAN Bus in Embedded Systems on Embedded Systems Development</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://applied-ee.github.io/embedded/docs/digital-interfaces/can-bus/index.xml" rel="self" type="application/rss+xml"/><item><title>CAN Bit Timing &amp; Baud Rate</title><link>https://applied-ee.github.io/embedded/docs/digital-interfaces/can-bus/can-bit-timing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://applied-ee.github.io/embedded/docs/digital-interfaces/can-bus/can-bit-timing/</guid><description>&lt;h1 id="can-bit-timing--baud-rate"&gt;CAN Bit Timing &amp;amp; Baud Rate&lt;a class="anchor" href="#can-bit-timing--baud-rate"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;CAN bit timing determines whether nodes on a bus can communicate at all. Unlike UART, where baud rate mismatches produce garbled data, a CAN baud rate mismatch prevents any communication entirely &amp;ndash; the receiving node never sees a valid frame, and the transmitting node receives no ACK. Every node on a CAN bus must agree on the bit rate to within approximately 0.5%, and achieving that precision requires understanding how the CAN peripheral synthesizes its bit clock from the MCU&amp;rsquo;s peripheral clock.&lt;/p&gt;</description></item><item><title>Message Filtering &amp; FIFO Management</title><link>https://applied-ee.github.io/embedded/docs/digital-interfaces/can-bus/can-filtering/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://applied-ee.github.io/embedded/docs/digital-interfaces/can-bus/can-filtering/</guid><description>&lt;h1 id="message-filtering--fifo-management"&gt;Message Filtering &amp;amp; FIFO Management&lt;a class="anchor" href="#message-filtering--fifo-management"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;A busy CAN bus carries hundreds of distinct message IDs at rates exceeding 5,000 frames per second. Without hardware filtering, firmware must inspect every frame in software, consuming CPU cycles and risking FIFO overruns during high-load bursts. The STM32 bxCAN peripheral provides configurable hardware filter banks that discard irrelevant messages before they reach the receive FIFOs, ensuring the CPU only processes frames the application actually needs.&lt;/p&gt;</description></item><item><title>Error Handling &amp; Bus-Off Recovery</title><link>https://applied-ee.github.io/embedded/docs/digital-interfaces/can-bus/can-error-handling/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://applied-ee.github.io/embedded/docs/digital-interfaces/can-bus/can-error-handling/</guid><description>&lt;h1 id="error-handling--bus-off-recovery"&gt;Error Handling &amp;amp; Bus-Off Recovery&lt;a class="anchor" href="#error-handling--bus-off-recovery"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;CAN&amp;rsquo;s reliability reputation comes from its built-in error detection and fault confinement. The protocol detects five distinct error types at the hardware level and uses two error counters to progressively isolate a faulty node from the bus. Understanding this state machine is essential for firmware that must recover gracefully from bus faults &amp;ndash; a node that enters bus-off state without automatic recovery enabled will remain silent until the MCU is reset.&lt;/p&gt;</description></item><item><title>CAN-FD &amp; Extended Frames</title><link>https://applied-ee.github.io/embedded/docs/digital-interfaces/can-bus/can-fd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://applied-ee.github.io/embedded/docs/digital-interfaces/can-bus/can-fd/</guid><description>&lt;h1 id="can-fd--extended-frames"&gt;CAN-FD &amp;amp; Extended Frames&lt;a class="anchor" href="#can-fd--extended-frames"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;CAN-FD (Flexible Data-Rate) extends classic CAN in two directions: larger payloads (up to 64 bytes per frame versus 8) and a faster data-phase bit rate (up to 5 Mbps or higher, versus the 1 Mbps ceiling of classic CAN). These improvements address the growing bandwidth demands of automotive ECUs and industrial systems without replacing the CAN physical layer or arbitration mechanism. The tradeoff is increased peripheral complexity &amp;ndash; dual bit-rate configuration, message RAM management, and careful attention to transceiver and bus topology limitations.&lt;/p&gt;</description></item></channel></rss>