一、硬件介绍
1、产品特点
萤火工场基于兆易创新GD32VW553(GD32VW553HMQ7)无线双模MCU研发、RISC-V内核的32位MCU的开源硬件
GD32VW553系列MCU采用了全新的开源指令集架构RISC-V处理器内核,主频可达160MHz。集成了高达4MB Flash及320KB SRAM,另有32KB可配置指令高速缓存(I-Cache),大幅提升了CPU处理效率,支持2.4GHz Wi-Fi 6及BLE5.2无线连接标准;
性能参数
| 功能 | 参数 | 
|---|---|
| FLASH(KB) | 4096 | 
| SRAM(KB) | 320 | 
| 时钟 | ——————————— | 
| General Timer(16-bit) | 2 | 
| General Timer(32-bit) | 2 | 
| Advanced Timer(16-bit) | 1 | 
| Basic Timer(16-bit) | 1 | 
| SysTick(64-bit) | 1 | 
| Watchdog | 2 | 
| RTC | 1 | 
| 接口 | ——————————— | 
| USART | 1 | 
| UART | 2 | 
| I2C | 2 | 
| SPI | 1 | 
| QSPI | 1 | 
| Wi-Fi 6 | 1 | 
| BLE 5.2 | 1 | 
| 12bit ADC Units(Channels) | 1(9) | 
2、硬件升级优化
经过一年,对比上一代,硬件布局升级,进行了系统性优化,更加的方便好用了;
Type-C 口升级: 集成串口功能, 简化调试与程序下载流程, 提升开发便捷性;
新增开关: 增设用户可自定义按键及指示灯, 拓展交互控制与状态显示功能;
板面布局优化: 背面增加引脚丝印, 正面仅保留关键器件丝印, 布局清晰及信息聚焦;
FLASH 焊接位: 移至背面, 减少焊接风险, 增加开源二次开发的灵活性;
BOOT 开关优化: 升级为拔码式设计, 简化操作逻辑, 提升切换效率;
稳固性增强: 板厚增至 1mm, 提升了整体结构强度与抗变形能力 ;
实物如下:
GD32VW55x系列 支持 cJTAG 和 JTAG,不支持 SWD 的调试接口
需使用GDLink / JLink 调试器

3、功能引脚示意图 / 原理图
板载LED灯
LED1:电源指示灯 🔴USR_LED:PB2 🔴
BOOT选择 (SW1切换)
BOOT0:PC8BOOT1:PB1
按键
KEY1:复位按钮KEY2:PB11 (USR_KEY)

