萤火工场 GD32VW553-IOT开发板 新手从零到一全记录
1. 开发板及MCU简介
GD32VW553-IOT开发板是中电港(CECport)萤火工场(Firefly Workshop)基于兆易创新(GigaDevice)GD32VW55x系列MCU设计的一块开源硬件,主控采用GD32VW553HMQ7。
MCU简介
GD32VW55x 系列器件是基于 Nuclei(芯来) N307 处理器的 32 位通用微控制器,其中 N307 处理器是基于 RSIC-V 架构指令集开发而来,以下简称 RISC-V 处理器。RISC-V 处理器包括两条 AHB总线分别称为 I-Cache 总线和系统总线。RISC-V 处理器的所有存储访问,根据不同的目的和目标存储空间,都会在 AHB 总线上执行。存储器的组织采用了哈佛结构,预先定义的存储器映射和高达 4 GB 的存储空间,充分保证了系统的灵活性和可扩展性。
GD32VW553xx 是一款高度集成的 2.4GHz Wi-Fi 和 BLE 片上系统 (SoC),包含一个 RISC-V 处理器、一个单流 IEEE 802.11b/g/n/ax MAC/基带/无线电、一个功率放大器 (PA) 和一个接收低噪声放大器 (LNA)。它是一款优化的 SoC,专为各种物联网 (IoT) 应用的智能设备而设计。
GD32VW553xx 器件集成了 RISC-V 32 位处理器内核,工作频率为 160 MHz,以获得最高效率。它提供高达 4096 KB 的片上 Flash 存储器和 320KB (288 KB + 32KB 共享) 的 SRAM 存储器。大量增强型 I/O 和外设连接到两个 APB 总线。该器件提供一个 12 位 ADC、多达四个通用 16 位定时器、一个基本定时器、一个 PWM 高级定时器,以及标准和高级通信接口:一个 SPI、两个 I2C、一个 USART、两个 UART、一个无线接口 (BLE / Wi-Fi)。还包括额外的外设,如加密加速单元 (CAU)、哈希加速单元 (HAU)、公钥加密加速单元 (PKCAU) 和四线 SPI 接口 (QSPI)。
该器件的工作电压为 1.8 至 3.6 V,6 级器件的工作温度范围为 -40 至 +85 °C,7 级器件的工作温度范围为 -40 至 +105 °C。多种省电模式提供了最大的灵活性,可以在唤醒延迟和功耗之间进行优化,这在低功耗应用中尤其重要。
上述特性使 GD32VW553xx 器件适用于广泛的应用,尤其是在工业控制、智能家居控制系统、用户界面、电源监控和报警系统、消费和手持设备、游戏和 GPS、电动自行车、物联网等领域。
开发板简介
开发板上设有一枚Reset复位按键;外部供电接口采用Type-C接口,但是需要注意,该接口仅可实现供电功能,并无数据传输功能;板上有一个红色LED灯,无法通过程序控制实现免插接外部元件点灯,为DC供电信号灯;开发板射频部分无屏蔽罩,板载天线,同时提供有IPEX接口,支持外接天线;开发板上有两组跳线帽,通过不同组合实现不同功能;MCU大部分接口通过邮票孔引出,部分接口以触点形式引出。
开发板结构图
原理图
性能参数
开发板接口定义
2. 开发板实物
3. 实验材料准备
1. GD32VW553-IOT开发板
2. USB-A/Type-C to Type-C 数据线一根
3. USB to TTL 模块
4. 面包板
5. 公头<-->母头 杜邦线若干
6. 公头<-->公头 杜邦线若干
7. LED 插接灯珠若干
8. 金属镊子(可选)
9. Windows 电脑一台
开发板默认未焊接插针,但已提供,需自行焊接,焊接所需材料及过程省略,仅说明注意事项,开发板提供有JTAG/SWD调试接口,以触点形式引出,如需使用,请在焊接插针前先焊接连线,推荐焊接使用线径AWG24。焊接插针时需要注意射频屏蔽罩区域的焊盘与邮票孔焊盘间距很小,避免连锡短路,上电前请先用万用表测试是否存在短路。
4. 软件、资料下载
文档手册
1. GD32VW553-IOT RISC-V 开源硬件 规格书
4. GD32VW553xx Datasheet 数据手册(官方仅英文)
5. AN154 GD32VW553 快速开发指南 (用于指导用户对开发板使用和软件工程搭建)
6. AN092 GD32 MCU GPIO结构与使用注意事项 (主要介绍了GPIO的功能配置、内部结构以及在不同场景使用时的注意事项)
7. AN158 GD32VW553 Wi-Fi 开发指南 (主要用于指导用户熟悉SDK并使用并使用API开发自己的应用程序)
8. AN152 GD32VW553 BLE开发指南 (主要用于指导用户对蓝牙函数接口使用)
9. AN153 GD32VW553 基本指令用户指南 (主要用于指导用户对wifi和ble基本指令使用)
10. AN151 GD32VW553 AT指令用户指南 (主要用于指导用户对AT指令使用)
软件工具
1. GD32 Embedded Builder (GD官方集成开发环境,基于Eclipse定制)
2. SEGGER Embedded Studio for Arm and RISC-V (商业开发工具,新手友好)
3. GD32 All-In-One Programmer (GD32 MCU 官方编程工具)
4. ATK_XCom (串口调试工具,可选)
5. Nuclei RISC-V Embedded Toolchain(Baremetal/RTOS + Newlibc) (编译工具链,使用GD官方集成开发环境时使用,可选下载)
6. riscv-nuclei-2022.04-for-segger (芯来编译工具链,使用Segger Embeded Studio 进行Wi-Fi & BLE开发时使用,可选下载)
SDK与固件库
2. GD32VW55x Firmware Library (GD32VW55x标准固件库。包括程序、数据结构和宏定义,覆盖所有集成外设的特征,并包括了全部相关驱动和示例程序)
3. GD32VW553K-START Demo Suites (GD32VW553K-START评估板用于测评Wi-Fi和BLE各项无线性能。配套资料包含模组参考设计、测试固件、测试工具及使用指南) (可选下载)
4. GD32VW553 Demo Suites (GD32VW553系列开发板套件。支持GD32VW553H-EVAL板)(外设参考使用示例)
* 点击此处获取更多资料
5. 开发环境配置
GD32 Embedded Builder
官方集成开发工具基于Eclipse定制,免安装,将下载到的压缩包解压后移动到合适位置(目录路径不能包含中文),双击 path\EmbeddedBuilder_v1.4.7.26843\EmbeddedBuilder\Embedded Builder.exe 即可启动开发工具。
在启动前可以直接将上文的编译工具链下载到本地,解压后移动到 path\EmbeddedBuilder_v1.4.7.26843\Tools 目录
“path”为自行选择的开发工具的保存路径
SEGGER Embedded Studio
点击上文提供的下载链接,下载并安装软件,接受非商业许可后即可免费使用。
依次点击软件上方菜单栏 tools -> Package manager,在打开的新窗口中下滑找到 GigaDevice (或在左上角搜索框搜索“GD32VW55x”),找到最后一行,点击右侧“Not Installed”,之后开始下载,完成后会显示绿色“Installed”。
如果由于网络原因无法下载安装,击此处点下载组件包,离线安装,解压文件后,确保文件夹内存在 “GD32VW55x - 1.00.emPackage”文件,回到Segger Embeded Studio,依次点击窗口顶部菜单栏 tools -> Manually Install Package,在弹出的窗口中选择“GD32VW55x - 1.00.emPackage”文件,
6. 导入工程项目文件并编译固件
下载并解压上文的GD32VW55x_Demo_Suites,依次点击 GD32VW55x_Demo_Suites_V1.2.0 -> GD32VW553H_EVAL_Demo_Suites -> Projects -> 01_GPIO_Runing_LED
如使用GD官方集成开发工具GD Embeded Builder,请选择Eclipse;如使用Segger Embeded Studio,请选择SES
使用GD Embeded Builder
打开GD Embeded Builder,在顶部菜单栏依次点击 file -> Open Projects from File System... ,在弹出的新窗口中点击 Directory... 选择上述的eclipse文件夹后点击 finish (如下图所示)
点击左侧Project Explorer -> GD32VW553H_EVAL -> Application -> main.c 即可看到主程序入口,在主函数中可以看到配置LED的接口为PA4、PA5、PA6,但是在参考 GD32VW553HMQ7_DataSheel 数据手册中3.4 boot mode 章节中(或在GD32VW55x_User_Manual用户手册的1.1章节中),
本次点灯将采用PA6、PA7作为串行工作接口,示例代码中将PA6作为GPIO与串行通讯冲突,因此可以将IO接口修改为PA3、PA4、PA5,修改结果如下:
int main(void)
{
systick_config();
/* enable the LED clock */
rcu_periph_clock_enable(RCU_GPIOA);
/* configure LED GPIO port */
gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5);
/* reset LED GPIO pin */
gpio_bit_reset(GPIOA, GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5);
while(1) {
/* turn on LED1, turn off LED3 */
gpio_bit_set(GPIOA, GPIO_PIN_3);
gpio_bit_reset(GPIOA, GPIO_PIN_5);
delay_1ms(500);
/* turn on LED2, turn off LED1 */
gpio_bit_set(GPIOA, GPIO_PIN_4);
gpio_bit_reset(GPIOA, GPIO_PIN_3);
delay_1ms(500);
/* turn on LED3, turn off LED2 */
gpio_bit_set(GPIOA, GPIO_PIN_5);
gpio_bit_reset(GPIOA, GPIO_PIN_4);
delay_1ms(500);
}
}
代码修改完成并保存后, 在左侧项目浏览器窗口中的项目名上鼠标右键,在弹出菜单中选择 Build Project,待控制台出现如下有图中的内容时,表示固件已编译完成,固件程序保存在 GD32VW55x_Demo_Suites_V1.2.0 -> GD32VW553H_EVAL_Demo_Suites -> Projects -> 01_GPIO_Runing_LED -> eclipse -> GD32VW553xM 目录下 GD32VW553H_EVAL.bin,即可参阅后文将该文件烧录至开发板
使用Segger Embeded Studio
打开软件后,软件会弹出商业许可的提示,直接点击接受,在软件上方菜单栏中点击 File -> Open Solution...,弹出窗口中选择 GD32VW55x_Demo_Suites_V1.2.0 -> GD32VW553H_EVAL_Demo_Suites -> Projects -> 01_GPIO_Runing_LED -> SES -> GD32VW553H_EVAL.emProject 文件,或点击软件首页 Open existing,选择上述文件
打开项目的main文件,修改代码为上文示例代码,保存。
项目没有配置默认的程序编译输出文件格式,需要手动指定,指定方式为:在左侧项目名上右键选择 Options... -> Linker -> Additional Output Format,将输出格式选择为bin,点击下方 OK 即可
修改输出格式后,即可进行编译,在左侧项目名上右键选择 Build,或点击窗口上方菜单栏中 Build -> GD32VW55x,或点击编辑器右上角如下图标,或直接按键盘上F7
当Output窗口出现 Completed 即表明编译成功,固件文件保存在GD32VW55x_Demo_Suites_V1.2.0 -> GD32VW553H_EVAL_Demo_Suites -> Projects -> 01_GPIO_Runing_LED -> SES -> Output -> Release -> Exe 目录下 GD32VW55x.bin,此文件可用于后文程序烧录
7. 烧录程序至开发板
开发板支持JTAG/SWD烧录调试,同时也支持通过串口烧录固件,但是由于自己没有J-Link工具,所以后文采用串口烧录方式下载程序固件到开发板
首先下载并解压上文的GD32 All-In-One Programmer 官方烧录工具,打开烧录工具,将USB to TTL工具插入电脑USB接口,(自己使用的为常见的CH340G模块),
在查阅GD32VW55x的数据手册或用户手册中引导配置章节的说明(数据手册3.4章节,用户手册1.1章节),并结合开发板原理图可知,若要使MCU进入Bootloader模式,需要将Boot0配置为高电平,Boot1为低电平,但由于开发板实物中的R4位置的1K电阻并未焊接,因此还需要手动拉高电平,方法为短接3v3与PC8,
Boot0和Boot1跳线帽连接方式如下图,上方的一组跳线为Boot1,下方的为Boot0,需注意,在烧录完成后需要将boot0置于boot1相同位置
按上面右图连接开发板与TTL模块,为避免VCC接线错误,可以仅连接RX和TX两根线,PA6 -> RX,PA7 -> TX,供电使用开发板的Type-C接口供电,
操作步骤:
Type-C接口上电,用金属镊子或杜邦跳线短接3v3与PC8(如上图),按一次复位键,保持短接状态1~3s后取消短接,点击烧录软件上左上方的的Connect 按钮,连接上MCU后点击Brower选择上文编译完成的固件,之后点击Download下载固件,
当下方进度条为100%时,点击Disconnect,断开TTL模块与开发板的连线,将Boot0跳线帽复位,
将三个LED灯珠的正极连接开发板PA3、PA4、PA5,将负极连接开发板GND,此时按一次开发板上的复位键,即可看到流水灯效果
至此,开发板点灯的完整流程结束,效果如下
使用中的问题与建议总结
1. 开发板引脚定义在PCB上无丝印(背面分明是有足够的空间)
2. 电路中缺少元件,致使部分功能形同虚设,如因R4位置的1K电阻缺失,使Boot0跳线帽失效,还需要手动拉高电平
3. 针脚焊盘距离模组屏蔽壳焊盘太近,对于焊接新手极不友好,十分容易连锡短路
4. 部分接口以触点形式引出实属败笔,特别使JTAG接口对应的引脚,还需要手动飞线焊接,建议直接设置为通孔,方便焊接排针
5. Type-C接口仅能供电,不能传输数据,且板上无串口芯片,建议后续版本提供板载串口芯片,实现一根线即可烧录固件
6. 板载LED仅为电源指示灯,无可连接至GPIO用于测试的LED灯,建议后续版本增加板载测试用的LED灯
7. 跳线帽太小,太难用,建议换成大点的
8. 在Segger Embeded Studio开发环境下不开放wifi/BLE开发所需的工具链下载,还需要联系销售索要
后记:
视频中使用的JLink-OB-RA4M2为立创开源硬件平台上的开源硬件,点击此处查看,
最新版本为1.5(typc-c接口),1.4(USB接口)
点击此处查看自己的J-Link-OB是否支持调试GD32VW553HMQ7,查看链接文章中Model overview表格,看看自己手上说用的J-Link-OB所用的主控支持的架构
Jlink-v9,包括之前的版本,不支持调试该MCU,v10版本默认不支持,但是可以通过刷破解固件实现支持
Segger中的芯来工具链来源 https://www.iceasy.com/review/1894293783702659073