<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>stm32 &#8211; ABNielsen.com</title>
	<atom:link href="https://abnielsen.com/tag/stm32/feed/" rel="self" type="application/rss+xml" />
	<link>https://abnielsen.com</link>
	<description>Anders Braüner Nielsen</description>
	<lastBuildDate>Sun, 03 May 2026 06:00:10 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>FalCAN Probe — More Than a Bus Adapter</title>
		<link>https://abnielsen.com/2026/02/26/falcan/</link>
					<comments>https://abnielsen.com/2026/02/26/falcan/#respond</comments>
		
		<dc:creator><![CDATA[Anders]]></dc:creator>
		<pubDate>Thu, 26 Feb 2026 22:06:14 +0000</pubDate>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[canbus]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[rs-485]]></category>
		<category><![CDATA[stm32]]></category>
		<category><![CDATA[stm32f0]]></category>
		<guid isPermaLink="false">https://abnielsen.com/?p=316</guid>

					<description><![CDATA[UPDATE: You can buy one here https://www.imania.dk/index.php?cPath=204&#38;sort=5a&#38;language=en At first glance, FalCAN Probe looks like a clean, compact USB-to-CAN / RS-485 / RS-422 interface. But that’s underselling it. Because under the [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>UPDATE: You can buy one here <a href="https://www.imania.dk/index.php?cPath=204&amp;sort=5a&amp;language=en">https://www.imania.dk/index.php?cPath=204&amp;sort=5a&amp;language=en</a><br><br>At first glance, FalCAN Probe looks like a clean, compact USB-to-CAN / RS-485 / RS-422 interface.</p>



<p>But that’s underselling it.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="UART, CAN, RS-485. This USB-C dongle debugs.. Everything*" width="640" height="360" src="https://www.youtube.com/embed/pHMQbOrLfP4?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p>Because under the hood, this thing is a fully capable STM32 development board that just happens to have industrial-grade differential transceivers attached.</p>



<p>And that changes everything.</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="683" src="https://abnielsen.com/wp-content/uploads/2026/02/IMG_2753-1024x683.jpeg" alt="" class="wp-image-318" srcset="https://abnielsen.com/wp-content/uploads/2026/02/IMG_2753-1024x683.jpeg 1024w, https://abnielsen.com/wp-content/uploads/2026/02/IMG_2753-300x200.jpeg 300w, https://abnielsen.com/wp-content/uploads/2026/02/IMG_2753-768x512.jpeg 768w, https://abnielsen.com/wp-content/uploads/2026/02/IMG_2753-1536x1024.jpeg 1536w, https://abnielsen.com/wp-content/uploads/2026/02/IMG_2753-2048x1365.jpeg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">The Core: A Real MCU, Not a Bridge Chip</h2>



<p>FalCAN Probe is built around the STM32F042C6Tx — not a USB bridge, not a fixed-function CAN controller.</p>



<p>That means:</p>



<ul class="wp-block-list">
<li>Native USB FS device</li>



<li>Flexible firmware architecture</li>



<li>Direct control over peripherals</li>



<li>Access to GPIOs</li>



<li>SWD programming header</li>



<li>Real-time performance under your control</li>
</ul>



<p>This isn’t a “dongle.”<br>It’s an embedded system that ships as a tool.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="683" src="https://abnielsen.com/wp-content/uploads/2026/02/IMG_2764-1024x683.jpeg" alt="" class="wp-image-323" srcset="https://abnielsen.com/wp-content/uploads/2026/02/IMG_2764-1024x683.jpeg 1024w, https://abnielsen.com/wp-content/uploads/2026/02/IMG_2764-300x200.jpeg 300w, https://abnielsen.com/wp-content/uploads/2026/02/IMG_2764-768x512.jpeg 768w, https://abnielsen.com/wp-content/uploads/2026/02/IMG_2764-1536x1024.jpeg 1536w, https://abnielsen.com/wp-content/uploads/2026/02/IMG_2764-2048x1365.jpeg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">It’s a Development Board in Disguise</h2>



<p>Because the MCU is fully exposed and programmable, FalCAN Probe can double as:</p>



<ul class="wp-block-list">
<li>A general STM32 development board</li>



<li>A USB device prototyping platform</li>



<li>A CAN firmware sandbox</li>



<li>A serial protocol analyzer</li>



<li>A bus traffic generator</li>



<li>A custom USB instrument</li>
</ul>



<p>You have access to:</p>



<ul class="wp-block-list">
<li>USART (PB6/PB7 exposed)</li>



<li>GPIOs via headers</li>



<li>Boot configuration pins</li>



<li>SWD for full debugging access</li>
</ul>



<p>Need a quick USB-controlled relay?<br>Need a CAN bootloader test platform?<br>Need a custom USB descriptor experiment?</p>



<p>You already have the hardware in your hand.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="683" src="https://abnielsen.com/wp-content/uploads/2026/02/IMG_2768-1024x683.jpeg" alt="" class="wp-image-327" srcset="https://abnielsen.com/wp-content/uploads/2026/02/IMG_2768-1024x683.jpeg 1024w, https://abnielsen.com/wp-content/uploads/2026/02/IMG_2768-300x200.jpeg 300w, https://abnielsen.com/wp-content/uploads/2026/02/IMG_2768-768x512.jpeg 768w, https://abnielsen.com/wp-content/uploads/2026/02/IMG_2768-1536x1024.jpeg 1536w, https://abnielsen.com/wp-content/uploads/2026/02/IMG_2768-2048x1365.jpeg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Could It Be an ST-Link?</h2>



<p>The fun thought experiment:<br>With the right firmware, could FalCAN Probe act as an ST-Link compatible programmer?</p>



<p>The STM32F042C6Tx absolutely has the capability to implement:</p>



<ul class="wp-block-list">
<li>SWD signaling</li>



<li>USB composite devices</li>



<li>Debug transport protocols</li>
</ul>



<p>An official ST-Link uses a more powerful STM32 variant, but architecturally there’s nothing preventing a firmware implementation of a CMSIS-DAP or similar debugger stack on this hardware.</p>



<p>Meaning:</p>



<ul class="wp-block-list">
<li>It could program other STM32 targets</li>



<li>It could become a debug bridge</li>



<li>It could act as a USB-to-SWD tool</li>



<li>It could be a lab emergency programmer</li>
</ul>



<p>The hardware already exposes the right primitives.</p>



<p>That’s the beauty of building your own tools.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Mode Switching: Intentional and Clean</h2>



<p>At reset:</p>



<ul class="wp-block-list">
<li><strong>JP4 closed</strong> → USB enumerates as CDC (USART1 → RS-422/485)</li>



<li><strong>JP4 open</strong> → USB enumerates as GS_USB CAN</li>
</ul>



<p>After reset, jumpers can be reconfigured freely.</p>



<p>Default RS-422 full duplex:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Short JP3 &amp; JP4</p>
</blockquote>



<p>And when in CAN mode, USART1 (PB6/PB7) is still accessible externally.</p>



<p>So even in “CAN adapter” mode, you still effectively have a development board with serial IO available.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Hardware That Supports the Ambition</h2>



<p>This isn’t a breadboard hack.</p>



<p><strong>CAN transceiver:</strong> SN65HVD230<br><strong>RS-485/422 transceivers:</strong> SP3485EN (x2)<br><strong>LDO:</strong> MIC5504-3.3<br><strong>Board:</strong> 4-layer FR4 (~1.6 mm)<br><strong>EDA:</strong> KiCad 9</p>



<p>You get:</p>



<ul class="wp-block-list">
<li>Controlled impedance routing</li>



<li>Solid ground planes</li>



<li>Clean USB layout</li>



<li>Industrial-grade differential signaling</li>



<li>Production-ready manufacturing files</li>
</ul>



<p>It’s engineered like a deployable product — not just a lab experiment.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Endless Possibilities</h2>



<p>When you combine:</p>



<ul class="wp-block-list">
<li>Native USB device</li>



<li>CAN + RS-485 + RS-422 hardware</li>



<li>Exposed GPIO</li>



<li>SWD header</li>



<li>Bootloader access</li>



<li>Open hardware design</li>
</ul>



<p>You get a platform that can evolve.</p>



<p>Today:</p>



<ul class="wp-block-list">
<li>USB-to-CAN</li>



<li>USB-to-RS-485</li>



<li>USB-to-RS-422</li>
</ul>



<p>Tomorrow:</p>



<ul class="wp-block-list">
<li>Custom CAN protocol analyzer</li>



<li>Firmware-based CAN bridge</li>



<li>USB composite device (CDC + CAN)</li>



<li>Field firmware updater</li>



<li>Bus intrusion test tool</li>



<li>Portable automation interface</li>



<li>Emergency ST-Link-style programmer</li>
</ul>



<p>Or something no one has thought of yet.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Why This Is Actually Cool</h2>



<p>Most adapters are fixed-purpose appliances.</p>



<p>FalCAN Probe is a <strong>tool platform</strong>.</p>



<p>It reduces lab clutter.<br>It collapses multiple dongles into one device.<br>It exposes its internals instead of hiding them.<br>It invites firmware experimentation.</p>



<p>And if you’re the kind of engineer who likes understanding — and controlling — your tools, that’s the real win.</p>



<p>Because the best hardware tools aren’t just interfaces.</p>



<p>They’re multipliers.</p>



<p>Get all the hardware and software sources on Github: <br>And buy one here: <a href="https://www.imania.dk/index.php?cPath=204&amp;sort=5a&amp;language=en">https://www.imania.dk/index.php?cPath=204&amp;sort=5a&amp;language=en</a> </p>
]]></content:encoded>
					
					<wfw:commentRss>https://abnielsen.com/2026/02/26/falcan/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Building the “PhaseLatch Mini”: A Detour Into Modular SDR Design</title>
		<link>https://abnielsen.com/2025/11/16/building-the-phaselatch-mini-a-detour-into-modular-sdr-design/</link>
					<comments>https://abnielsen.com/2025/11/16/building-the-phaselatch-mini-a-detour-into-modular-sdr-design/#respond</comments>
		
		<dc:creator><![CDATA[Anders]]></dc:creator>
		<pubDate>Sun, 16 Nov 2025 08:29:44 +0000</pubDate>
				<category><![CDATA[6502]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[sdr]]></category>
		<category><![CDATA[stm32]]></category>
		<guid isPermaLink="false">https://abnielsen.com/?p=292</guid>

					<description><![CDATA[Buy a PhaseLoom and PhaseLatch Mini at my store iMania.dk Source code and design files: https://github.com/AndersBNielsen/PhaseLatchMini If you’d told me a few years ago I’d be designing and building my [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Buy a PhaseLoom and PhaseLatch Mini at my store <a href="https://www.imania.dk/index.php?currency=EUR&amp;cPath=204&amp;sort=5a&amp;language=en">iMania.dk</a></p>



<p>Source code and design files: <a href="https://github.com/AndersBNielsen/PhaseLatchMini">https://github.com/AndersBNielsen/PhaseLatchMini</a></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="632" src="https://abnielsen.com/wp-content/uploads/2025/11/image-2-1024x632.png" alt="PhaseLatch Mini" class="wp-image-298" srcset="https://abnielsen.com/wp-content/uploads/2025/11/image-2-1024x632.png 1024w, https://abnielsen.com/wp-content/uploads/2025/11/image-2-300x185.png 300w, https://abnielsen.com/wp-content/uploads/2025/11/image-2-768x474.png 768w, https://abnielsen.com/wp-content/uploads/2025/11/image-2-1536x948.png 1536w, https://abnielsen.com/wp-content/uploads/2025/11/image-2-2048x1264.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>If you’d told me a few years ago I’d be designing and building my own modular Software Defined Radio platform, I’d have laughed. Radio has always felt like electronics magic to me—no matter how much I learn, the sense of wonder never goes away. In the previous video, we explored the bare-minimum concept of an SDR: mixing a radio signal down to IQ baseband and handing it off for digital processing. And yes, I did that with a 50-year-old CPU, the 6502.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="6502 + STM32 join forces as cheap SDR!" width="640" height="360" src="https://www.youtube.com/embed/UEAtSE1PV44?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p>For a quick refresher on what SDR means at the circuit level, check out the first video in this series. Back then, my 65uino didn’t have a usable ADC, so the only real option was the classic 1990s approach—pipe the baseband into a computer sound card. In 2025, that makes it one of the lowest bandwidth SDR setups imaginable: stuck at 44.1 kHz, which is roughly 1/72 of what a cheap RTL-SDR can do. It can’t even decode FM. And since my long-term goal is far beyond a few megasamples per second, I needed something better.</p>



<p>Before jumping into high-end territory, I wanted to explore an affordable middle ground. Enter the STM32 “Blue Pill”—a dirt-cheap board I’d had sitting in a drawer for years. Despite its price, the STM32F103 MCU has a surprisingly ideal feature set for SDR use: USB, DMA, and, crucially, dual ADCs that can sample simultaneously. That last part is essential for properly digitizing I/Q channels, and it’s something many MCUs lack.</p>



<p>My expectations weren’t high, but after experimenting with the dev board, I got enough usable bandwidth to justify designing my own custom board. Huge thanks to this video’s sponsor, JLCPCB, who handled fabrication and assembly. I’ve used them long before ever being sponsored—they’re affordable, fast, and the boards come out great every time.</p>



<p>Since ADC performance depends heavily on layout, I upgraded the board to include a proper ground plane and clean separation between the sensitive analog input and noisy USB lines. The design is simple: capture I and Q through a passive LC low-pass filter for anti-aliasing, then feed them straight into the MCU’s ADCs.</p>



<p>After verifying power rails, programming via SWD, and confirming the 8 MHz clock, I wired the board into my existing <a href="https://abnielsen.com/2025/09/06/phaseloom/" data-type="post" data-id="283">PhaseLoom IQ mixer</a>. A single USB cable powers everything. Connected to my 40-meter antenna, the system immediately picked up AM, CW, and FT8—though with some aliasing and imperfect image rejection. Increasing the gain in the mixer helped, but only after carefully matching resistor pairs to avoid I/Q imbalance.</p>



<p>Once the hardware side looked solid, I tackled the firmware. The result is the PhaseLatch Mini: an STM32-based direct-conversion SDR front-end paired with simple Python host scripts. GQRX reads samples through a USB FIFO, and tuning is handled on the hardware side through the si5351 synthesizer. With this setup, I was able to cleanly receive HF, FM broadcast, and even experiment (with mixed success) around 144 MHz.</p>



<p>The PhaseLatch Mini isn’t the final destination—it’s a fun and capable side project on the path to a much more advanced 6502-powered SDR. But it’s already a surprisingly usable 200 kHz-bandwidth receiver, and I’ve made boards, kits, and files available for anyone who wants to experiment.</p>



<p>If you’re curious or want to dive deeper, come hang out on the Hackerspace Clubhouse Discord. More samples and a sneak peek at what’s next are at the end of the video up top. </p>



<p>Discord: <a href="https://discord.gg/kmhbxAjQc3">https://discord.gg/kmhbxAjQc3</a><br>Buy a PhaseLoom and PhaseLatch Mini at my store <a href="https://www.imania.dk/index.php?currency=EUR&amp;cPath=204&amp;sort=5a&amp;language=en">iMania.dk</a></p>



<p>Source code and design files: <a href="https://github.com/AndersBNielsen/PhaseLatchMini">https://github.com/AndersBNielsen/PhaseLatchMini</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://abnielsen.com/2025/11/16/building-the-phaselatch-mini-a-detour-into-modular-sdr-design/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
