Overview
This project implements a CH32V003 SWIO programmer using an ESP32-S3 development board.
The ESP32-S3 communicates with the CH32V003 over the single-wire SWIO interface and provides the programming interface that would normally be handled by a dedicated WCH programmer.
Why I built it
I wanted to see whether a general-purpose ESP32-S3 development board could be used as a reusable CH32V003 programmer instead of requiring dedicated programming hardware.
The implementation was developed and tested on a CH32V003A4M6 and includes ESP32-S3 firmware together with a Python host-side flashing tool.
Hardware
- ESP32-S3 development board
- WCH CH32V003A4M6
- SWIO connection between ESP32-S3 GPIO10 and CH32V003 PD1/SWIO
- External 4.7kΩ–10kΩ SWIO pull-up to 3.3V
- Common ground
Verification
The programmer has been tested on physical hardware for CH32V003 detection, flash erase/programming, readback verification, and target reset/run.
A physical motor demonstration was also performed using the programmed CH32V003 to control a CP6208 motor driver.
Software
The project contains:
- ESP32-S3 programmer firmware
- SWIO implementation
- CH32V003 target/DMI handling
- Python host flashing tool
- Hardware and protocol documentation
Source code and the latest documentation are available on GitHub:
Ishu1519

