GD32VW553-IOT V2 测评和移植

发布于:2025-09-08 ⋅ 阅读:(20) ⋅ 点赞:(0)

GD32VW553-IOT V2 介绍

  1. 前不久在ICeasy商城上面申请了GD32VW553-IOT的开发板, 经过一段时间的使用和开发, 发现了一些使用过程的痛点, 比如串口ISP更新固件不方便, 刚开始需要手动焊接电阻以及跳线, 这些都给开发带来了一定的难度。

  2. 没想到萤火工场的产品更新速度很快, 就在V1使用没多久, 大概也就一周左右时间, 工作人员就联系我说GD32VW553-IOT V2开发板已经发布了, 让我申请一块试用一下, 于是乎我又申请了一块GD32VW553-IOT V2开发板。

  3. 其实在写下这篇文章的时候, 已经把玩了一周左右的时间, 但是平时工作比较忙, 前面的时间只做了和V1的对比, 以及将V1的部分程序移植到V2上, 程序移植部分还是基于Cmake+vscode这套从官方SDK剥离出来的。知道今天才有时间把测评发布出来, 感谢ICeasy和萤火工场让我有机会试用这款开发板。

  4. 作为一款基于RISC-V架构的物联网开发板, GD32VW553-IOT V2在功能上有显著提升。本文将对GD32VW553-IOT V2进行全面评测, 包括其硬件规格、性能表现、易用性以及适用场景等方面, 以帮助开发者更好地了解这款开发板的优势和潜力。

GD32VW553-IOT V2 测评

1. 看一下实物图和系统框图

#figure(
image("/resources/v2pic/实物图.png", width:15cm),
caption: "实物图"
)

#figure(
image("/resources/v2pic/系统框图.png", width:15cm),
caption: "系统框图"
)

  1. 接口定义和原理图
    #figure(
image("/resources/v2pic/原理图.png", width:18cm),
caption: "原理图"
)

#figure(
image("/resources/v2pic/接口定义.png", width:18cm),
caption: "接口定义"
)

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灯会快速闪烁

#figure(
image("/resources/v2pic/代码修改的部分.png", width:18cm),
caption: "代码修改的部分"
)

#figure(
image("/resources/v2pic/log.png", width:auto),
caption: "log信息"
)


网站公告

今日签到

点亮在社区的每一天
去签到