CH32V003A4M6 is the low-cost CH32V003 RISC-V microcontroller in a SOP16 package. With its 1.27 mm pitch it is easier to solder than TSSOP20 and still has 14 GPIO.
The functions are the same as on the larger F4P6 version; only pins PD0, PD2, PD3 and PC5 are missing – and with PC5 (SCK), SPI goes too.
Specifications
- RISC-V (QingKe V2A) at 48 MHz
- 16 kB flash, 2 kB SRAM
- 14 GPIO, 10-bit ADC, op-amp
- USART, I2C, TIM1 and TIM2 timers, PWM (no SPI in this package)
- 3.3 V or 5 V supply
- single-wire programming (SWIO on PD1)
- SOP16 package
It is flashed with the WCH-LinkE; you can program it in MounRiver Studio, the Arduino IDE or with ch32fun. Its successor, the CH32V002A4M6 with twice the RAM, is pin-compatible.
Pinout and pin table
Hover over a pin in the diagram or a table row; use the filter to highlight a bus. You can download the pinout as PNG or SVG.
| Pin | Name | Direction | UART | I2C | PWM | ADC | Remap | Note |
|---|---|---|---|---|---|---|---|---|
| 1 | PC1 | input/output | SDA | 1: T1BKIN, T2CH4; 2: T2CH1ETR; 3: T1BKIN, T2CH1ETR, RX | 5 V tolerant | |||
| 2 | PC2 | input/output | SCL | 1: ADC trigger (AETR), T2CH2, RTS; 2: T1BKIN; 3: T1ETR | USART RTS; T1BKIN; 5 V tolerant | |||
| 3 | PC3 | input/output | T1CH3 | 1: T1CH1N, CTS; 2: T1CH3; 3: T1CH1N | ||||
| 4 | PC4 | input/output | T1CH4 | A2 | 1: T1CH2N; 2: T1CH4; 3: T1CH1 | clock output (MCO) | ||
| 5 | PC6 | input/output | 1: T1CH1; 2: SDA, CTS; 3: SDA, T1CH3N, CTS | 5 V tolerant | ||||
| 6 | PC7 | input/output | 1: T1CH2; 2: RTS; 3: T1CH2, T2CH2, RTS | |||||
| 7 | PD1 | input/output | T1CH3N | 1: SCL, T1CH3N, RX; 2: T1CH3N | Programming and debugging (SWIO, single wire – WCH-LinkE); ADC trigger (AETR2) | |||
| 8 | PD4 | input/output | T2CH1ETR | A7 | 2: T1ETR; 3: T1CH4 | USART CK; OPA output | ||
| 9 | PD5 | input/output | TX | A5 | 2: RX; 3: T2CH4 | |||
| 10 | PD6 | input/output | RX | A6 | 2: TX; 3: T2CH3 | |||
| 11 | PD7 | input/output | T2CH4 | 1: CK; 2: T2CH4, CK | Reset (NRST) by default; usable as GPIO only after switching in the option bytes (RST_MODE = 11); op-amp input +1 | |||
| 12 | PA1 | input/output | T1CH2 | A1 | 2: T1CH2 | Krystal (OSCI); op-amp input −0 | ||
| 13 | PA2 | input/output | T1CH2N | A0 | 1: ADC trigger (AETR2); 2: T1CH2N | Krystal (OSCO); op-amp input +0 | ||
| 14 | VSS | – | ||||||
| 15 | VDD | input | Power 3.3 V or 5 V | |||||
| 16 | PC0 | input/output | T2CH3 | 1: T1CH3; 2: T2CH3; 3: TX |
What to watch out for
- PD1 is the SWIO programming pin – leave it free so uploading stays reliable.
- PD7 is reset (NRST) from the factory – free it up as GPIO in the option bytes (RST_MODE = 11).
- Logic levels follow the supply voltage (3.3 V or 5 V).
- With an external crystal, PA1 and PA2 are taken.
CH32V articles on chiptron.eu/
These chiptron.eu/ articles cover the CH32V chips:
- CH32V003 in the Arduino IDE and on Linux – WCH-LinkE programmer, openOCD and the CH32fun alternative
More pinouts
See all pinouts on the Pinouts page.