Skip to content

rmingon/ch32v006-dev-board

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🔥 CH32V006 Mini Dev Board

A tiny, open hardware RISC‑V playground.

3D Render


✨ Highlights

  • MCU: WCH CH32V006 (RISC‑V, 48 MHz class)
  • USB‑C for power (VBUS) and connectors
  • On‑board 3.3 V LDO for clean power
  • SWD header for flashing with WCH‑LinkE
  • CH340C USB‑UART for serial logging / optional bootloader work
  • Break‑out headers for all GPIOs (PD0–PD7, PC0–PC7, PA1–PA2, etc.)
  • Compact 2‑layer PCB with mounting holes

⚠️ This is a hobby/experimental board. Double‑check pin mappings against your MCU datasheet before connecting expensive peripherals.


🗂️ Repo Layout

  • hardware.kicad_pro – KiCad project
  • hardware.kicad_sch – Schematic
  • hardware.kicad_pcb – PCB layout
  • hardware.kicad_prl – Local KiCad settings
  • pcb.png – PCB view
  • 3d.png – 3D render
  • schematic.png – Schematic snapshot

🖼️ Board at a Glance

PCB Layout
PCB

Schematic
Schematic


🔌 Power & I/O

  • Input: 5 V from USB‑C (VBUS)
  • Regulated: 3.3 V rail on board
  • Headers: Left/Right pin headers break out the MCU ports. A 3‑pin header exposes GND / SWD / VBUS for programming/power.

🧰 Toolchain & SDK

Use any of the following:

Flashing (recommended): WCH‑LinkE via SWD (Header near the board edge). Serial log: CH340C enumerates as a standard USB‑UART.


💡 Example: Blink LED on PD1 → LED → GND.

// Minimal PD1 blink for CH32V006 using WCH SPL-style headers.
// Requires the WCH SDK providing ch32v00x.h
#include "ch32v00x.h"

static void delay(volatile uint32_t t) {
    while (t--) __asm__("nop");
}

int main(void) {
    // Enable GPIO Port D clock
    RCC->APB2PCENR |= RCC_APB2PCENR_IOPDEN;

    // Configure PD1 as push‑pull output (10 MHz)
    GPIOD->CFGLR &= ~(0xF << (1 * 4));   // Clear PD1 config
    GPIOD->CFGLR |=  (0x1 << (1 * 4));   // MODE=01 (10 MHz), CNF=00 (PP)

    while (1) {
        GPIOD->BSHR = (1U << 1);  // PD1 HIGH
        delay(500000);

        GPIOD->BCR  = (1U << 1);  // PD1 LOW
        delay(500000);
    }
}

Tip: If you’re using the WCH SDK examples, drop this into a template project and adjust the linker script for CH32V006. Build with riscv-none-elf-gcc and flash with WCH‑LinkE.


🧭 Quick Start

  1. Clone the repo and open the project in KiCad.
  2. Build the firmware using WCH’s SDK or your favorite bare‑metal setup.
  3. Connect WCH‑LinkE to SWD, power via USB‑C.
  4. Flash the blink example and look for the LED on PD1 to toggle.

🗺️ Roadmap

  • Public hardware release
  • Blink example on PD1
  • USB‑CDC demo
  • Gerbers & fab notes
  • Detailed flashing walkthrough (WCH‑LinkE, OpenOCD if/when supported)

📄 License

Hardware and examples are released under the MIT License unless otherwise noted in subfolders.

If you build one, I’d love to see it—PRs and issues welcome!

About

Open-source CH32V006 RISC-V dev board — KiCad hardware (schematic + PCB), USB-C power, 3.3 V LDO, SWD/CH340C, and a PD1 blink example.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors