UIAPduino Pro Micro CH32V003 V1.4General Availability
Overview
- Use CH32V003 Running at 48 MHz, and Support Coding in Arduino IDE.
- Is Supplied Power and Written Program With Single USB Type-C.
- Act as a USB 2.0 Low-Speed Device, Which Means the HID Device Can Be Made.
- Protect Your USB Port Powerfully by On-Board Fuses.
- Has Selectable Power Supply From 3.3 V or 5 V (Default) for the Microcontroller.
- Can Be Connected by H: 2.0 mm / P: 2.54 mm ConthroughⓇ When CN2 Is Not Mounted.
- Can Be Mounted Like a Surface-Mount Device, Because of Flat Bottom.
- Is Open-Source Software and Open-Source Hardware.
- Is RoHS Compliant, Designed in Japan, Full Inspection, and Has a Lifetime Warranty.
Getting Started
To Avoid Danger
- Never place anti-static packaging bags (pink, blue, silver) with low resistance under the board.
- Never plug the board into a USB port until instructed to do so to reduce the risk of a short circuit.
Let's write the program (sketch) that blinks the board's built-in LED and check the coding process.
Verified Environment
- OS: Windows 10 / Windows 11 / Ubuntu 22.04 LTS / Ubuntu 24.04 LTS / Ubuntu 26.04 LTS / Debian / Arch Linux
- USB Host Connector: USB 2.0 Type-A / USB 3.2 Type-C
- Arduino IDE: 2.3.2 / 2.3.3 / 2.3.4 / 2.3.5 / 2.3.6 / 2.3.7 / 2.3.8 / 2.3.9 / 2.3.10
Known issues
- Long USB cables could occur writing error that is reproducible under specific conditions.
Windows
Board Adding and Sketch Writing
Start Arduino IDE and add https://github.com/YuukiUmeta-UIAP/board_manager_files/raw/main/package_uiap.jp_index.json to Preference -> Additional boards manager URLs. Search for uiap on Tool -> Board -> Boards Manager and install UIAPduino.
Select to Tool -> Board -> UIAPduino -> Pro Micro CH32V003. All other settings are default. Open the example sketch that blinks an LED on File -> Examples -> 01.Basics -> Blink and add #define LED_BUILTIN 2 before setup().
// Define the built-in LED pin before setup()
#define LED_BUILTIN 2
// the setup function runs once when you press reset or power the board
void setup() {
// ...
}While pressing the reset button, connect the board to a USB port of your computer and then immediately release the reset button. The board waits for writing. After the OS has finished setting up the device, write the sketch by using Upload in the Arduino IDE. When the message Image written. is displayed, writing is complete.
Troubleshooting
- The Arduino IDE status bar always shows
not connectedbecause the communication is not via a serial port. - If the board is not added as a "HID-compliant device" in "Device Manager" after the OS has finished setting up the device, you will need to install the Microsoft Visual C++ Redistributable. Additionally, on some PCs, writing operations might fail if not installed.
- Even on the same computer, writing might be unable from some USB ports. Changing the USB port or adding a USB hub may resolve it. Also, power-only USB cable can't write and communicate.
- If 2 or more of the boards are connected and waiting to be written, they can't. This is because it is not possible to distinguish between the targets of writing. Note that the boards running the program are irrelevant.
- Rewriting the factory default custom bootloader with the latest version might stabilize communication.
- If something with an unstable electrical potential (such as bare hands or large metals) is in contact with the board, communication might become unstable.
- On Windows, older OS versions or updates might cause unstable communication.
Check Working
There are 3 following ways to run the program (sketch). When the orange LED in the center of the board turns on and off repeatedly every second after any 1 way, it is working properly.
- Press the reset button after writing.
- Connect to a USB port without pressing the reset button.
- Connect to a commercially available USB charger (AC adapter).
If the board enters the write standby mode after powering off, the sketch can be rewritten.
There is also a way to switch operating modes without replugging into a USB port: Seamless Switch
Linux and Mac
On Linux, follow the same operation as for Windows, and after installing the UIAPduino board, run the following commands. This commands add udev rule for UIAPduino and reload the rules to apply to connected devices. Note that writing from Arch Linux is unstable.
# Do this command after UIAPduino board was installed.
sudo wget -O /etc/udev/rules.d/99-minichlink-uiap.rules https://raw.githubusercontent.com/YuukiUmeta-UIAP/ch32fun/3bfa603f11d493710f2a811b5a2dfad905d9425c/minichlink/99-minichlink-uiap.rules
# Reboot or do this command if needed.
sudo udevadm control --reload-rules && sudo udevadm triggerIf you can't write due to minichlink, build it for your environment and replace to ~/.arduino15/packages/UIAP/tools/minichlink-2982dfd/1.0.0/minichlink.
On Mac, it works but it will be complicated. Refer to UIAPduinoをMacで使う。With WCH-LINKE and UIAPduino Pro Micro CH32V003 V1.4 に M1 MacのArduinoIDEで書き込む.
Debugging
For Arduino IDE
The UART outputs by Serial.print() is displayed on the serial monitor using a USB to Serial breakout board. Refer to 創造技術実習 UIAPduinoでシリアル通信 for details.
usb_cdc_uart turns CH32V003 into a USB to Serial converter. In other words, if two or more boards, debugging might be possible using one board as a USB to Serial breakout board. Currently incomplete.
For Other Development Environment
- ch32fun + rvswdio programmer + minichlink (Recommended)
- ch32fun + WCH-LinkE + minichlink
- ch32fun + USB CDC (No need more hardware)
- MounRiver Studio + WCH-LinkE (Untested)
AI-Assisted CodingDraft
AI suggestions about power connections must be verified as safe by referring to documents.
Document Loading Method
Input this web document into conversational AIs to let it make coding suggestions. The following list shows the results of natural language prompts for the major AIs. Also, the prompts with ambiguous expressions or typos were tested more than 30 times, and all the codes worked on the actual device.
- Left in the video: Gemini (Japanese prompts) NeoPixel マトリックス点灯スケッチ
- Center in the video: ChatGPT (Japanese prompts) Arduino NeoPixelスケッチ
- Right in the video: Claude (Japanese prompts) NeoPixel LED Matrix Arduino Sketch
Finally, this web document will be normalized and an accurate Vibe Coding can be done.
Direct Terminal Method
Code sophisticated interactive applications with the assist of direct terminal AIs. Currently, this is only a proof-of-concept. See Gemini CLI(無料枠)だけで携帯ゲーム向けの2048が作れた! customized from Mini Game Console with Gemini CLI assisting.
Documents
The board layout is roughly compatible with SparkFun Qwiic Pro Micro - USB-C (ATmega32U4).
Pinout Diagram
- Sample codes are explained in CH32V003開発ガイドブック-Arduino抜粋版-.
- Refer to variant_CH32V003F4.h and variant_CH32V003F4.cpp for details of the pin definitions.
- The power pins are NOT fully compatible. Refer to Board Power Supply for details.
Board Dimensions
- Qwiic position relative to pins is the same.
- About the USB Type-C receptacle
- Its front aligns with the board edge.
- It is on the bottom of the board. No other parts are taller than this.
- The through-hole diameters conform to ConthroughⓇ.
WARNING
- Pins 7, 8, and 9 on the left side are common to pins 7, 8, and 9 on the right side. They are connected internally to the board.
- Using pin 11 requires
pinV32_DisconnectDebug(PD_1). SWIO will be disabled.
Circuit and Board
BOM (bill of materials)
| Name | Value | JLCPCB Part # | Quantity |
|---|---|---|---|
| F1 | 06H1100D | C182303 | 1 |
| F2, F3, F4, F5 | JK-SMD0603-001 | C2687114 | 4 |
| C1, C2, C3 | CL05A105KA5NQNC | C52923 | 3 |
| C4, C5 | CL05B104KO5NNNC | C1525 | 2 |
| C6, C7 | 0402B221K500NT | C1530 | 2 |
| R1, R3, R8, R9, R11 | 0402WGF5101TCE | C25905 | 5 |
| R2 | 0402WGF5100TCE | C25123 | 1 |
| R4, R5 | 0402WGF2201TCE | C25879 | 2 |
| R6, R7 | 0402WGF2200TCE | C25091 | 2 |
| R10 | 0402WGF1001TCE | C11702 | 1 |
| D1 | 1N4148WS | C2128 | 1 |
| ZD1, ZD2 | BZT52C3V3S | C5190164 | 2 |
| LED1 | XL-1608UBC-04 | C965807 | 1 |
| LED2, LED3 | XL-1608UOC-04 | C965801 | 2 |
| U1 | XC6206P332MR-MS | C5252899 | 1 |
| U2 | CH32V003F4U6 | C5299908 | 1 |
| SW1 | TS-1187A-B-A-B | C318884 | 1 |
| CN1 | USB-TYPE-C-016 | C2927036 | 1 |
| CN2 | SM04B-SRSS-TB(LF)(SN) | C160404 | 1 |
User Library
| CAD Software | Library | Version |
|---|---|---|
| EAGLE Autodesk Fusion | UIAP-Devices.lbr | 1.0.0, 2025/ |
| BSch3V | UIAP-Devices.LB3 | 1.0.0, 2025/ |
| KiCad | UIAP-Devices.kicad_sym UIAP-Devices.pretty.tar | 1.0.0, 2025/ |
| Fritzing | UIAP-Devices.fzbz | 1.0.0, 2025/ |
Factory Default
The custom bootloader based on cnlohr/rv003usb is written. This is for timeout adjustment, Seamless-Switch support, and product identification. Also, the user program that lights up the orange LED in the center of the board like a candle is written.
Board Power Supply
Generally, handling power supply without prior knowledge is dangerous. It can damage USB hosts.
The USB Type-C VBUS and the 5V output pin are electrically connected internally to the board via the on-board fuse. And the board's USB Type-C can also be powered from USB PD-compatible chargers.
Changing the Voltage
The voltage selection jump pad switches the board's power supply voltage either 3.3V or 5V (default). Note the following:
- Changing the board's power supply voltage does not change the voltage on the 3.3V output pin and 5V output pin.
- The LEDs on the board and USB communication function normally regardless of the board's power supply voltage.
- When the board's power supply voltage is 3.3V, only the 5V-tolerant pins can input 5V.
Power Safely
In the following table, find the setting row in the left headings. Read other settings on the row to find their safety.
| USB-Pwr | Volt-Sel | Ext-Pwr | ||||||
|---|---|---|---|---|---|---|---|---|
| No | Yes | 3.3 | 5 | 3.3 | 5 | GND | ||
| USB-Pwr | No | N/A | Safe | Safe | Safe | Safe | ||
| Yes | N/A | Safe | Safe | Danger | Safe | |||
| Volt-Sel | 3.3V | Safe when NO Ext-Pwr | N/A | Safe when NO USB-Pwr | Safe | |||
| 5V | Safe when NO Ext-Pwr | N/A | Safe when NO USB-Pwr | Safe | ||||
| Ext-Pwr | 3.3V | Safe | Danger | Safe | Safe | Danger | Safe | |
| 5V | Safe | Danger | Safe | Safe | Danger | Safe | ||
| GND | Safe when the above conditions | |||||||
| *1 Common GND connection. *2 Safe but 5V is unusable when Ext-Pwr is 3.3V. *3 Safe but 5V is unusable. | ||||||||
Supply Current
The typical current consumption when powering the board with the sketch that lights up all the LEDs on the board via a power-only USB cable at 5.00V. Refer to Anti Dazzling for LED details.
| Volt-Sel: 3.3V | Volt-Sel: 5V | |
|---|---|---|
| LED1 (power on) | 0.1 mA | 0.1 mA |
| LED2 (USB signal) | 0.1 mA | 0.1 mA |
| LED3 (built-in LED) | 0.4 mA | 0.6 mA |
| U2 (CH32V003) | 6.5 mA | 8.8 mA |
| Other | 1.5 mA | 1.5 mA |
| Whole board | 8.6 mA | 11.1 mA |
Web Browser ToolDraft
For example, if your application that uses this board is used by many people, you can update the application program by simply distributing the binary file to users.
Web browser must support WebHID to use. Major smartphone web browsers don't support WebHID.
Dedicated application that can write binary files from smartphones (Android only) is in developing.
WebLink-USBUnstable
Subjective-Reality-Labs/WebLink_USB is a tool that can write a binary file and connect to a terminal, and can be built with npm. The older WebLink-USB(mirror site) is incomplete.
- Writing a binary file: Put the board into writing standby mode, select
32V003with theconnect, specify the binary file with theSelect binary, and write with theflash. - Terminal connection: When the board with demo_terminal written connected to USB in program execution mode, the built-in LED will blink. Then, select
CNLohr RV003 Custom Deviceunderconnect to the terminalon thettab and connect to the terminal. The built-in LED blinking count up and returns ofsendstring will be displayed in the terminal.
rv003usb webflasher
The base SadaleNet/rv003usb-webflasher is a simple binary file writing tool that works with only a single JavaScript library. Put the board into writing standby mode, specify a binary file with Choose File, and select 32V003 with Flash! (pick rv003usb) to write.
Tips and Tricks
Seamless Switch
It switches between the write standby mode and the program execution mode without re-plugging into a USB port (Seamless-Switch). There may be other Seamless-Switch mechanisms.
Via the Reset Button
When 3 lines code are inserted into setup() of the sketch, the function of the reset button alternates from "RESET" to "Seamless-Switch".
// the setup function runs once when you press reset or power the board
void setup() {
if (FLASH->STATR & (1<<14)) NVIC_SystemReset();
SystemReset_StartMode(Start_Mode_BOOT);
pinMode(PD4, OUTPUT);
// ...
}Via USB Host Mechanism
If you rewrite the bootloader to the following modified one, it will perform Seamless-Switch using commands to enable or disable the USB hub's power supply and communication. This eliminates the need for physical operation.
- If there is communication from the USB host immediately after powering on the board, it will enter the write standby mode.
- If there is NO communication from the USB host immediately after powering on the board, it will enter the program execution mode.
Build the modified bootloader from source code
Read With ch32fun Development Environment and follow the guide "Getting Started with Latest Original ch32fun Development Environment" and do only "Install the build tools and dependencies". Then, build with the following steps.
git clone https://github.com/YuukiUmeta-UIAP/rv003usb.git
cd rv003usb
git checkout 7ae2940676df0e1dcdad906ea7b1c9fff6c0b971
git submodule update --init --recursive
cd bootloader NVIC_EnableIRQ( EXTI7_0_IRQn );
// if (!(RCC->RSTSCKR & (1<<26)))
// boot_usercode();
// Bootloader timeout / localpad:make bootloader.binUSB hub must support Power Switching to enable or disable its power supply and communication.
From Raspberry Pi 3 Model B+
On Raspberry Pi 3 Model B+, it will only work with the USB port shown in the picture below (the upper left port when looking at the Raspberry Pi from the connector side). This is because there is the limitation in the hardware design of Raspberry Pi.
Connect the board with the rewritten bootloader to the USB port shown in the picture, and operate it with the following commands.
# This code ran on Raspberry Pi 3 Model B+ Rev 1.3, Actually.
# Need uhubctl: `sudo apt install uhubctl` or build from https://github.com/mvp/uhubctl
sudo apt install uhubctl
# Go Run-Mode
sudo uhubctl --loc 1-1 --ports 2 --action 0 # Bus power off
sudo uhubctl --loc 1-1.1 --ports 2 --action 0 # Disable signal from host
sudo uhubctl --loc 1-1 --ports 2 --action 1 # Bus power on
# Go Boot-Mode
sudo uhubctl --loc 1-1 --ports 2 --action 0 # Bus power off
sudo uhubctl --loc 1-1.1 --ports 2 --action 1 # Enable signal from host
sudo uhubctl --loc 1-1 --ports 2 --action 1 # Bus power onIt will probably work similarly on other Raspberry Pi models that have a built-in USB hub.
Anti Dazzling
The LEDs may be dazzling in a bedroom at night, etc. The LEDs on the board can be turned off by cutting the jump pads.
| Function | Color | Schematic | Jump Pad | Description |
|---|---|---|---|---|
| Power on | Blue | LED1 | CUT1 | |
| USB signal | Orange | LED2 | CUT2 | USB communication possible |
| Built-in LED | Orange | LED3 | CUT3 | Make pin 2 high impedance |
Reading CC of USB Host
USB devices can read the analog voltage on CC1 or CC2 and calculate the current that the USB host can supply. This is a function of USB Type-C. Refer to the USB standard for details.
By solder bridging the CC1 jump pad and CC2 jump pad on the board, CC1 and CC2 are connected to the board's combined analog input and GPIO port. CC1 and CC2 are pulled down to 5.1kΩ ±1% on the board.
The fusing current of the on-board VBUS fuse is 1A. Generally, continuous current rating of the fuse is half of that.
Turning the Board Into a Debugger
A CH32V003 with rvswdio programmer written works as a debugger for WCH RISC-V chips can be operated from minichlink. While not fully compatible, it basically eliminates requiring WCH-LinkE. This means that for all development, dedicated device drivers are no longer required and its environment becomes OSSW/OSHW.
The left board programmed with the custom rvswdio programmer acts as a debugger for the right board connected only with jumpers. For connection to a standalone chip, see README.md.
minichlink -3 # Supply power, not '5' option
minichlink -t # Stop power, not 'f' option
minichlink -C funprog # Specify rvswdio programmer if others exist.Build the custom rvswdio programmer for the UIAPduino from source code
Read With ch32fun Development Environment and follow the guide "Getting Started with Latest Original ch32fun Development Environment" and do only "Install the build tools and dependencies". Then, build with the following steps.
git clone https://github.com/YuukiUmeta-UIAP/rv003usb.git
cd rv003usb
git checkout 7ae2940676df0e1dcdad906ea7b1c9fff6c0b971
git submodule update --init --recursive
cd rvswdio_programmer// PC4 = MCO (optional)
//
// #define RVBB_REMAP 1 // To put SWD on PC1/PC2
#define IRAM_ATTR#define USB_PIN_DP 3 // [0-4] GPIO Number for USB D+ Pin
#define USB_PIN_DM 4 // [0-4] GPIO Number for USB D- Pin
#define USB_PIN_DPU 4 // [0-7] GPIO for feeding the 1.5k Pull-Up on USB D- Pin; Comment out if not used / tied to 3V3!
#define RV003USB_DEBUG_TIMING 0make rvswdio_programmer.binRewriting BootloaderDraft
If rewriting the bootloader fails, the board will become unusable. Do not rewrite it carelessly.
There are 3 ways to rewrite the bootloader. The operation is simple, but the board will become unusable if it fails. Lifetime Warranty covers malfunctions caused by rewriting failure with unintentional failure.
- WCH-LinkE: Popular method. It is performed with only 1 board, but requires
WCH-LinkE. - rvswdio programmer: At least 2 boards required. Make 1 board the programmer.
- Standalone bootloader flasher for CH32V003Unstable: It is performed with only 1 board.
Application Example
With Arduino IDE
The standard development style. The Arduino core openwch/arduino_core_ch32 is not optimized, so the binary file size is large. Refer to Documentation for coding instructions.
With ch32fun Development Environment
A non-standard development style and it supports PlatformIO. cnlohr/ch32fun is optimized, so the binary file size is small. This is used when the Arduino environment is insufficient or when using HID.
Getting Started with Latest Original ch32fun Development Environment: Build and write via CUI. Linux is recommended.
This is the procedure for building a development environment on Ubuntu 24.04 LTS. For detailed procedures for each OS, refer to Installation.
Install the build tools and dependencies, and clone the original ch32fun repository.
sudo apt install build-essential libnewlib-dev gcc-riscv64-unknown-elf libusb-1.0-0-dev libudev-dev gdb-multiarch
git clone https://github.com/cnlohr/ch32fun.gitAdd udev rule and then build the writing tool minichlink. There are also pre-built minichlink.exe and libusb-1.0.dll for Windows. The above steps only need to be performed once. The environment setup is complete.
make -C ch32fun/minichlink allChange the current directory to the directory of the sample program that blinks the LED.
cd ch32fun/examples/blinkComment out part of blink.c to support UIAPduino LED, save it with overwrite, and then build.
int main()
{
SystemInit();
funGpioInitAll(); // Enable GPIOs
// funPinMode( PIN_1, GPIO_Speed_10MHz | GPIO_CNF_OUT_PP ); // Set PIN_1 to output
// funPinMode( PIN_K, GPIO_Speed_10MHz | GPIO_CNF_OUT_PP ); // Set PIN_K to output
// funPinMode( PIN_BOB, GPIO_Speed_10MHz | GPIO_CNF_OUT_PP ); // Set PIN_BOB to output
funPinMode( PIN_KEVIN, GPIO_Speed_10MHz | GPIO_CNF_OUT_PP ); // Set PIN_KEVIN to output
while(1)
{
// funDigitalWrite( PIN_1, FUN_HIGH ); // Turn on PIN_1
// funDigitalWrite( PIN_K, FUN_HIGH ); // Turn on PIN_K
// funDigitalWrite( PIN_BOB, FUN_HIGH ); // Turn on PIN_BOB
funDigitalWrite( PIN_KEVIN, FUN_HIGH ); // Turn on PIN_KEVIN
Delay_Ms( 250 );
// funDigitalWrite( PIN_1, FUN_LOW ); // Turn off PIN_1
// funDigitalWrite( PIN_K, FUN_LOW ); // Turn off PIN_K
// funDigitalWrite( PIN_BOB, FUN_LOW ); // Turn off PIN_BOB
funDigitalWrite( PIN_KEVIN, FUN_LOW ); // Turn off PIN_KEVIN
Delay_Ms( 250 );
}
}make blink.binPut the board into writing standby mode, specify the board's VID PID and binary file, and write via minichlink. b is an option to run the program after writing. The orange LED in the center of the board will flash.
../../minichlink/minichlink -c 0x1209b803 -w blink.bin flash -bGetting Started with Original ch32fun Development Environment and PlatformIO: GUI and independent of OS. The tools are a bit old.
To install, refer to the original repository VSCode +/- PlatformIO. Modify ch32fun/platformio.ini as follows to set the writing tool to minichlink and set the writing target to the UIAPduino's VID PID.
[env]
platform = https://github.com/Community-PIO-CH32V/platform-ch32v.git
monitor_speed = 115200
; default upload and debug protocol is "wch-link", using OpenOCD and
; expecting a WCH-LinkE programming adapter.
; To use minichlink, uncomment this
upload_protocol = minichlink
; additionally uncomment this to use ardulink on a specific COM port
upload_flags =
-c
0x1209b803
; for examples that use ch32fun as their baseFollow VSCode +/- PlatformIO, select env:blink in the Project Environment Switcher. Comment out part of ch32fun/examples/blink/blink.c to support the UIAPduino LED, then overwrite and save.
int main()
{
SystemInit();
funGpioInitAll(); // Enable GPIOs
// funPinMode( PIN_1, GPIO_Speed_10MHz | GPIO_CNF_OUT_PP ); // Set PIN_1 to output
// funPinMode( PIN_K, GPIO_Speed_10MHz | GPIO_CNF_OUT_PP ); // Set PIN_K to output
// funPinMode( PIN_BOB, GPIO_Speed_10MHz | GPIO_CNF_OUT_PP ); // Set PIN_BOB to output
funPinMode( PIN_KEVIN, GPIO_Speed_10MHz | GPIO_CNF_OUT_PP ); // Set PIN_KEVIN to output
while(1)
{
// funDigitalWrite( PIN_1, FUN_HIGH ); // Turn on PIN_1
// funDigitalWrite( PIN_K, FUN_HIGH ); // Turn on PIN_K
// funDigitalWrite( PIN_BOB, FUN_HIGH ); // Turn on PIN_BOB
funDigitalWrite( PIN_KEVIN, FUN_HIGH ); // Turn on PIN_KEVIN
Delay_Ms( 250 );
// funDigitalWrite( PIN_1, FUN_LOW ); // Turn off PIN_1
// funDigitalWrite( PIN_K, FUN_LOW ); // Turn off PIN_K
// funDigitalWrite( PIN_BOB, FUN_LOW ); // Turn off PIN_BOB
funDigitalWrite( PIN_KEVIN, FUN_LOW ); // Turn off PIN_KEVIN
Delay_Ms( 250 );
}
}Add udev rule (Linux only). Put the board into writing standby mode and write it by selecting General -> Upload in PlatformIO (the build will also be done automatically). When writing is complete, the orange LED in the center of the board will flash.
Seamless Switch via the Reset Button: add the following code after funGpioInitAll().
int main()
{
SystemInit();
funGpioInitAll(); // Enable GPIOs
if (FLASH->STATR & (1<<14)) NVIC_SystemReset();
FLASH->KEYR = FLASH_KEY1;
FLASH->KEYR = FLASH_KEY2;
FLASH->BOOT_MODEKEYR = FLASH_KEY1;
FLASH->BOOT_MODEKEYR = FLASH_KEY2;
FLASH->STATR |= (1<<14);
FLASH->CTLR = CR_LOCK_Set;
funPinMode( PD4, GPIO_CFGLR_OUT_10Mhz_PP );
// funPinMode( PIN_1, GPIO_Speed_10MHz | GPIO_CNF_OUT_PP ); // Set PIN_1 to output
//...
}User Case Studies
Educational Institutions
Practice of Creative Technology
Creator and Hobbyist
Reference
CH32V003
- 32-bit general-purpose RISC-V MCU-CH32V003 - NanjingQinhengMicroelectronics
- GitHub - openwch/ch32v003: CH32V003 is an ultra-cheap RISC-V MCU with 2KB SRAM, 16KB flash, and up to 18 GPIOs that sells for under $0.10
Tips
- 20円マイコン RISC-V CH32V003とは #RISC-V - Qiita
- WCH社のRISC-V搭載CH32シリーズまとめ | Lang-ship
- CH32V003 - fab-wiki
- CH32V003 – inajobのいろいろレビュー
- #29- How to RESET CH32V003 if PD1 is Occupied? - YouTube
- CH32V003J4M6 PD1 SWIO ピン共用問題 Flash eraseでの解決方法 - 宅配おもちゃ病院
- CH32V003 warning - Don't leave SWIO/PD1 floating!
- Help: Reset to bootloader by software or hardware button · Issue #52 · cnlohr/rv003usb
DIY
- Arduino IDE で安価なRISC-VマイコンCH32V003のデジタル出力を試してみた | P.T.A.55
- CH32V003で、UARTで書き込みできるブートローダを書き込んで利用する - @74thの制作ログ
- 40円マイコンCH32V003で、Auto-wakeup(AWU)を使って省電力な動かし方をしてみる #組込み - Qiita
- GitHub - shippoiincho/ch32v003examples: CH32V003 test programs
Development Stack
With USB
With Arduino
- GitHub - openwch/arduino_core_ch32: Core library for CH32duino
- 40円RISC-Vマイコン(CH32V003)をArduino IDEでLチカをしてみました | きょうのかんぱぱ
- 激安RISC-VチップCH32V003を動かす | ELSPINA VEINZ TECH BLOG
- Arduino環境でnanoCH32V003開発ボードを使う | たまねぎブログ
- Arduino環境でBTE32-15(CH32V003)開発ボードを使う | たまねぎブログ
- Clock selection using Arduino IDE menu · Issue #27 · openwch/arduino_core_ch32
- Arduinoでコードからリセットをする方法
With Rust
Pro Micro
- Pro Microとそのバリエーション
- Arduino互換ボード「Pro Micro」の情報まとめ #Arduino - Qiita
- Pro Micro - 5V/16MHz - DEV-12640 - SparkFun Electronics
- SparkFun Qwiic Pro Micro - USB-C (ATmega32U4) - DEV-15795 - SparkFun Electronics
- Qwiic Connect System - SparkFun Electronics
USB
- Document Library | USB-IF
- USB Cheat Sheet
- はじめてのUSB [USB発展の歴史と基礎知識] | テクニカルスクエア | 丸文株式会社
- パケットのフォーマットからプロトコルの詳細まで
- USBの通信プロトコル
- USB Type-C コネクタに必要な終端抵抗 – Community Translated (JA... - Infineon Developer Community
- Replacing Standard USB 3.0/2.0 Connector with Type... - Infineon Developer Community
- pcb - How to connect USB Connector shield? - Electrical Engineering Stack Exchange
- 01signal: Resetting a USB device on Linux (and maybe control its power supply)
Previous Version
Contributor
Hardware Review
- Yutaro Hiyoshi
- Masashi Yokota, Robot Architecture Laboratory
- Yuta Suzuki
Suggestion
- Masashi Sasaki
- Kojo Kimura
- Tomoyuki Dansako
Software Implementation
- CNLohr, and his community members
Precautions
UIAP devices are intended for hobby use only. Never use UIAP devices for applications that could affect life or safety. UIAP disclaims any and all liability for any losses and damages from such use.
100% inspection (full inspection) does not guarantee the absence of defects. Furthermore, the protective elements or circuits of UIAP devices do not guarantee that connected devices will not be damaged.
UIAP devices should be used within the absolute maximum ratings and specifications described in the datasheet or other relevant documentation. UIAP assumes no responsibility for any overheating, fire, explosion, or any damage resulting from misuse or improper handling by the user, including incorrect connections, overvoltage, short circuits, or modifications.
The user is solely responsible for the use, distribution, manufacture, sale, import, or export of any applications incorporating UIAP devices.
This document describes operational or application examples for UIAP devices. When using the information in this document, the user is solely responsible for the design or manufacture of any clones, forks, or applications. UIAP disclaims any and all liability for any losses and damages from the use of the information in this document.
If you have any questions about this document or UIAP devices and require accurate information, you should contact UIAP directly.
This precautions is subject to change without prior notice and you will not be notified if it changes. Furthermore, the use of this document or UIAP devices constitute your acknowledgment and agreement to this precautions.


