Skip to content

Conversation

@maxint-rd
Copy link
Contributor

@maxint-rd maxint-rd commented Jan 3, 2025

At the current stage it works for me. Have fun!
Info below is also in the readme of the board definition directory.

                  +------v------+
    MISO/A6 D6~ 1-+PA6       PA5+-20  D5 SCK/A5
MOSI/A8/TX4 D7  2-+PA7=PB0   PA4+-19  D4~ CS/A4
     A9/RX4 D8  3-+PB1      PC19+-18  D17 SWCLK
       /RST D9  4-+PB7       PA3+-17  D3~ RX2/A3*
     USBDM D10  5-+PC16=PC11 PA2+-16  D2~ TX2/A2
     USBDP D11  6-+PC17=PC10 PA1+-15  D1~ A1
           GND  7-+VSS       PA0+-14  D0~ A0
     SWDIO D16  8-+PC18      PC3+-13  D15~ A13
           VCC  9-+VDD      PA10+-12  D14 SCL/TX1
           D12 10-+PA9      PA11+-11  D13 SDA/RX1
                  +-------------+
*A3, VREF and hardware I2C don't work on CH32X033F8P6 0-series (lot number with the penultimate bit 5 being 0).

Tested features

  • digitalWrite()/digitalRead() - can use Arduino pin numbers or PAx notation.
  • analogWrite() - 12-bit resolution, pins marked with ~ in pinout above.
  • analogRead() - very stable 12-bit resolution, but issues with A3/A0/PADC_VREF
  • Serial.print() - Tested 115200 bps on Serial2 (PA2/PA3) and Serial1 (PA10/PA11), as set in variant_CH32X033F8P6.h
  • EEPROM library - may need improvement (updated to support 122 bytes).
  • Pin PB7 (Arduino pin 9) can be configured as hardware reset /RST using WCH Link Utility. (See issue Hardware reset pin doesn't work on CH32X033 or CH32X035 #123)

Known issues/limitations

  • Pins PA7/PB0, PC16/PC11 and PC17/PC10 cannot be used for output.
  • Any signal on A0 seems to show on other ADC pins when disconnected.
  • A3, PADC_VREF and I2C don't work on CH32X033F8P6 0-series (lot number with the penultimate bit 5 being 0).
  • To counter missing I2C the Software_I2C library by Seeed Studio is a good alternative, although it needs some changes to improve compatibility in I2C scanning.

jobitjoseph added a commit to jobitjoseph/CH32_Arduino_Corexx that referenced this pull request Oct 28, 2025
At the current stage it works for me. Have fun!
Info below is also in the readme of the board definition directory.

+------v------+
MISO/A6 D6~ 1-+PA6 PA5+-20 D5 SCK/A5
MOSI/A8/TX4 D7 2-+PA7=PB0 PA4+-19 D4~ CS/A4
A9/RX4 D8 3-+PB1 PC19+-18 D17 SWCLK
/RST D9 4-+PB7 PA3+-17 D3~ RX2/A3*
USBDM D10 5-+PC16=PC11 PA2+-16 D2~ TX2/A2
USBDP D11 6-+PC17=PC10 PA1+-15 D1~ A1
GND 7-+VSS PA0+-14 D0~ A0
SWDIO D16 8-+PC18 PC3+-13 D15~ A13
VCC 9-+VDD PA10+-12 D14 SCL/TX1
D12 10-+PA9 PA11+-11 D13 SDA/RX1
+-------------+
*A3, VREF and hardware I2C don't work on CH32X033F8P6 0-series (lot number with the penultimate bit 5 being 0).

 
Tested features

digitalWrite()/digitalRead() - can use Arduino pin numbers or PAx notation.
analogWrite() - 12-bit resolution, pins marked with ~ in pinout above.
analogRead() - very stable 12-bit resolution, but issues with A3/A0/PADC_VREF
Serial.print() - Tested 115200 bps on Serial2 (PA2/PA3) and Serial1 (PA10/PA11), as set in variant_CH32X033F8P6.h
EEPROM library - may need improvement (updated to support 122 bytes).
Pin PB7 (Arduino pin 9) can be configured as hardware reset /RST using WCH Link Utility. (See issue Hardware reset pin doesn't work on CH32X033 or CH32X035 #123)
Known issues/limitations

Pins PA7/PB0, PC16/PC11 and PC17/PC10 cannot be used for output.
Any signal on A0 seems to show on other ADC pins when disconnected.
A3, PADC_VREF and I2C don't work on CH32X033F8P6 0-series (lot number with the penultimate bit 5 being 0).
To counter missing I2C the Software_I2C library by Seeed Studio is a good alternative, although it needs some changes to improve compatibility in I2C scanning.

openwch/arduino_core_ch32#171
jobitjoseph added a commit to jobitjoseph/CH32_Arduino_Corexx that referenced this pull request Oct 28, 2025
At the current stage it works for me. Have fun!
Info below is also in the readme of the board definition directory.

+------v------+
MISO/A6 D6~ 1-+PA6 PA5+-20 D5 SCK/A5
MOSI/A8/TX4 D7 2-+PA7=PB0 PA4+-19 D4~ CS/A4
A9/RX4 D8 3-+PB1 PC19+-18 D17 SWCLK
/RST D9 4-+PB7 PA3+-17 D3~ RX2/A3*
USBDM D10 5-+PC16=PC11 PA2+-16 D2~ TX2/A2
USBDP D11 6-+PC17=PC10 PA1+-15 D1~ A1
GND 7-+VSS PA0+-14 D0~ A0
SWDIO D16 8-+PC18 PC3+-13 D15~ A13
VCC 9-+VDD PA10+-12 D14 SCL/TX1
D12 10-+PA9 PA11+-11 D13 SDA/RX1
+-------------+
*A3, VREF and hardware I2C don't work on CH32X033F8P6 0-series (lot number with the penultimate bit 5 being 0).

 
Tested features

digitalWrite()/digitalRead() - can use Arduino pin numbers or PAx notation.
analogWrite() - 12-bit resolution, pins marked with ~ in pinout above.
analogRead() - very stable 12-bit resolution, but issues with A3/A0/PADC_VREF
Serial.print() - Tested 115200 bps on Serial2 (PA2/PA3) and Serial1 (PA10/PA11), as set in variant_CH32X033F8P6.h
EEPROM library - may need improvement (updated to support 122 bytes).
Pin PB7 (Arduino pin 9) can be configured as hardware reset /RST using WCH Link Utility. (See issue Hardware reset pin doesn't work on CH32X033 or CH32X035 #123)
Known issues/limitations

Pins PA7/PB0, PC16/PC11 and PC17/PC10 cannot be used for output.
Any signal on A0 seems to show on other ADC pins when disconnected.
A3, PADC_VREF and I2C don't work on CH32X033F8P6 0-series (lot number with the penultimate bit 5 being 0).
To counter missing I2C the Software_I2C library by Seeed Studio is a good alternative, although it needs some changes to improve compatibility in I2C scanning.

openwch/arduino_core_ch32#171
jobitjoseph added a commit to jobitjoseph/CH32_Arduino_Corexx that referenced this pull request Oct 28, 2025
At the current stage it works for me. Have fun!
Info below is also in the readme of the board definition directory.

+------v------+
MISO/A6 D6~ 1-+PA6 PA5+-20 D5 SCK/A5
MOSI/A8/TX4 D7 2-+PA7=PB0 PA4+-19 D4~ CS/A4
A9/RX4 D8 3-+PB1 PC19+-18 D17 SWCLK
/RST D9 4-+PB7 PA3+-17 D3~ RX2/A3*
USBDM D10 5-+PC16=PC11 PA2+-16 D2~ TX2/A2
USBDP D11 6-+PC17=PC10 PA1+-15 D1~ A1
GND 7-+VSS PA0+-14 D0~ A0
SWDIO D16 8-+PC18 PC3+-13 D15~ A13
VCC 9-+VDD PA10+-12 D14 SCL/TX1
D12 10-+PA9 PA11+-11 D13 SDA/RX1
+-------------+
*A3, VREF and hardware I2C don't work on CH32X033F8P6 0-series (lot number with the penultimate bit 5 being 0).

 
Tested features

digitalWrite()/digitalRead() - can use Arduino pin numbers or PAx notation.
analogWrite() - 12-bit resolution, pins marked with ~ in pinout above.
analogRead() - very stable 12-bit resolution, but issues with A3/A0/PADC_VREF
Serial.print() - Tested 115200 bps on Serial2 (PA2/PA3) and Serial1 (PA10/PA11), as set in variant_CH32X033F8P6.h
EEPROM library - may need improvement (updated to support 122 bytes).
Pin PB7 (Arduino pin 9) can be configured as hardware reset /RST using WCH Link Utility. (See issue Hardware reset pin doesn't work on CH32X033 or CH32X035 #123)
Known issues/limitations

Pins PA7/PB0, PC16/PC11 and PC17/PC10 cannot be used for output.
Any signal on A0 seems to show on other ADC pins when disconnected.
A3, PADC_VREF and I2C don't work on CH32X033F8P6 0-series (lot number with the penultimate bit 5 being 0).
To counter missing I2C the Software_I2C library by Seeed Studio is a good alternative, although it needs some changes to improve compatibility in I2C scanning.

openwch/arduino_core_ch32#171
jobitjoseph added a commit to jobitjoseph/CH32_Arduino_Corexx that referenced this pull request Oct 28, 2025
At the current stage it works for me. Have fun!
Info below is also in the readme of the board definition directory.

+------v------+
MISO/A6 D6~ 1-+PA6 PA5+-20 D5 SCK/A5
MOSI/A8/TX4 D7 2-+PA7=PB0 PA4+-19 D4~ CS/A4
A9/RX4 D8 3-+PB1 PC19+-18 D17 SWCLK
/RST D9 4-+PB7 PA3+-17 D3~ RX2/A3*
USBDM D10 5-+PC16=PC11 PA2+-16 D2~ TX2/A2
USBDP D11 6-+PC17=PC10 PA1+-15 D1~ A1
GND 7-+VSS PA0+-14 D0~ A0
SWDIO D16 8-+PC18 PC3+-13 D15~ A13
VCC 9-+VDD PA10+-12 D14 SCL/TX1
D12 10-+PA9 PA11+-11 D13 SDA/RX1
+-------------+
*A3, VREF and hardware I2C don't work on CH32X033F8P6 0-series (lot number with the penultimate bit 5 being 0).

 
Tested features

digitalWrite()/digitalRead() - can use Arduino pin numbers or PAx notation.
analogWrite() - 12-bit resolution, pins marked with ~ in pinout above.
analogRead() - very stable 12-bit resolution, but issues with A3/A0/PADC_VREF
Serial.print() - Tested 115200 bps on Serial2 (PA2/PA3) and Serial1 (PA10/PA11), as set in variant_CH32X033F8P6.h
EEPROM library - may need improvement (updated to support 122 bytes).
Pin PB7 (Arduino pin 9) can be configured as hardware reset /RST using WCH Link Utility. (See issue Hardware reset pin doesn't work on CH32X033 or CH32X035 #123)
Known issues/limitations

Pins PA7/PB0, PC16/PC11 and PC17/PC10 cannot be used for output.
Any signal on A0 seems to show on other ADC pins when disconnected.
A3, PADC_VREF and I2C don't work on CH32X033F8P6 0-series (lot number with the penultimate bit 5 being 0).
To counter missing I2C the Software_I2C library by Seeed Studio is a good alternative, although it needs some changes to improve compatibility in I2C scanning.

openwch/arduino_core_ch32#171
jobitjoseph added a commit to jobitjoseph/CH32_Arduino_Corexx that referenced this pull request Oct 28, 2025
At the current stage it works for me. Have fun!
Info below is also in the readme of the board definition directory.

+------v------+
MISO/A6 D6~ 1-+PA6 PA5+-20 D5 SCK/A5
MOSI/A8/TX4 D7 2-+PA7=PB0 PA4+-19 D4~ CS/A4
A9/RX4 D8 3-+PB1 PC19+-18 D17 SWCLK
/RST D9 4-+PB7 PA3+-17 D3~ RX2/A3*
USBDM D10 5-+PC16=PC11 PA2+-16 D2~ TX2/A2
USBDP D11 6-+PC17=PC10 PA1+-15 D1~ A1
GND 7-+VSS PA0+-14 D0~ A0
SWDIO D16 8-+PC18 PC3+-13 D15~ A13
VCC 9-+VDD PA10+-12 D14 SCL/TX1
D12 10-+PA9 PA11+-11 D13 SDA/RX1
+-------------+
*A3, VREF and hardware I2C don't work on CH32X033F8P6 0-series (lot number with the penultimate bit 5 being 0).

 
Tested features

digitalWrite()/digitalRead() - can use Arduino pin numbers or PAx notation.
analogWrite() - 12-bit resolution, pins marked with ~ in pinout above.
analogRead() - very stable 12-bit resolution, but issues with A3/A0/PADC_VREF
Serial.print() - Tested 115200 bps on Serial2 (PA2/PA3) and Serial1 (PA10/PA11), as set in variant_CH32X033F8P6.h
EEPROM library - may need improvement (updated to support 122 bytes).
Pin PB7 (Arduino pin 9) can be configured as hardware reset /RST using WCH Link Utility. (See issue Hardware reset pin doesn't work on CH32X033 or CH32X035 #123)
Known issues/limitations

Pins PA7/PB0, PC16/PC11 and PC17/PC10 cannot be used for output.
Any signal on A0 seems to show on other ADC pins when disconnected.
A3, PADC_VREF and I2C don't work on CH32X033F8P6 0-series (lot number with the penultimate bit 5 being 0).
To counter missing I2C the Software_I2C library by Seeed Studio is a good alternative, although it needs some changes to improve compatibility in I2C scanning.

openwch/arduino_core_ch32#171
jobitjoseph added a commit to jobitjoseph/CH32_Arduino_Corexx that referenced this pull request Oct 28, 2025
At the current stage it works for me. Have fun!
Info below is also in the readme of the board definition directory.

+------v------+
MISO/A6 D6~ 1-+PA6 PA5+-20 D5 SCK/A5
MOSI/A8/TX4 D7 2-+PA7=PB0 PA4+-19 D4~ CS/A4
A9/RX4 D8 3-+PB1 PC19+-18 D17 SWCLK
/RST D9 4-+PB7 PA3+-17 D3~ RX2/A3*
USBDM D10 5-+PC16=PC11 PA2+-16 D2~ TX2/A2
USBDP D11 6-+PC17=PC10 PA1+-15 D1~ A1
GND 7-+VSS PA0+-14 D0~ A0
SWDIO D16 8-+PC18 PC3+-13 D15~ A13
VCC 9-+VDD PA10+-12 D14 SCL/TX1
D12 10-+PA9 PA11+-11 D13 SDA/RX1
+-------------+
*A3, VREF and hardware I2C don't work on CH32X033F8P6 0-series (lot number with the penultimate bit 5 being 0).

 
Tested features

digitalWrite()/digitalRead() - can use Arduino pin numbers or PAx notation.
analogWrite() - 12-bit resolution, pins marked with ~ in pinout above.
analogRead() - very stable 12-bit resolution, but issues with A3/A0/PADC_VREF
Serial.print() - Tested 115200 bps on Serial2 (PA2/PA3) and Serial1 (PA10/PA11), as set in variant_CH32X033F8P6.h
EEPROM library - may need improvement (updated to support 122 bytes).
Pin PB7 (Arduino pin 9) can be configured as hardware reset /RST using WCH Link Utility. (See issue Hardware reset pin doesn't work on CH32X033 or CH32X035 #123)
Known issues/limitations

Pins PA7/PB0, PC16/PC11 and PC17/PC10 cannot be used for output.
Any signal on A0 seems to show on other ADC pins when disconnected.
A3, PADC_VREF and I2C don't work on CH32X033F8P6 0-series (lot number with the penultimate bit 5 being 0).
To counter missing I2C the Software_I2C library by Seeed Studio is a good alternative, although it needs some changes to improve compatibility in I2C scanning.

openwch/arduino_core_ch32#171
jobitjoseph added a commit to jobitjoseph/CH32_Arduino_Corexx that referenced this pull request Oct 28, 2025
At the current stage it works for me. Have fun!
Info below is also in the readme of the board definition directory.

+------v------+
MISO/A6 D6~ 1-+PA6 PA5+-20 D5 SCK/A5
MOSI/A8/TX4 D7 2-+PA7=PB0 PA4+-19 D4~ CS/A4
A9/RX4 D8 3-+PB1 PC19+-18 D17 SWCLK
/RST D9 4-+PB7 PA3+-17 D3~ RX2/A3*
USBDM D10 5-+PC16=PC11 PA2+-16 D2~ TX2/A2
USBDP D11 6-+PC17=PC10 PA1+-15 D1~ A1
GND 7-+VSS PA0+-14 D0~ A0
SWDIO D16 8-+PC18 PC3+-13 D15~ A13
VCC 9-+VDD PA10+-12 D14 SCL/TX1
D12 10-+PA9 PA11+-11 D13 SDA/RX1
+-------------+
*A3, VREF and hardware I2C don't work on CH32X033F8P6 0-series (lot number with the penultimate bit 5 being 0).

 
Tested features

digitalWrite()/digitalRead() - can use Arduino pin numbers or PAx notation.
analogWrite() - 12-bit resolution, pins marked with ~ in pinout above.
analogRead() - very stable 12-bit resolution, but issues with A3/A0/PADC_VREF
Serial.print() - Tested 115200 bps on Serial2 (PA2/PA3) and Serial1 (PA10/PA11), as set in variant_CH32X033F8P6.h
EEPROM library - may need improvement (updated to support 122 bytes).
Pin PB7 (Arduino pin 9) can be configured as hardware reset /RST using WCH Link Utility. (See issue Hardware reset pin doesn't work on CH32X033 or CH32X035 #123)
Known issues/limitations

Pins PA7/PB0, PC16/PC11 and PC17/PC10 cannot be used for output.
Any signal on A0 seems to show on other ADC pins when disconnected.
A3, PADC_VREF and I2C don't work on CH32X033F8P6 0-series (lot number with the penultimate bit 5 being 0).
To counter missing I2C the Software_I2C library by Seeed Studio is a good alternative, although it needs some changes to improve compatibility in I2C scanning.

openwch/arduino_core_ch32#171
jobitjoseph added a commit to jobitjoseph/CH32_Arduino_Corexx that referenced this pull request Oct 28, 2025
At the current stage it works for me. Have fun!
Info below is also in the readme of the board definition directory.

+------v------+
MISO/A6 D6~ 1-+PA6 PA5+-20 D5 SCK/A5
MOSI/A8/TX4 D7 2-+PA7=PB0 PA4+-19 D4~ CS/A4
A9/RX4 D8 3-+PB1 PC19+-18 D17 SWCLK
/RST D9 4-+PB7 PA3+-17 D3~ RX2/A3*
USBDM D10 5-+PC16=PC11 PA2+-16 D2~ TX2/A2
USBDP D11 6-+PC17=PC10 PA1+-15 D1~ A1
GND 7-+VSS PA0+-14 D0~ A0
SWDIO D16 8-+PC18 PC3+-13 D15~ A13
VCC 9-+VDD PA10+-12 D14 SCL/TX1
D12 10-+PA9 PA11+-11 D13 SDA/RX1
+-------------+
*A3, VREF and hardware I2C don't work on CH32X033F8P6 0-series (lot number with the penultimate bit 5 being 0).

 
Tested features

digitalWrite()/digitalRead() - can use Arduino pin numbers or PAx notation.
analogWrite() - 12-bit resolution, pins marked with ~ in pinout above.
analogRead() - very stable 12-bit resolution, but issues with A3/A0/PADC_VREF
Serial.print() - Tested 115200 bps on Serial2 (PA2/PA3) and Serial1 (PA10/PA11), as set in variant_CH32X033F8P6.h
EEPROM library - may need improvement (updated to support 122 bytes).
Pin PB7 (Arduino pin 9) can be configured as hardware reset /RST using WCH Link Utility. (See issue Hardware reset pin doesn't work on CH32X033 or CH32X035 #123)
Known issues/limitations

Pins PA7/PB0, PC16/PC11 and PC17/PC10 cannot be used for output.
Any signal on A0 seems to show on other ADC pins when disconnected.
A3, PADC_VREF and I2C don't work on CH32X033F8P6 0-series (lot number with the penultimate bit 5 being 0).
To counter missing I2C the Software_I2C library by Seeed Studio is a good alternative, although it needs some changes to improve compatibility in I2C scanning.

openwch/arduino_core_ch32#171
jobitjoseph added a commit to jobitjoseph/CH32_Arduino_Corexx that referenced this pull request Oct 28, 2025
At the current stage it works for me. Have fun!
Info below is also in the readme of the board definition directory.

+------v------+
MISO/A6 D6~ 1-+PA6 PA5+-20 D5 SCK/A5
MOSI/A8/TX4 D7 2-+PA7=PB0 PA4+-19 D4~ CS/A4
A9/RX4 D8 3-+PB1 PC19+-18 D17 SWCLK
/RST D9 4-+PB7 PA3+-17 D3~ RX2/A3*
USBDM D10 5-+PC16=PC11 PA2+-16 D2~ TX2/A2
USBDP D11 6-+PC17=PC10 PA1+-15 D1~ A1
GND 7-+VSS PA0+-14 D0~ A0
SWDIO D16 8-+PC18 PC3+-13 D15~ A13
VCC 9-+VDD PA10+-12 D14 SCL/TX1
D12 10-+PA9 PA11+-11 D13 SDA/RX1
+-------------+
*A3, VREF and hardware I2C don't work on CH32X033F8P6 0-series (lot number with the penultimate bit 5 being 0).

 
Tested features

digitalWrite()/digitalRead() - can use Arduino pin numbers or PAx notation.
analogWrite() - 12-bit resolution, pins marked with ~ in pinout above.
analogRead() - very stable 12-bit resolution, but issues with A3/A0/PADC_VREF
Serial.print() - Tested 115200 bps on Serial2 (PA2/PA3) and Serial1 (PA10/PA11), as set in variant_CH32X033F8P6.h
EEPROM library - may need improvement (updated to support 122 bytes).
Pin PB7 (Arduino pin 9) can be configured as hardware reset /RST using WCH Link Utility. (See issue Hardware reset pin doesn't work on CH32X033 or CH32X035 #123)
Known issues/limitations

Pins PA7/PB0, PC16/PC11 and PC17/PC10 cannot be used for output.
Any signal on A0 seems to show on other ADC pins when disconnected.
A3, PADC_VREF and I2C don't work on CH32X033F8P6 0-series (lot number with the penultimate bit 5 being 0).
To counter missing I2C the Software_I2C library by Seeed Studio is a good alternative, although it needs some changes to improve compatibility in I2C scanning.

openwch/arduino_core_ch32#171
jobitjoseph added a commit to jobitjoseph/CH32_Arduino_Corexx that referenced this pull request Oct 28, 2025
At the current stage it works for me. Have fun!
Info below is also in the readme of the board definition directory.

+------v------+
MISO/A6 D6~ 1-+PA6 PA5+-20 D5 SCK/A5
MOSI/A8/TX4 D7 2-+PA7=PB0 PA4+-19 D4~ CS/A4
A9/RX4 D8 3-+PB1 PC19+-18 D17 SWCLK
/RST D9 4-+PB7 PA3+-17 D3~ RX2/A3*
USBDM D10 5-+PC16=PC11 PA2+-16 D2~ TX2/A2
USBDP D11 6-+PC17=PC10 PA1+-15 D1~ A1
GND 7-+VSS PA0+-14 D0~ A0
SWDIO D16 8-+PC18 PC3+-13 D15~ A13
VCC 9-+VDD PA10+-12 D14 SCL/TX1
D12 10-+PA9 PA11+-11 D13 SDA/RX1
+-------------+
*A3, VREF and hardware I2C don't work on CH32X033F8P6 0-series (lot number with the penultimate bit 5 being 0).

 
Tested features

digitalWrite()/digitalRead() - can use Arduino pin numbers or PAx notation.
analogWrite() - 12-bit resolution, pins marked with ~ in pinout above.
analogRead() - very stable 12-bit resolution, but issues with A3/A0/PADC_VREF
Serial.print() - Tested 115200 bps on Serial2 (PA2/PA3) and Serial1 (PA10/PA11), as set in variant_CH32X033F8P6.h
EEPROM library - may need improvement (updated to support 122 bytes).
Pin PB7 (Arduino pin 9) can be configured as hardware reset /RST using WCH Link Utility. (See issue Hardware reset pin doesn't work on CH32X033 or CH32X035 #123)
Known issues/limitations

Pins PA7/PB0, PC16/PC11 and PC17/PC10 cannot be used for output.
Any signal on A0 seems to show on other ADC pins when disconnected.
A3, PADC_VREF and I2C don't work on CH32X033F8P6 0-series (lot number with the penultimate bit 5 being 0).
To counter missing I2C the Software_I2C library by Seeed Studio is a good alternative, although it needs some changes to improve compatibility in I2C scanning.

openwch/arduino_core_ch32#171
jobitjoseph added a commit to jobitjoseph/CH32_Arduino_Corexx that referenced this pull request Oct 28, 2025
At the current stage it works for me. Have fun!
Info below is also in the readme of the board definition directory.

+------v------+
MISO/A6 D6~ 1-+PA6 PA5+-20 D5 SCK/A5
MOSI/A8/TX4 D7 2-+PA7=PB0 PA4+-19 D4~ CS/A4
A9/RX4 D8 3-+PB1 PC19+-18 D17 SWCLK
/RST D9 4-+PB7 PA3+-17 D3~ RX2/A3*
USBDM D10 5-+PC16=PC11 PA2+-16 D2~ TX2/A2
USBDP D11 6-+PC17=PC10 PA1+-15 D1~ A1
GND 7-+VSS PA0+-14 D0~ A0
SWDIO D16 8-+PC18 PC3+-13 D15~ A13
VCC 9-+VDD PA10+-12 D14 SCL/TX1
D12 10-+PA9 PA11+-11 D13 SDA/RX1
+-------------+
*A3, VREF and hardware I2C don't work on CH32X033F8P6 0-series (lot number with the penultimate bit 5 being 0).

 
Tested features

digitalWrite()/digitalRead() - can use Arduino pin numbers or PAx notation.
analogWrite() - 12-bit resolution, pins marked with ~ in pinout above.
analogRead() - very stable 12-bit resolution, but issues with A3/A0/PADC_VREF
Serial.print() - Tested 115200 bps on Serial2 (PA2/PA3) and Serial1 (PA10/PA11), as set in variant_CH32X033F8P6.h
EEPROM library - may need improvement (updated to support 122 bytes).
Pin PB7 (Arduino pin 9) can be configured as hardware reset /RST using WCH Link Utility. (See issue Hardware reset pin doesn't work on CH32X033 or CH32X035 #123)
Known issues/limitations

Pins PA7/PB0, PC16/PC11 and PC17/PC10 cannot be used for output.
Any signal on A0 seems to show on other ADC pins when disconnected.
A3, PADC_VREF and I2C don't work on CH32X033F8P6 0-series (lot number with the penultimate bit 5 being 0).
To counter missing I2C the Software_I2C library by Seeed Studio is a good alternative, although it needs some changes to improve compatibility in I2C scanning.

openwch/arduino_core_ch32#171
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant