UIAPduino Pro Micro CH32V003
Overview
The UIAPduino Pro Micro CH32V003 V1.4 [1] is an open-source hardware development board based on the WCH CH32V003 [2] microcontroller. The board uses a USB Type-C connector for power and programming, and can act as a USB 2.0 Low-Speed device for HID applications.
Zephyr support for this board currently provides basic GPIO support and the on-board user LED.
Hardware
The board uses the WCH CH32V003F4U6 SoC, which contains a QingKe V2A 32-bit RISC-V core. The SoC provides 16 KiB of flash and 2 KiB of SRAM, and supports operation up to 48 MHz.
Notable board hardware includes:
USB Type-C connector for power and programming
on-board reset button
on-board power and user LEDs
selectable 3.3 V or 5 V microcontroller supply
USB host protection fuses
through-hole edge connections
flat bottom for surface-mount-like installation
Supported Features
The uiapduino_pro_micro_ch32v003 board supports the hardware features listed below.
- on-chip / on-board
- Feature integrated in the SoC / present on the board.
- 2 / 2
-
Number of instances that are enabled / disabled.
Click on the label to see the first instance of this feature in the board/SoC DTS files. -
vnd,foo -
Compatible string for the Devicetree binding matching the feature.
Click on the link to view the binding documentation.
uiapduino_pro_micro_ch32v003/ch32v003 target
On-target memory for this board target: 2 KiB of RAM, 16 KiB of Flash.
Type |
Location |
Description |
Compatible |
|---|---|---|---|
CPU |
on-chip |
WCH QingKe V2 RISC-V MCU1 |
|
ADC |
on-chip |
WCH CH32V00x ADC1 |
|
Clock control |
on-chip |
WCH CH32V00x Reset and Clock Control (RCC)1 |
|
on-chip |
WCH CH32V00x HSE Clock1 |
||
on-chip |
WCH CH32V00x HSI Clock1 |
||
on-chip |
Generic fixed-rate clock provider1 |
||
on-chip |
WCH CH32V00x PLL1 |
||
Counter |
on-chip |
WCH Advanced-control Timer (ADTM) for PWM1 |
|
on-chip |
WCH General-purpose Timer (GPTM)1 |
||
DMA |
on-chip |
WCH DMA controller1 |
|
GPIO & Headers |
on-chip |
WCH CH32V00x General-Purpose Input/Output (GPIO)3 |
|
I2C |
on-chip |
WCH I2C controller1 |
|
Interrupt controller |
on-chip |
WCH CH32V00x Programmable Fast Interrupt Controller (PFIC)1 |
|
on-chip |
WCH CH32V003/20x/30x External Interrupt and Event Controller (EXTI)1 |
||
LED |
on-board |
Group of GPIO-controlled LEDs1 |
|
MTD |
on-chip |
Flash node1 |
|
Pin control |
on-chip |
WCH CH32V00x AFIO1 |
|
PWM |
on-chip |
WCH Advanced-control Timer (ADTM) for PWM1 |
|
on-chip |
WCH General-purpose Timer (GPTM) for PWM1 |
||
Serial controller |
on-chip |
WCH SDI console1 |
|
on-chip |
WCH CH32V00x UART1 |
||
SPI |
on-chip |
WCH SPI1 |
|
SRAM |
on-chip |
Generic on-chip SRAM1 |
|
Timer |
on-chip |
WCH CH32V00x Systick1 |
|
Watchdog |
on-chip |
WCH Independent Watchdog (IWDG)1 |
Connections and IOs
LED
LED0 = PC0, active high
Programming
The uiapduino_pro_micro_ch32v003 board supports the runners and associated west commands listed below.
| flash | debug | |
|---|---|---|
| minichlink | ✅ (default) |
Applications for the uiapduino_pro_micro_ch32v003 board target can be built and flashed in the
usual way. See Building an Application and Run an Application for more details.
The board is shipped with a custom USB bootloader based on rv003usb [3]. To enter writing standby mode, hold the reset button while connecting the board to USB, then release the reset button.
The Zephyr board configuration uses minichlink as the default runner and passes 0x1209b803
as the device identifier.
Flashing
Install minichlink from ch32fun [4] and make sure the board can be accessed by the host. On
Linux, this may require installing the corresponding udev rule.
Here is an example for the Blinky application.
# From the root of the zephyr repository
west build -b uiapduino_pro_micro_ch32v003 samples/basic/blinky
west flash