GD32VW553-IOT V2 介绍
前不久在ICeasy商城上面申请了GD32VW553-IOT的开发板, 经过一段时间的使用和开发, 发现了一些使用过程的痛点, 比如串口ISP更新固件不方便, 刚开始需要手动焊接电阻以及跳线, 这些都给开发带来了一定的难度。
没想到萤火工场的产品更新速度很快, 就在V1使用没多久, 大概也就一周左右时间, 工作人员就联系我说GD32VW553-IOT V2开发板已经发布了, 让我申请一块试用一下, 于是乎我又申请了一块GD32VW553-IOT V2开发板。
其实在写下这篇文章的时候, 已经把玩了一周左右的时间, 但是平时工作比较忙, 前面的时间只做了和V1的对比, 以及将V1的部分程序移植到V2上, 程序移植部分还是基于Cmake+vscode这套从官方SDK剥离出来的。知道今天才有时间把测评发布出来, 感谢ICeasy和萤火工场让我有机会试用这款开发板。
作为一款基于RISC-V架构的物联网开发板, GD32VW553-IOT V2在功能上有显著提升。本文将对GD32VW553-IOT V2进行全面评测, 包括其硬件规格、性能表现、易用性以及适用场景等方面, 以帮助开发者更好地了解这款开发板的优势和潜力。
GD32VW553-IOT V2 测评
1. 看一下实物图和系统框图
- 接口定义和原理图
2. 升级的地方
- 增加一颗led灯和一个轻触开关 K2, K1是原本就有, 用于复位MCU的
- 增加背面丝印, 方便对照PIN脚
- 增加一颗CH340N芯片, 不用在外接USB转串口模块, 一根USB Type-C就可以供电、下载程序以及串口打印
- Boot模式的切换由跳线帽改为拨码开关, 更加方便, 也不需要焊接电阻了
- PCB黑色看起来更高级一点, 可能考虑到PCB的面积, 去除了屏蔽罩
GD32VW553-IOT V2 移植
移植代码
在之前的测评文章中, 我提到过V1的程序是基于Cmake+vscode这套从官方SDK剥离出来的, 现在V2的程序也是基于这套, 只不过需要做一些修改, 主要是将串口号和对应的PIN修改, 保持和原理图中的一致, 其他的代码基本上不需要修改, 因为第二版提供了一个LED和一个按键, 所以在程序进行修改, 添加这部分的内容。
- Windows 10
- VSCode + Cmake + MinGW + OpenOCD + GDB
- GD32VW553-IOT V2开发板
- USB Type-C数据线
下载步骤
- 连接USB线, 电脑需要安装CH340的驱动, 安装过的可以忽略
- 程序编译, 编译成功后生成bin文件
- 打开All in One Programmer, 选择bin文件, 下载
- 可以看到LED灯点亮
具体代码, 基于的代码是之前测评里面修改好的, 这里就不重复贴出来了, 只贴修改的部分
- 测评链接https://blog.csdn.net/qq_34935373/article/details/151012737?spm=1001.2014.3001.5501
- 代码仓库链接https://github.com/1508912767/gd32vw553_boot
- main.c
// ...省略部分代码...
// #define CONFIG_BYPASS_MBL
#if CONFIG_BOARD == PLATFORM_BOARD_32VW55X_EVAL
#define LOG_UART UART1
#else
#define LOG_UART UART1
#endif
// ...省略部分代码...
/* 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);
gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_25MHZ, GPIO_PIN_2);
GPIO_BC(GPIOB) = GPIO_PIN_2;
/* configure key GPIO port */
gpio_mode_set(GPIOB, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO_PIN_11);
while(1)
{
for (int i = 0; i < 40*1000*1000; i++)
{
__NOP();
}
GPIO_TG(GPIOB) = GPIO_PIN_2;
if(gpio_input_bit_get(GPIOB, GPIO_PIN_11) == RESET)
{
break;
}
}
// ...省略部分代码...
BootFailed:
while(1)
{
// Error indication: fast blink
for (int i = 0; i < 1*1000*1000; i++)
{
__NOP();
}
GPIO_TG(GPIOB) = GPIO_PIN_2;
}
// ...省略部分代码...
实现的功能
- 上电之后会有一些串口打印
- LED灯会每隔一段时间闪烁, 此时速度较慢
- 按下按键K2, LED灯会停止闪烁, 此时LOG有输出, 显示boot跳转app的信息
- 如果boot跳转app失败, LED灯会快速闪烁