[研电赛技术支持] GD32替代STM32全过程记录

[复制链接]
322|36
手机看帖
扫描二维码
随时随地手机跟帖
狗啃模拟|  楼主 | 2021-11-22 23:32 | 显示全部楼层 |阅读模式

读完这一篇文章,你能获得的知识点:

  • GD32与STM32基本区别
  • STM32CubeMX程序修改后如何下载到GD32
  • GD32移植后一些外设的测试

使用特权

评论回复
狗啃模拟|  楼主 | 2021-11-22 23:33 | 显示全部楼层
一、前言
最近半导体行业出现的缺货浪潮,各种芯片价格飙升,像一些常用芯片如STM32F103C8T6,从去年的5块一片涨价到现在的65一片,涨幅17倍!!!在这种情况下,大家纷纷在找一些国产芯片来替代ST的芯片,而在国产中做的比较好的芯片就是兆易创新的GD32芯片了,我最近也本着学习的心态研究了一下GD32快速替换STM32的方式,使用GD32F303VCT6替换STM32F103VCT6,以此为例做一些记录分享给大家

使用特权

评论回复
狗啃模拟|  楼主 | 2021-11-22 23:34 | 显示全部楼层
二、GD32与STM32
什么是GD32
GD32是由北京兆易创新开发的国产32位MCU,基于Arm Cortex- M3/M23/M4内核以及RISC-V内核的32位通用微控制器,与STM32相比,CPU主频更高,内存更多,外设更丰富。其众多产品是以STM32芯片为模板,基于STM32的底层寄存器地址进行正向研发,部分产品可以直接PIN TO PIN替代STM32的芯片,部分型号可以直接以STM32的程序做部分修改后直接烧入进GD32中运行,例如GD32E103、GD32F10x、GD32F30x都是和STM32F10x系列是完全PIN TO PIN兼容的,内部地址寄存器完全兼容,唯一区别只是内核不同,但在使用外设时影响不会很大,下面的文章我也围绕GD32替代STM32F10x系列的芯片展开叙述

使用特权

评论回复
狗啃模拟|  楼主 | 2021-11-22 23:34 | 显示全部楼层
GD32F10x/F30x和STM32F10x资源对比
34288619bb87cbc81c.png

使用特权

评论回复
狗啃模拟|  楼主 | 2021-11-22 23:35 | 显示全部楼层
GD32F10x/F30x与STM32F10x软硬件设计对比
相同点

芯片的型号命名方式相同,而且相同信号的引脚定义基本相同,具体命名规范如下
77042619bb8a2dc36a.png

使用特权

评论回复
狗啃模拟|  楼主 | 2021-11-22 23:36 | 显示全部楼层
函数库文件基本相同:因为GD32正向研发,对于PIN TO PIN的芯片,内部寄存器地址和STM32完全相同,所以STM32的库文件编译后的文件可以直接下载

使用特权

评论回复

评论

shenwushen 2021-11-23 10:07 回复TA
请问一下,我在官网上找到的GD32库函数都只是在寄存器上面封装一层呀,有点不太友好。而stm32的库函数现在都是hal库了,标准库也不用了。你这个GD32库函数哪里找的呀?想找个类似hal库的库函数进行GD32的开发 
狗啃模拟|  楼主 | 2021-11-22 23:37 | 显示全部楼层
编译工具相同如keil、IAR都相同

使用特权

评论回复
狗啃模拟|  楼主 | 2021-11-22 23:38 | 显示全部楼层
不同点

工作电压有所不同,STM32的工作电压在2.0~ 3.6V或1.65~ 3.6V,GD32的工作电压在 2.6~3.6V,工作范围相对要窄。

GD32F303/F103主频比STM32F103主频要高,适合一些更快的计算中

GD32提高了相同工作频率下的代码执行速度,所以GD32的_NOP()时间比STM32更加短,所以不使用定时器做延时时要注意修改

GD32的flash擦除时间要比STM32更长

