Skip to content

Commit 9871543

Browse files
committed
update CH32X035
1 parent 220426b commit 9871543

File tree

110 files changed

+18868
-10
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

110 files changed

+18868
-10
lines changed

Diff for: README.md

+8-1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ It will be a long-term support and maintenance project, unless we encounter forc
3030

3131
- [CH32V00x EVT Boards](#CH32V00x-EVT-Boards)
3232
- [CH32V20x EVT Boards](#CH32V20x-EVT-Boards)
33+
- [CH32X035 EVT Boards](#CH32X035-EVT-Boards)
3334

3435
### CH32V00x EVT Boards
3536

@@ -41,7 +42,13 @@ It will be a long-term support and maintenance project, unless we encounter forc
4142

4243
| Status | Boards name | Peripherals | Release |
4344
| :----: | ---- | ---- | :-----: |
44-
| :heavy_check_mark: | CH32V203G8U | ADC,DAC,USART,GPIO,EXTI,SysTick | 1.0.0 |
45+
| :heavy_check_mark: | CH32V203G8U | ADC,DAC,USART,GPIO,EXTI,SysTick | 1.0.0 |
46+
47+
### CH32X035 EVT Boards
48+
49+
| Status | Boards name | Peripherals | Release |
50+
| :----: | ---- | ---- | :-----: |
51+
| :heavy_check_mark: | CH32X035G8U | ADC,DAC,USART,GPIO,EXTI,SysTick | 1.0.1 |
4552

4653
## Submit bugs
4754

Diff for: boards.txt

+86
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,92 @@ CH32V00x_EVT.menu.rtlib.full.build.flags.ldspecs=
9898

9999

100100

101+
#############################################################################
102+
##CH32X035 EVT Board
103+
104+
CH32X035_EVT.name=CH32X035
105+
CH32X035_EVT.build.core=arduino
106+
CH32X035_EVT.build.board=CH32X035_EVT
107+
CH32X035_EVT.upload.maximum_size=0
108+
CH32X035_EVT.upload.maximum_data_size=0
109+
CH32X035_EVT.build.variant_h=variant_{build.board}.h
110+
111+
112+
#CH32X035 EVT Board
113+
CH32X035_EVT.menu.pnum.CH32X035G8U=CH32X035G8U EVT
114+
CH32X035_EVT.menu.pnum.CH32X035G8U.node=NODE_X035G8
115+
CH32X035_EVT.menu.pnum.CH32X035G8U.upload.maximum_size=63488
116+
CH32X035_EVT.menu.pnum.CH32X035G8U.upload.maximum_data_size=20480
117+
CH32X035_EVT.menu.pnum.CH32X035G8U.build.mcu=QingKe-V4C
118+
CH32X035_EVT.menu.pnum.CH32X035G8U.build.board=CH32X035G8U
119+
CH32X035_EVT.menu.pnum.CH32X035G8U.build.series=CH32X035
120+
CH32X035_EVT.menu.pnum.CH32X035G8U.build.variant=CH32X035/CH32X035G8U
121+
CH32X035_EVT.menu.pnum.CH32X035G8U.build.chip=CH32X035G8U
122+
CH32X035_EVT.menu.pnum.CH32X035G8U.build.march=rv32imacxw
123+
CH32X035_EVT.menu.pnum.CH32X035G8U.build.mabi=ilp32
124+
CH32X035_EVT.menu.pnum.CH32X035G8U.build.math_lib_gcc=-lm
125+
CH32X035_EVT.menu.pnum.CH32X035G8U.build.IQ_math_RV32=
126+
CH32X035_EVT.menu.pnum.CH32X035G8U.build.ch_extra_lib=-lprintf
127+
128+
129+
# Upload menu
130+
CH32X035_EVT.menu.upload_method.swdMethod=WCH-SWD
131+
CH32X035_EVT.menu.upload_method.swdMethod.upload.protocol=
132+
CH32X035_EVT.menu.upload_method.swdMethod.upload.options=
133+
CH32X035_EVT.menu.upload_method.swdMethod.upload.tool=WCH_linkE
134+
135+
136+
137+
# Optimizations
138+
CH32X035_EVT.menu.opt.osstd=Smallest (-Os default)
139+
CH32X035_EVT.menu.opt.osstd.build.flags.optimize=-Os
140+
CH32X035_EVT.menu.opt.oslto=Smallest (-Os) with LTO
141+
CH32X035_EVT.menu.opt.oslto.build.flags.optimize=-Os -flto
142+
CH32X035_EVT.menu.opt.o1std=Fast (-O1)
143+
CH32X035_EVT.menu.opt.o1std.build.flags.optimize=-O1
144+
CH32X035_EVT.menu.opt.o1lto=Fast (-O1) with LTO
145+
CH32X035_EVT.menu.opt.o1lto.build.flags.optimize=-O1 -flto
146+
CH32X035_EVT.menu.opt.o2std=Faster (-O2)
147+
CH32X035_EVT.menu.opt.o2std.build.flags.optimize=-O2
148+
CH32X035_EVT.menu.opt.o2lto=Faster (-O2) with LTO
149+
CH32X035_EVT.menu.opt.o2lto.build.flags.optimize=-O2 -flto
150+
CH32X035_EVT.menu.opt.o3std=Fastest (-O3)
151+
CH32X035_EVT.menu.opt.o3std.build.flags.optimize=-O3
152+
CH32X035_EVT.menu.opt.o3lto=Fastest (-O3) with LTO
153+
CH32X035_EVT.menu.opt.o3lto.build.flags.optimize=-O3 -flto
154+
CH32X035_EVT.menu.opt.ogstd=Debug (-Og)
155+
CH32X035_EVT.menu.opt.ogstd.build.flags.optimize=-Og
156+
CH32X035_EVT.menu.opt.o0std=No Optimization (-O0)
157+
CH32X035_EVT.menu.opt.o0std.build.flags.optimize=-O0
158+
159+
160+
# Debug information
161+
CH32X035_EVT.menu.dbg.none=None
162+
CH32X035_EVT.menu.dbg.none.build.flags.debug=
163+
CH32X035_EVT.menu.dbg.enable_sym=Symbols Enabled (-g)
164+
CH32X035_EVT.menu.dbg.enable_sym.build.flags.debug=-g -DNDEBUG
165+
CH32X035_EVT.menu.dbg.enable_log=Core logs Enabled
166+
CH32X035_EVT.menu.dbg.enable_log.build.flags.debug=
167+
CH32X035_EVT.menu.dbg.enable_all=Core Logs and Symbols Enabled (-g)
168+
CH32X035_EVT.menu.dbg.enable_all.build.flags.debug=-g
169+
170+
171+
# C Runtime Library
172+
CH32X035_EVT.menu.rtlib.nano=Newlib Nano (default)
173+
CH32X035_EVT.menu.rtlib.nano.build.flags.ldflags=--specs=nano.specs --specs=nosys.specs
174+
CH32X035_EVT.menu.rtlib.nanofp=Newlib Nano + Float Printf
175+
CH32X035_EVT.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs --specs=nosys.specs -u _printf_float
176+
CH32X035_EVT.menu.rtlib.nanofs=Newlib Nano + Float Scanf
177+
CH32X035_EVT.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs --specs=nosys.specs -u _scanf_float
178+
CH32X035_EVT.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
179+
CH32X035_EVT.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs --specs=nosys.specs -u _printf_float -u _scanf_float
180+
CH32X035_EVT.menu.rtlib.full=Newlib Standard
181+
CH32X035_EVT.menu.rtlib.full.build.flags.ldspecs=
182+
183+
184+
185+
186+
101187
#############################################################################
102188
##CH32V20x EVT Board
103189

Diff for: cores/arduino/ch32/PinAF_ch32yyxx.h

+4
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,8 @@
1111
#endif
1212

1313

14+
#if defined(CH32X035)
15+
#include "../../../variants/CH32X035/PinAF_CH32X035.h"
16+
#endif
17+
1418
#endif /* _PINAF_CH32YYXX_H */

Diff for: cores/arduino/ch32/PinNames.h

+120-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
extern "C" {
99
#endif
1010

11+
1112
// Alternative possibilities which use other HW peripheral instances
1213
#define ALT0 0x000
1314
#define ALT1 0x100
@@ -32,6 +33,8 @@ extern "C" {
3233
// PinName mask
3334
#define PNAME_MASK 0xFF
3435

36+
#if !defined(CH32X035)
37+
3538
typedef enum {
3639
// Not connected
3740
NC = 0xFFFFFFFF,
@@ -52,7 +55,7 @@ typedef enum {
5255
PA_12 = (PortA << 4) + 0x0C,
5356
PA_13 = (PortA << 4) + 0x0D,
5457
PA_14 = (PortA << 4) + 0x0E,
55-
PA_15 = (PortA << 4) + 0x0F,
58+
PA_15 = (PortA << 4) + 0x0F,
5659
#if defined GPIOB_BASE
5760
PB_0 = (PortB << 4) + 0x00,
5861
PB_1 = (PortB << 4) + 0x01,
@@ -205,6 +208,122 @@ typedef enum {
205208
P_END = NC
206209
} PinName;
207210

211+
#else
212+
213+
typedef enum {
214+
// Not connected
215+
NC = 0xFFFFFFFF,
216+
217+
// Pin name definition
218+
PA_0 = (PortA << 5) + 0x00,
219+
PA_1 = (PortA << 5) + 0x01,
220+
PA_2 = (PortA << 5) + 0x02,
221+
PA_3 = (PortA << 5) + 0x03,
222+
PA_4 = (PortA << 5) + 0x04,
223+
PA_5 = (PortA << 5) + 0x05,
224+
PA_6 = (PortA << 5) + 0x06,
225+
PA_7 = (PortA << 5) + 0x07,
226+
PA_8 = (PortA << 5) + 0x08,
227+
PA_9 = (PortA << 5) + 0x09,
228+
PA_10 = (PortA << 5) + 0x0A,
229+
PA_11 = (PortA << 5) + 0x0B,
230+
PA_12 = (PortA << 5) + 0x0C,
231+
PA_13 = (PortA << 5) + 0x0D,
232+
PA_14 = (PortA << 5) + 0x0E,
233+
PA_15 = (PortA << 5) + 0x0F,
234+
PA_16 = (PortA << 5) + 0x10,
235+
PA_17 = (PortA << 5) + 0x11,
236+
PA_18 = (PortA << 5) + 0x12,
237+
PA_19 = (PortA << 5) + 0x13,
238+
PA_20 = (PortA << 5) + 0x14,
239+
PA_21 = (PortA << 5) + 0x15,
240+
PA_22 = (PortA << 5) + 0x16,
241+
PA_23 = (PortA << 5) + 0x17,
242+
243+
244+
#if defined GPIOB_BASE
245+
PB_0 = (PortB << 5) + 0x00,
246+
PB_1 = (PortB << 5) + 0x01,
247+
PB_2 = (PortB << 5) + 0x02,
248+
PB_3 = (PortB << 5) + 0x03,
249+
PB_4 = (PortB << 5) + 0x04,
250+
PB_5 = (PortB << 5) + 0x05,
251+
PB_6 = (PortB << 5) + 0x06,
252+
PB_7 = (PortB << 5) + 0x07,
253+
PB_8 = (PortB << 5) + 0x08,
254+
PB_9 = (PortB << 5) + 0x09,
255+
PB_10 = (PortB << 5) + 0x0A,
256+
PB_11 = (PortB << 5) + 0x0B,
257+
PB_12 = (PortB << 5) + 0x0C,
258+
PB_13 = (PortB << 5) + 0x0D,
259+
PB_14 = (PortB << 5) + 0x0E,
260+
PB_15 = (PortB << 5) + 0x0F,
261+
PB_16 = (PortB << 5) + 0x10,
262+
PB_17 = (PortB << 5) + 0x11,
263+
PB_18 = (PortB << 5) + 0x12,
264+
PB_19 = (PortB << 5) + 0x13,
265+
PB_20 = (PortB << 5) + 0x14,
266+
PB_21 = (PortB << 5) + 0x15,
267+
PB_22 = (PortB << 5) + 0x16,
268+
PB_23 = (PortB << 5) + 0x17,
269+
270+
#endif
271+
#if defined GPIOC_BASE
272+
PC_0 = (PortC << 5) + 0x00,
273+
PC_1 = (PortC << 5) + 0x01,
274+
PC_2 = (PortC << 5) + 0x02,
275+
PC_3 = (PortC << 5) + 0x03,
276+
PC_4 = (PortC << 5) + 0x04,
277+
PC_5 = (PortC << 5) + 0x05,
278+
PC_6 = (PortC << 5) + 0x06,
279+
PC_7 = (PortC << 5) + 0x07,
280+
PC_8 = (PortC << 5) + 0x08,
281+
PC_9 = (PortC << 5) + 0x09,
282+
PC_10 = (PortC << 5) + 0x0A,
283+
PC_11 = (PortC << 5) + 0x0B,
284+
PC_12 = (PortC << 5) + 0x0C,
285+
PC_13 = (PortC << 5) + 0x0D,
286+
PC_14 = (PortC << 5) + 0x0E,
287+
PC_15 = (PortC << 5) + 0x0F,
288+
PC_16 = (PortC << 5) + 0x10,
289+
PC_17 = (PortC << 5) + 0x11,
290+
PC_18 = (PortC << 5) + 0x12,
291+
PC_19 = (PortC << 5) + 0x13,
292+
PC_20 = (PortC << 5) + 0x14,
293+
PC_21 = (PortC << 5) + 0x15,
294+
PC_22 = (PortC << 5) + 0x16,
295+
PC_23 = (PortC << 5) + 0x17,
296+
#endif
297+
298+
// Specific pin name
299+
PADC_BASE = PNAME_ANALOG_INTERNAL_BASE,
300+
#if defined(ADC_Channel_TempSensor)
301+
PADC_TEMP,
302+
#endif
303+
#ifdef ADC_Channel_Vrefint
304+
PADC_VREF,
305+
#endif
306+
#ifdef ADC_Channel_Vbat
307+
PADC_VBAT,
308+
#endif
309+
ANA_START,
310+
#ifdef SYSCFG_PMCSETR_ANA0_SEL_Pos
311+
ANA_0,
312+
#endif
313+
#ifdef SYSCFG_PMCSETR_ANA1_SEL_Pos
314+
ANA_1,
315+
#endif
316+
// Specific pin name define in the variant
317+
#if __has_include("PinNamesVar.h")
318+
#include "PinNamesVar.h"
319+
#endif
320+
P_END = NC
321+
} PinName;
322+
323+
324+
#endif
325+
326+
208327
#ifdef __cplusplus
209328
}
210329
#endif

Diff for: cores/arduino/ch32/PinNamesTypes.h

+19-1
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,8 @@ typedef enum {
200200
#define PULLUP (1)
201201
#define PILLDOWN (2)
202202

203+
204+
#if !defined(CH32X035)
203205
// High nibble = port number (FirstPort <= PortName <= LastPort)
204206
// Low nibble = pin number
205207
#define CH_PORT(X) (((uint32_t)(X) >> 4) & 0xF)
@@ -209,10 +211,26 @@ typedef enum {
209211
// As FirstPort is equal to 0 and CH_PORT cast as an unsigned
210212
// (CH_PORT(X) >= FirstPort) is always true
211213
//#define CH_VALID_PINNAME(X) ((CH_PORT(X) >= FirstPort) && (CH_PORT(X) <= LastPort))
212-
#define CH_VALID_PINNAME(X) (CH_PORT(X) <= LastPort)
213214

215+
#define CH_VALID_PINNAME(X) (CH_PORT(X) <= LastPort)
214216
#define CH_GPIO_PIN(X) ((uint16_t)(1<<CH_PIN(X)))
215217

218+
#else
219+
220+
// High nibble = port number (FirstPort <= PortName <= LastPort)
221+
// Low nibble = pin number
222+
#define CH_PORT(X) (((uint32_t)(X) >> 5) & 0x7)
223+
#define CH_PIN(X) ((uint32_t)(X) & 0x1F)
224+
225+
// Check PinName is valid: FirstPort <= PortName <= LastPort
226+
// As FirstPort is equal to 0 and CH_PORT cast as an unsigned
227+
// (CH_PORT(X) >= FirstPort) is always true
228+
//#define CH_VALID_PINNAME(X) ((CH_PORT(X) >= FirstPort) && (CH_PORT(X) <= LastPort))
229+
#define CH_VALID_PINNAME(X) (CH_PORT(X) <= LastPort)
230+
#define CH_GPIO_PIN(X) ((uint32_t)(1<<CH_PIN(X)))
231+
232+
#endif
233+
216234
#ifdef __cplusplus
217235
}
218236
#endif

Diff for: cores/arduino/ch32/PortNames.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232

3333
GPIO_TypeDef *GPIOPort[MAX_NB_PORT] = {
3434
GPIOA
35-
#if defined PGIOB_BASE
35+
#if defined GPIOB_BASE
3636
, GPIOB
3737
#endif
3838
#if defined GPIOC_BASE

0 commit comments

Comments
 (0)