0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

兆易创新GD32VW553上的UART实践 | 技术集结

RT-Thread官方账号 2026-04-06 18:08 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

兆易创新GD32VW553H-EVAL开发实践指南》电子书正式上线! 本书是RT-Thread工程师团队与兆易创新联合推出的评测活动产出,系统梳理了UART、WDG、I2CTIMER、PWM、SPI等基础外设,到Wi-Fi无线通信的完整驱动开发实践,手把手带你完成从硬件调试到无线应用部署的完整流程。

本文是《GD32VW553上的UART实践》。

目录


开发环境搭建


VSCode软件调试环境搭建


芯片资源 - Uart


UART功能调试


Git链接


开发者贡献名单

1 开发环境搭建

1.1 软件下载链接

RT-Thread 环境:https://github.com/RT-Thread/rt-thread/tree/master/bsp/gd32/risc-v/gd32vw553h-eval

方案一:可以使用git工具直接拉取RT-Thread整包:git clone https://github.com/RT-Thread/rt-thread.git

方案二:可以直接从git界面下载zip整包,本地解压;

8463128c-31a0-11f1-ab55-92fbcf53809c.jpg

RT-Thread ENV工具:https://www.rt-thread.org/download.html#download-rt-thread-env-tool

8472970c-31a0-11f1-ab55-92fbcf53809c.jpg

编译器工具链:https://www.gigadevice.com.cn/product/mcu/mcus-product-selector/gd32vw553hmq6

847c9e46-31a0-11f1-ab55-92fbcf53809c.jpg

固件烧录工具GD32AllInOneProgrammer:https://www.gd32mcu.com/cn/download?kw=GD32+All-In-One+Programmer&lan=cn

848b59e0-31a0-11f1-ab55-92fbcf53809c.jpg

1.2 环境配置

1.2.1 RT-Thread ENV工具配置

将1.1->第3小节:链接中下载的文件拷贝至工作文件夹(此处为笔者习惯,仅供参考,可跳过);

8496efa8-31a0-11f1-ab55-92fbcf53809c.jpg

打开路径中的exe文件运行RT-Thread ENV工具,此时该文件会自动配置Windows下的环境变量;

84a29344-31a0-11f1-ab55-92fbcf53809c.jpg

此处需要注意输出文件中包含的环境变量的设置,当我们解压并使用后,再次移动软件位置时,记得将环境变量同步更改,否则可能会报错,无法找到pkgs指令;若是不会修改环境变量,最简单的解决方案就是删除当前的ENV整包,然后在需要安装的位置重新解压,并运行即可;

当软件环境配置完成后,分别运行pkgs —upgrade、pkgs —update,此时观察仓库可以发现仓库中增加了packages文件夹,里面包含了gd32的lib库;

84acb5ea-31a0-11f1-ab55-92fbcf53809c.jpg84bbcada-31a0-11f1-ab55-92fbcf53809c.jpg

1.2.2 GD32编译链环境搭建

对于任意一款芯片的编译肯定都需要适配交叉编译工具链,一般这部分厂商都有提供,本次需要将交叉编译工具集成到RT-Thread的环境中;

由于在第一章1.1已经下载好了编译器工具链,首先需要选择一个自己想要放置编译链的地方解压工具链;

然后在RT ENV环境下运行下面命令,注意:PTAH=后面跟着的路径需要改为自己的路径,下方指令不可直接复制粘贴使用!下方指令不可直接复制粘贴使用!下方指令不可直接复制粘贴使用!

setRTT_EXEC_PATH=E:\GD32\GD32VW5\GD32EmbeddedBuilder_v1.5.4_Rel\Tools\RISC-V Embedded GCC\8.2.0-2.2-20190521-0004\bin

运行完成后,在gd32vw553h-eval的目录下直接执行scons -j128编译即可;

记得一定要在\rt-thread-master\bsp\gd32\risc-v\gd32vw553h-eval,这个目录下执行,其中j后面跟着的数字是指使用几个核进行编译,可根据自己的电脑实际性能调整;

编译完成后既可以看到文件夹中多了rtthread.bin文件,该文件就是后面需要下载到板卡的二进制文件;

1.3 固件烧录(直接按照git中完成)

固件烧录需要使用上述的第一章1.1中下载的GD32AllInOneProgrammer软件,烧录说明位于烧录软件下的Doc文件夹,或在线搜索使用方法,下述是烧录的示例:

84c92950-31a0-11f1-ab55-92fbcf53809c.jpg

需要注意的是使用上述软件烧录时需要将boot1置为高电平,烧录结束后重新设置为低电平,手动调整板载的boot跳线帽