功耗上GD32的功耗要相对高一点

GD32的BOOT0必须接10K下拉或接GND,ST可悬空,这点很重要。

RC复位电路必须要有,否则MCU可能不能正常工作,ST的有时候可以不要。

GD的swd接口驱动能力比ST弱,可以有如下几种方式解决:
a、线尽可能短一些;
b、降低SWD通讯速率;
c、SWDIO接10k上拉,SWCLK接10k下拉。

GD对时序要求严格,配置外设需要先打开时钟,在进行外设配置,否则可能导致外设无法配置成功;ST的可以先配置在开时钟。

修改外部晶振起振超时时间,不用外部晶振可跳过这步。
原因:GD与ST的启动时间存在差异,为了让GD MCU更准确复位(不修改可能无法复位)。

使用特权

评论回复
狗啃模拟|  楼主 | 2021-11-22 23:38 | 显示全部楼层
三、程序下载方法
在使用GD的标准库开发时,可以使用J-Link、DAP在编译器内可以进行下载程序和在线仿真

在使用STM32的库进行开发时,因为芯片不对应,无法进行仿真,但在程序验证之后可以直接移植到对于芯片PIN TO PIN的GD芯片之中,具体下载方式有通过J-LinkFlash或者GD-Link下载hex,或者跳过FlyMCU经过USB转TTL和串口1连接下载程序,还有一种跳过DFU下载这个我没有尝试过,下面我就具体讲一下J-Link下载和FlyMCU串口下载到GD32 (该下载方法对ST和GD都有效)

使用特权

评论回复
狗啃模拟|  楼主 | 2021-11-22 23:39 | 显示全部楼层
J-Link下载
准备条件:

首先我们有一个STM32F103VCT6的点灯工程hex,通过CubeMX配置,具体教程看我之前的文章:点灯链接,这里因为要移植到GD32,需要修改工程里面的HSE超时时间,具体位置在生成代码的如下位置,把值改大就行,不改大会影响复位正常运行!!!改完生成新的hex文件

使用特权

评论回复
狗啃模拟|  楼主 | 2021-11-22 23:40 | 显示全部楼层
44216619bba08022ec.png

使用特权

评论回复
狗啃模拟|  楼主 | 2021-11-22 23:41 | 显示全部楼层
JFlashARM.exe软件
29098619bba26d4be5.png

使用特权

评论回复
狗啃模拟|  楼主 | 2021-11-22 23:42 | 显示全部楼层
J-Link连接电脑与GD32F303
51691619bba3a401e7.png

使用特权

评论回复
狗啃模拟|  楼主 | 2021-11-22 23:43 | 显示全部楼层
操作步骤:

打开软件,点击设置,进入工程设置
99489619bba62e6111.png

使用特权

评论回复
狗啃模拟|  楼主 | 2021-11-22 23:44 | 显示全部楼层
设置下载模式,这里我用的SWD下载
59581619bbaccb25b0.png

使用特权

评论回复
狗啃模拟|  楼主 | 2021-11-22 23:44 | 显示全部楼层
设置下载的目标对象-STM32F103VCT6
65860619bbade8bd59.png

使用特权

评论回复
狗啃模拟|  楼主 | 2021-11-22 23:45 | 显示全部楼层
设置Auto下载时的操作
79616619bbb06abffc.png

使用特权

评论回复
狗啃模拟|  楼主 | 2021-11-22 23:48 | 显示全部楼层
设置完成回到主界面,点击open打开hex文件
3362619bbb317db2c.png

使用特权

评论回复
狗啃模拟|  楼主 | 2021-11-22 23:48 | 显示全部楼层
点击连接,连接jlink和芯片
2747619bbbdb3f5da.png

使用特权

评论回复
狗啃模拟|  楼主 | 2021-11-22 23:49 | 显示全部楼层
点击auto进行下载程序
44118619bbbf20ea5f.png

使用特权

评论回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则