<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Risc-V on TurboVision</title>
    <link>https://turbovision.in6-addr.net/tags/risc-v/</link>
    <description>Recent content in Risc-V on TurboVision</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Tue, 21 Apr 2026 14:06:12 +0000</lastBuildDate>
    <atom:link href="https://turbovision.in6-addr.net/tags/risc-v/index.xml" rel="self" type="application/rss&#43;xml" />
    
    
    
    <item>
      <title>RISC-V on a 10-Cent Chip</title>
      <link>https://turbovision.in6-addr.net/electronics/microcontrollers/riscv-on-ch32v003/</link>
      <pubDate>Fri, 30 Jan 2026 00:00:00 +0000</pubDate>
      <lastBuildDate>Sun, 22 Feb 2026 15:48:47 +0100</lastBuildDate>
      <guid>https://turbovision.in6-addr.net/electronics/microcontrollers/riscv-on-ch32v003/</guid>
      <description>&lt;p&gt;The WCH CH32V003 costs less than a stamp and runs a 32-bit RISC-V core
at 48 MHz. It has 2 KB of RAM, 16 KB of flash, and a surprisingly complete
peripheral set: USART, SPI, I²C, ADC, timers.&lt;/p&gt;
&lt;p&gt;We set up the open-source MounRiver toolchain, flash a UART echo program
over the single-wire debug interface, and measure current consumption in
sleep mode: 8 µA. For battery-powered sensors, this chip is hard to beat.&lt;/p&gt;
&lt;p&gt;The interesting part is not only the price. It is what this device teaches
about writing firmware with hard limits. With 2 KB RAM, every buffer is a
design decision. With 16 KB flash, libraries have to justify their existence.
That pressure tends to produce cleaner code than &amp;ldquo;just add another package.&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;bring-up-notes-that-save-time&#34;&gt;Bring-up notes that save time&lt;/h2&gt;
&lt;p&gt;My shortest path to first success:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Get a known-good blink or UART echo working first.&lt;/li&gt;
&lt;li&gt;Verify clock configuration before touching peripherals.&lt;/li&gt;
&lt;li&gt;Keep interrupts disabled until polling logic is stable.&lt;/li&gt;
&lt;li&gt;Add one peripheral at a time and re-test power draw.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Most early failures are clock, pin mux, or toolchain path problems, not
&amp;ldquo;mystical hardware bugs.&amp;rdquo; If serial output is dead, confirm GPIO mode and
baud assumptions before rewriting half the project.&lt;/p&gt;
&lt;h2 id=&#34;why-this-chip-is-useful-in-practice&#34;&gt;Why this chip is useful in practice&lt;/h2&gt;
&lt;p&gt;CH32V003 is ideal for disposable probes, tiny sensor nodes, and protocol
bridges where BOM cost matters. You can still keep a disciplined structure:
small drivers, explicit init sequence, and one integration test per module.
That gives reliability without heavyweight frameworks.&lt;/p&gt;
&lt;p&gt;Related reading:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://turbovision.in6-addr.net/electronics/microcontrollers/avr-bare-metal/&#34;&gt;AVR Bare-Metal Blinking&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://turbovision.in6-addr.net/electronics/soldering-smd-by-hand/&#34;&gt;Hand-Soldering 0402 Components&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
  </channel>
</rss>