运行结果:烧录完毕后,使用串口连接自己的串口终端软件,即可通过串口与开发板交互;

1.4. 测评结论

GD32这款板子在环境搭建上相对还是比较简单的,基本可以无脑跟着Git中的指引一步步完成开发环境的搭建,无需开发者到处寻找资料;同时搭建开发环境所需的软件包也比较集中,且容易获取;

2 VSCode软件调试环境搭建

2.1 调试环境搭建

配置VSCode调试环境,首先在第一章中已经下载好了《GD32EmbeddedBuilder》,调试环境配置时需要用到该文件夹中的Tools;

84d2fbec-31a0-11f1-ab55-92fbcf53809c.jpg

其次在BSP根目录下执行下述命令,生成VSCode工程所需文件。

scons —target=vs

在VSCode安装扩展插件Cortex-Debug,版本v1.4.4。

完成上述工作后,点击运行和调试选项,创建一个launch.json配置文件,配置文件示例如下:

{"version":"0.2.0","configurations":[ { "name":"Cortex Debug", "cwd":"${workspaceFolder}", "executable":"${workspaceFolder}/rtthread.elf", "request":"launch", "type":"cortex-debug", "servertype":"openocd", "serverpath":"E:/GD32/GD32VW5/Tools/GD32EmbeddedBuilder_v1.5.2.30854/Tools/OpenOCD/xpack-openocd-0.11.0-3/bin/openocd", "configFiles": [ "${workspaceFolder}/openocd_gdlink.cfg" ], "runToEntryPoint":"main", "showDevDebugOutput":"raw", "toolchainPrefix":"E:/GD32/GD32VW5/Tools/GD32EmbeddedBuilder_v1.5.2.30854/Tools/RISC-V Embedded GCC/8.2.0-2.2-20190521-0004/bin/riscv-none-embed" }]}

这里需要注意如果你的${workspaceFolder}工作空间不是当前的路径,可以自行将${workspaceFolder}相关的路径改为自己launch.json的绝对路径/相对路径使用;

上述文件中的部分字段需要根据用户环境进行修改,格式需与示例一致:

“serverpath”:该字段需要改为用户的openocd所在路径,openocd工具位于GD32EmbeddedBuilder工具包中。

“toolchainPrefix”:该字段需修改为用户的工具链所在路径,工具链位于GD32EmbeddedBuilder工具包中。

完成上述配置后即可点击调试选项进行调试,调试时boot管脚均置为低电平即可,调试时同样会进行固件下载。

2.2 调试环境测试

在工程界面点击Cortex Debug,即可进入调节界面;

84ddb2f8-31a0-11f1-ab55-92fbcf53809c.jpg

在调试界面可以查看变量值、暂停后可以查看当前任务的调用栈情况,同时也支持在vscode界面进行断点操作、单步调试、Reset等;

84ec3760-31a0-11f1-ab55-92fbcf53809c.jpg

2.3 测评结论

整体来说调试环境搭建非常简单,但是调试界面相对于keil、esp-idf、劳德巴赫等其他环境较为简陋,不过功能完全足够开发者使用;

3 芯片资源 - Uart

芯片采用RISC-V架构处理器,适用于低能耗、小面积的嵌入式应用,具有简单的动态分支预测、指令预取缓冲区和I-cache等多种高效微架构特点。

3.1 Uart分布

84f6a254-31a0-11f1-ab55-92fbcf53809c.jpg

根据芯片架构示意图可以看到,芯片共有三路串口,其中UART2挂载在APB2总线上,USART0和UART1挂载在APB1上;这里需要注意我们在使用不同Uart时,需要初始化对应的总线时钟;

3.2 存储

RISC-V处理器采用哈弗架构,可以使用单独的总线来提取指令和加载/存储数据。程序存储器,数据存储器,寄存器和I/O端口组织在同一线性4GB(32位芯片)地址空间内。具体的存储器映射表可以查看《GD32VW55x_用户手册_Rev1.4.pdf》第1.3节;

Uart地址空间

USART0:0x4000 4800 - 0x4000 4BFF

UART1:0x4000 4400 - 0x4000 47FF

UART2:0x4001 1000 - 0x4001 13FF

Ram段

85011216-31a0-11f1-ab55-92fbcf53809c.jpg

代码段

850c7fde-31a0-11f1-ab55-92fbcf53809c.jpg851ba4e6-31a0-11f1-ab55-92fbcf53809c.jpg

其中我们主要关注和使用较多的就是主存储0x0800 0000 - 0x083F FFFF和0x0BF4 0000 - 0x0BF7 FFFF ROM区间;

