

The CH32V003F4P6 is a low-power 32-bit microcontroller developed by WCH. It is based on the RISC-V architecture and operates at a maximum clock speed of 48 MHz. This microcontroller is equipped with 4 KB of SRAM and 16 KB of flash memory, making it suitable for a wide range of embedded applications. Its compact design, low power consumption, and versatile I/O interfaces make it ideal for IoT devices, industrial control systems, and consumer electronics.








| Parameter | Specification |
|---|---|
| Architecture | RISC-V |
| Core | 32-bit |
| Maximum Clock Speed | 48 MHz |
| Flash Memory | 16 KB |
| SRAM | 4 KB |
| Operating Voltage | 2.7V to 5.5V |
| GPIO Pins | Up to 18 |
| Communication Interfaces | UART, I²C, SPI |
| Timers | 2 x 16-bit timers |
| ADC | 1 x 10-bit ADC (up to 8 channels) |
| Power Consumption | Low power, suitable for battery use |
| Package Type | SOP-16 |
The CH32V003F4P6 is available in a 16-pin SOP package. Below is the pin configuration:
| Pin Number | Pin Name | Function | Description |
|---|---|---|---|
| 1 | VDD | Power Supply | Positive power supply (2.7V to 5.5V) |
| 2 | PA0 | GPIO/ADC Channel 0 | General-purpose I/O or ADC input |
| 3 | PA1 | GPIO/ADC Channel 1 | General-purpose I/O or ADC input |
| 4 | PA2 | GPIO/USART TX | General-purpose I/O or UART transmit |
| 5 | PA3 | GPIO/USART RX | General-purpose I/O or UART receive |
| 6 | PA4 | GPIO/ADC Channel 4 | General-purpose I/O or ADC input |
| 7 | PA5 | GPIO/ADC Channel 5 | General-purpose I/O or ADC input |
| 8 | PA6 | GPIO/SPI SCK | General-purpose I/O or SPI clock |
| 9 | PA7 | GPIO/SPI MISO | General-purpose I/O or SPI MISO |
| 10 | PA8 | GPIO/SPI MOSI | General-purpose I/O or SPI MOSI |
| 11 | PA9 | GPIO/I²C SCL | General-purpose I/O or I²C clock |
| 12 | PA10 | GPIO/I²C SDA | General-purpose I/O or I²C data |
| 13 | PA11 | GPIO | General-purpose I/O |
| 14 | PA12 | GPIO | General-purpose I/O |
| 15 | GND | Ground | Ground connection |
| 16 | NRST | Reset | Active-low reset pin |
The CH32V003F4P6 can be programmed and interfaced with an Arduino UNO using UART. Below is an example code snippet for communication:
// Arduino UNO code to communicate with CH32V003F4P6 via UART
void setup() {
Serial.begin(9600); // Initialize UART at 9600 baud rate
Serial.println("Arduino to CH32V003F4P6 Communication Started");
}
void loop() {
// Send data to CH32V003F4P6
Serial.println("Hello CH32V003F4P6!");
delay(1000); // Wait for 1 second
// Check if data is received from CH32V003F4P6
if (Serial.available() > 0) {
String receivedData = Serial.readString();
Serial.print("Received: ");
Serial.println(receivedData);
}
}
Microcontroller Not Powering On:
No UART Communication:
ADC Not Working:
Microcontroller Not Resetting:
Q: Can the CH32V003F4P6 operate at 5V?
Q: How many GPIO pins are available?
Q: Is the CH32V003F4P6 compatible with Arduino IDE?
Q: What is the maximum clock speed?