Skip to content

Commit 8f09be2

Browse files
authored
Board definition for CH32X033F8P6 TSSOP20 #171
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
1 parent c8350ff commit 8f09be2

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
/**
2+
*******************************************************************************
3+
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
4+
* All rights reserved.
5+
*
6+
* This software component is licensed by WCH under BSD 3-Clause license,
7+
* the "License"; You may not use this file except in compliance with the
8+
* License. You may obtain a copy of the License at:
9+
* opensource.org/licenses/BSD-3-Clause
10+
*
11+
*******************************************************************************
12+
*/
13+
14+
#include "pins_arduino.h"
15+
16+
17+
18+
19+
// Digital PinName array
20+
const PinName digitalPin[] = {
21+
PA_0, // D0 A0
22+
PA_1, // D1 A1
23+
PA_2, // D2 TX2/A2
24+
PA_3, // D3 RX2/A3
25+
PA_4, // D4 CS/A4
26+
PA_5, // D5 SCK/A5
27+
PA_6, // D6 MISO/A6
28+
PB_0, // D7 MOSI/A8 PA7 is tied to PB0 => input only
29+
PB_1, // D8 A9
30+
PB_7, // D9 RST
31+
PC_16, // D10 USBDM tied to PC11=input only
32+
PC_17, // D11 USBPD tied to PC10=input only
33+
PA_9, // D12
34+
PA_11, // D13 SDA (not in 0-series)
35+
PA_10, // D14 SCL (not in 0-series)
36+
PC_3, // D15 A13
37+
PC_18, // D16 SWDIO
38+
PC_19, // D17 SWCLK
39+
};
40+
41+
// Analog (Ax) pin number array, refers to PinName in digitalPin[]?
42+
const uint32_t analogInputPin[] = {
43+
0, // A0, PA0
44+
1, // A1, PA1
45+
2, // A2, PA2
46+
3, // A3, PA3 (no ADC Ch3 in 0-series!)
47+
4, // A4, PA4
48+
5, // A5, PA5
49+
6, // A6, PA6
50+
7, // A7, PA7=PB0, input only
51+
7, // A8, PB0=PA7, input only
52+
8, // A9, PB1
53+
10, // A10, none
54+
11, // A11, none
55+
12, // A12, none
56+
15, // A13, PC3
57+
};
58+

0 commit comments

Comments
 (0)