根据芯片的引导配置章节可以看出,该芯片将Bootload、secure boot分别放在了ROM段0x0BF40000、0x0BF46000作为起始地址,本地代码一般放在了起始地址0x08000000的主存储区;

3.3 USART 模块内部框图

85248a2a-31a0-11f1-ab55-92fbcf53809c.jpg

从模块内部框图可以看出,Uart的读写操作主要都是在读/写缓冲区完成,用户可以通过CPU在串口传输完成后直接读取读缓冲区的内容,或像写缓冲区写入数据,配置控制/状态寄存器及中断完成Uart的读写操作;

从图中同样可以看到该芯片Uart支持DMA直接将缓冲区数据搬入/出;

读写缓冲区分别对应Uart的数据接受/发送寄存器,同时FIFO的控制/状态获取,主要依赖于FIFO控制和状态寄存器;

同时芯片支持硬件流控功能,可通过nCTS和nRTS引脚来实现。通过将USART_CTL2寄存器中RTSEN位置1来使能RTS流控,将USART_CTL2寄存器中CTSEN位置1来使能CTS流控。

8531e832-31a0-11f1-ab55-92fbcf53809c.jpg

GD32vw553 引脚映射关系

853f17aa-31a0-11f1-ab55-92fbcf53809c.jpg

测试阶段暂时将PA2/3作为UART1的收发引脚,PA6/7作为UART2的收发引脚;

4 UART功能调试

4.1 测试环境

Demo中仅使能了UART0一路串口,首先需要测试3路串口是否均可使用,可以在RTT的menuconfig中将UART1/2使能;

使能后会出现宏定义相关的报错,此时需要修改drv_usart.c文件,由于GD32vw55x的另外两路都是UART,drv中写死的USART宏并不适用,临时改为UART1/UART2,重新编译可成功编译;

85496a70-31a0-11f1-ab55-92fbcf53809c.jpg

单步调试查看调用栈,可以发现在程序启动后会首先调用board.c中的rt_hw_board_init,另外在rt_hw_board_init中已经初始化了board.c UART数组中的所有串口,我们可以在后续直接测试UART1/2的功能;

8555d044-31a0-11f1-ab55-92fbcf53809c.jpg

RTT中main其实只是一个Task,并不像裸机开发那样时start.s跳转出的首个函数;

855fde90-31a0-11f1-ab55-92fbcf53809c.jpg

我们可以在main task中调用uart API发送/接收数据;

856d0692-31a0-11f1-ab55-92fbcf53809c.jpg

4.3 Tx/Rx 功能测试结果

由下图可以看到UART1/2均可正常使用,且中断可被正常触发;

857a0590-31a0-11f1-ab55-92fbcf53809c.jpg

依然是上述代码,将Uart2的Tx接入Uart1的Rx,可以看到打印如下:

8582dbb6-31a0-11f1-ab55-92fbcf53809c.jpg

同理可测Uart2的接收功能;

5 Git链接

https://gitee.com/zhang-haitao-1/gd32vw553h-test

6 开发者贡献名单

《兆易创新GD32VW553H-EVAL开发实践指南》包含的内容以及对应的贡献者如下,感谢各位小伙伴的支持与贡献!