引脚定义
板载Type-C串口功能: PB15 / PA8 (UART1_TX / RX)
USART0(PB15 和 PA8), UART1(PA4 和 PA5),UART2(PA6 和 PA7)
| 引脚 | 复用功能 | 
|---|---|
| PC8(BOOT0) | TIMER2_CH2, I2C0_SDA, I2C1_SDA, USART0_TX, UART1_TX | 
| PB0 | TIMER0_CH1_ON, TIMER0_CH0, TIMER0_CH2, UART1_TX, I2C0_SCL, TIMER2_ETI, TIMER16_CH0, UART2_CTS, TIMER0_BRKIN 附加功能:ADC_IN8 | 
| PA9 | SPI_MOSI, TIMER0_CH1, QSPI_SCK, USART0_TX, TIMER15_CH0_ON | 
| PA10 | SPI_MISO, TIMER0_CH2, QSPI_CSN, TIMER16_CH0, USART0_RX | 
| PA11 | SPI_SCK, TIMER0_CH3, QSPI_IO0, TIMER16_BRKIN, TIMER1_CH3 | 
| PA12(WKUP3) | TIMER0_ETI, TIMER0_CH3, QSPI_IO1, SPI_NSS, USART0_CK, TIMER1_CH2, TIMER16_CH0_ON | 
| PB13 | TIMER0_CH0_ON, TIMER1_CH3, I2C1_SDA, TIMER15_CH0 | 
| PB12 | TIMER0_BRKIN, TIMER0_CH3, TIMER1_CH2, I2C1_SCL | 
| PB4(NJTRST) | TIMER1_CH0, TIMER1_ETI, QSPI_IO3, USART0_TX, UART1_TX | 
| PB3(JTDO) | TIMER1_CH1, QSPI_IO2, USART0_RX, UART1_RX, TIMER15_BRKIN | 
| PA15(JTDI) | TIMER1_CH0, TIMER1_ETI, I2C0_SCL, I2C1_SCL, USART0_RX, UART1_RX 附加功能:ADC_IN8 | 
| PA14(JTCK) | I2C1_SMBA, I2C1_SDA, USART0_RTS, UART1_RTS | 
| PA13(JTMS) | I2C0_SMBA, I2C1_SCL, USART0_CTS, UART1_CTS | 
| PB15(UART1_TX) | RTC_REFIN, TIMER0_CH2_ON, TIMER2_CH0, I2C0_SCL, I2C1_SCL, USART0_TX, IFRP_OUT | 
| PA8(UART1_RX) | CK_OUT0, TIMER0_CH0, USART0_RX, I2C0_SDA, I2C1_SDA, USART0_CK, TIMER15_CH0, RTC_OUT, TIMER0_CH2_ON | 
| PA7(WAKEUP2) | I2C1_SDA, TIMER0_CH0_ON, TIMER2_CH1, QSPI_IO1, SPI_NSS, SPI_MOSI, TIMER0_CH1_ON, UART2_RX, TIMER1_CH2 附加功能:ADC_IN7 | 
| PA6 | TIMER2_CH0, QSPI_IO0, I2C1_SCL, SPI_MISO, SPI_SCK, TIMER0_CH1, TIMER1_CH1, UART2_TX 附加功能:ADC_IN6 | 
| PA5 | UART1_RX, TIMER2_ETI, QSPI_CSN, SPI_MISO, SPI_SCK, TIMER0_CH1_ON 附加功能:ADC_IN5 | 
| PA4 | UART1_TX, SPI_MOSI, QSPI_SCK, SPI_NSS, TIMER0_CH1 附加功能:ADC_IN4 | 
| PA3 | USART0_RTS, TIMER1_CH3, I2C0_SDA, SPI_NSS, TIMER0_CH0_ON, UART1_RX, RTC_OUT 附加功能:ADC_IN3 | 
| PA2 | USART0_CTS, TIMER1_CH2, I2C0_SCL, SPI_SCK, TIMER0_CH0, UART1_TX 附加功能:ADC_IN2 | 
| PA1 | USART0_RX, TIMER1_CH1, SPI_MISO, UART1_RTS | 
| PA0(WAKEUP0) | USART0_TX, TIMER1_CH0, TIMER1_ETI, SPI_MOSI, UART1_CTS, TIMER0_ETI 附加功能:ADC_IN0, RTC_TAMP1 | 
| PB1 | TIMER0_CH2_ON, TIMER0_CH0_ON, TIMER2_CH2, UART1_RX, I2C0_SDA, TIMER16_CH0_ON, UART2_RTS 附加功能:BOOT1 | 
BOOT 引导模式配置
启动时,使用 BOOT0 和 BOOT1 引脚选择引导存储器地址
选择从 ROM 启动,FLASH 启动或者 SRAM 启动
| BOOT0 | BOOT1 | 引导地址 | 引导区域 | 
|---|---|---|---|
| 0 | - | 0x08000000 | SIP Flash | 
| 0 | - | 0x0BF46000 | secure boot | 
| 1 | 0 | 0x0BF40000 | Bootloader / ROM | 
| 1 | 1 | 0x20000000 | SRAM | 
| 1 | - | 0x0BF40000 | Bootloader / ROM | 
主要原理图:

系统框图

二、环境搭建
开发环境主要有【GD32 Embedded Builder】、【Visual Studio Code】等;
在此,通过使用【Visual Studio Code】完成开发;
VS Code 配合 EIDE 插件进行 MCU 的开发
1、Visual Studio Code下载

2、工具下载
固件库
包含Demo例程等
烧录工具
串口烧录
3、VS Code 环境配置
1、安装插件

2、创建工程项目
导入下载好的文件,以LED_Demo为例:
...\GD32VW55x_Demo_Suites_V1.4.0\GD32VW553H_EVAL_Demo_Suites\Projects\01_GPIO_Running_LED\eclipse\.cproject

3、安装工具链(RISCV工具链)

4、工具配置
构建器选项设置
修改为与下方对应;

附加选项添加-nostartfiles
使用启动代码 start.S

链接脚本路径设置
将显示的相对路径位置复制到上方:../../../../GD32VW55x_Firmware_Library/RISCV/env_Eclipse/GD32VW553xM.lds

三、代码编写
实现效果:板载的LED灯按500ms的间隔闪烁(USR_LED:PB2 🔴)
main.c
#include "gd32vw55x.h"
#include "systick.h"
#include <stdio.h>
int main(void)
{
    systick_config();
    /* enable the LED clock */
    rcu_periph_clock_enable(RCU_GPIOB);
    /* configure LED GPIO port */
    gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_2);
    /* reset LED GPIO pin */
    gpio_bit_reset(GPIOB, GPIO_PIN_2);
    while (1)
    {
        gpio_bit_set(GPIOB, GPIO_PIN_2);
        delay_1ms(500);
        gpio_bit_reset(GPIOB, GPIO_PIN_2);
        delay_1ms(500);
    }
}
四、程序编译
点击左上方的构建,下方窗口显示编译完成的 .hex 文件路径

五、程序烧录
1、用Type-C数据线连接开发板至电脑上;
2、打开烧录工具GD32AllInOneProgrammer.exe
3、根据图示Type-C口向上,将BOOT0接VCC (向上),BOOT1接GND (向下)
烧录完成后,需恢复(都向下)

4、连接开发板,按照图示,导入编译好的.hex文件后下载;

六、演示效果
板载的LED灯以500ms的间隔闪烁