858e7ee4-31a0-11f1-ab55-92fbcf53809c.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5209

    文章

    20623

    浏览量

    336754
  • uart
    +关注

    关注

    22

    文章

    1319

    浏览量

    106948
  • 兆易创新
    +关注

    关注

    24

    文章

    726

    浏览量

    84117
  • GD32
    +关注

    关注

    7

    文章

    434

    浏览量

    27599
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于RISC-V的创新GD32VW553系列全新WiFi6 MCU亮相

    基于RISC-V的创新GD32VW553系列全新WiFi 6 MCU亮相 2023年10月17日业界领先的半导体器件供应商
    发表于 10-17 18:31 1652次阅读
    基于RISC-V的<b class='flag-5'>兆</b><b class='flag-5'>易</b><b class='flag-5'>创新</b><b class='flag-5'>GD32VW553</b>系列全新WiFi6 MCU亮相

    创新推出GD32VW553系列Wi-Fi 6 MCU

    业界领先的半导体器件供应商创新GigaDevice(股票代码603986)宣布,正式推出基于RISC-V内核的GD32VW553系列双模无线微控制器。
    的头像 发表于 10-27 08:24 1473次阅读
    <b class='flag-5'>兆</b><b class='flag-5'>易</b><b class='flag-5'>创新</b>推出<b class='flag-5'>GD32VW553</b>系列Wi-Fi 6 MCU

    GD32VW553认证测试指南应用说明

    电子发烧友网站提供《GD32VW553认证测试指南应用说明.pdf》资料免费下载
    发表于 12-14 10:10 0次下载
    <b class='flag-5'>GD32VW553</b>认证测试指南应用说明

    GD32VW553系列的研制射频硬件指南应用说明

    电子发烧友网站提供《GD32VW553系列的研制射频硬件指南应用说明.pdf》资料免费下载
    发表于 12-14 10:13 0次下载
    <b class='flag-5'>GD32VW553</b>系列的研制射频硬件指南应用说明

    GD32VW553 AT命令用户指南

    电子发烧友网站提供《GD32VW553 AT命令用户指南.pdf》资料免费下载
    发表于 12-14 09:53 0次下载
    <b class='flag-5'>GD32VW553</b> AT命令用户指南

    GD32VW553 BLE开发指南应用说明

    电子发烧友网站提供《GD32VW553 BLE开发指南应用说明.pdf》资料免费下载
    发表于 12-14 09:55 0次下载
    <b class='flag-5'>GD32VW553</b> BLE开发指南应用说明

    GD32VW553基本命令用户指南应用说明

    电子发烧友网站提供《GD32VW553基本命令用户指南应用说明.pdf》资料免费下载
    发表于 12-14 09:56 0次下载
    <b class='flag-5'>GD32VW553</b>基本命令用户指南应用说明

    GD32VW553快速开发指南应用说明

    电子发烧友网站提供《GD32VW553快速开发指南应用说明.pdf》资料免费下载
    发表于 12-14 09:58 2次下载
    <b class='flag-5'>GD32VW553</b>快速开发指南应用说明

    AN154 GD32VW553快速开发指南

    电子发烧友网站提供《AN154 GD32VW553快速开发指南.pdf》资料免费下载
    发表于 01-17 15:39 15次下载
    AN154 <b class='flag-5'>GD32VW553</b>快速开发指南

    AN151 GD32VW553 AT指令用户指南

    电子发烧友网站提供《AN151 GD32VW553 AT指令用户指南.pdf》资料免费下载
    发表于 01-17 15:26 1次下载
    AN151 <b class='flag-5'>GD32VW553</b> AT指令用户指南

    AN153 GD32VW553基本指令用户指南

    电子发烧友网站提供《AN153 GD32VW553基本指令用户指南.pdf》资料免费下载
    发表于 01-17 15:22 0次下载
    AN153 <b class='flag-5'>GD32VW553</b>基本指令用户指南

    AN152 GD32VW553 BLE开发指南

    电子发烧友网站提供《AN152 GD32VW553 BLE开发指南.pdf》资料免费下载
    发表于 01-17 15:19 2次下载
    AN152 <b class='flag-5'>GD32VW553</b> BLE开发指南

    尝鲜体验,创新GD32VW553 无线MCU评测活动开启!技术解决方案深度评测,直播预约中 | 社区活动

    创新已对GD32VW553系列MCU进行了RT-Thread的适配。为助力开发者快速上手,社区联合
    的头像 发表于 12-25 14:58 1680次阅读
    尝鲜体验,<b class='flag-5'>兆</b><b class='flag-5'>易</b><b class='flag-5'>创新</b><b class='flag-5'>GD32VW553</b> 无线MCU评测活动开启!<b class='flag-5'>技术</b>解决方案深度评测,直播预约中 | 社区活动

    【直播预告】创新 GD32VW553 系列产品直播解读,重磅来袭! | 问学直播

    创新已基于RT-Thread操作系统,完成对GD32VW553系列芯片的适配!为了让开发者掌握其强大的无线连接能力与开发实战技巧,RT-Thread联合
    的头像 发表于 12-30 16:59 845次阅读
    【直播预告】<b class='flag-5'>兆</b><b class='flag-5'>易</b><b class='flag-5'>创新</b> <b class='flag-5'>GD32VW553</b> 系列产品直播解读,重磅来袭! | 问学直播

    基于 RT-Thread 和创新GD32F527的CAN总线监视器 | 技术集结

    【适配新进展】创新与RT-Thread的适配大家庭又添新成员啦!GD32VW553现已正式完成适配,并在社区开发者的协作下完成了电子书《GD32
    的头像 发表于 03-05 10:04 263次阅读
    基于 RT-Thread 和<b class='flag-5'>兆</b><b class='flag-5'>易</b><b class='flag-5'>创新</b><b class='flag-5'>GD</b>32F527的CAN总线监视器 | <b class='flag-5'>技术</b><b class='flag-5'>集结</b>