技术标签: STM32替换 hex下载程序 串口下载程序 # GD32 CubeMX开发GD32 GD32
读完这一篇文章,你能获得的知识点:
最近半导体行业出现的缺货浪潮,各种芯片价格飙升,像一些常用芯片如STM32F103C8T6,从去年的5块一片涨价到现在的65一片,涨幅17倍!!!在这种情况下,大家纷纷在找一些国产芯片来替代ST的芯片,而在国产中做的比较好的芯片就是兆易创新的GD32芯片了,我最近也本着学习的心态研究了一下GD32快速替换STM32的方式,使用GD32F303VCT6替换STM32F103VCT6,以此为例做一些记录分享给大家
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系列的芯片展开叙述
选项 | GD32F10x系列特性 | GD32F30x系列特性 | STM32F10x系列特性 |
---|---|---|---|
CPU及Flash特性 | 高达108MHz主频 高达3M Flash 前256K Flash零等待 | 高达120MHz主频 高达3M Flash 前256K Flash零等待 | 72M主频,512KFlash |
片内外设特性 | 高达3个12位ADC; 高达2个12位DAC; 高达10个通用16位定时器,2个基本定时器和2个增强型定时器; 高达3个SPI、2个I2C、5个USART/UART、2个I2S、2个CAN、1个全速USBD、1个全速USBFS、1个以太网MAC | 高达3个12位ADC; 高达2个12位DAC; 高达10个通用16位定时器,2个基本定时器和2个增强型定时器; 高达3个SPI、2个I2C、5个USART/UART、2个I2S、2个CAN、1个全速USBD、1个全速USBFS、1个以太网MAC | 3个ADC,2个DAC,4个通用TIM,2个高级TIM,2个基本TIM,3个SPI,2个I2C,5个USART,1个USB,1个CAN,1个SDIO |
其他特性 | 36~144 PIN;具有SDIO模块; | 36~144 PIN 具有SDIO模块; | 36~144 PIN 具有SDIO模块; |
相同点
函数库文件基本相同:因为GD32正向研发,对于PIN TO PIN的芯片,内部寄存器地址和STM32完全相同,所以STM32的库文件编译后的文件可以直接下载
编译工具相同如keil、IAR都相同
不同点
工作电压有所不同,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更准确复位(不修改可能无法复位)。
在使用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都有效)
准备条件:
操作步骤:
准备条件:
操作步骤:
将单片机的Boot0拉高Boot1拉低,原因(参考百度):这样设置启动方式为系统存储器启动方式,从系统存储器启动,该模式的启动程序功能是由厂家设置的。一般来说,这样的启动方式用的比较少。系统存储器是芯片内部一块特定的区域,GD32在出厂时,由GD在这个区域内部预置了一段BootLoader,也就是我们常说的ISP程序,这是一块ROM,出厂后无法改动。一般来说,我们选用这样的启动模式时,是为了从串口下载程序,由于在厂家提供的BootLoader中,提供了串口下载程序的固件,能够通过这个BootLoader将程序下载到系统的Flash中。该下载方式须要下面步骤:
将BOOT0设置为1,BOOT1设置为0,然后按下复位键,这样才干从系统存储器启动BootLoader
最后在BootLoader的帮助下,通过串口下载程序到Flash中
6.在FlyMcu中点击下载,之后按下开发板复位按键,程序显示下载,下载完成如下
GD32直接下载STM32 Hal库开发的程序运行完成
这一栏是我用STM32CubeMX进行开发,并下载到GD32F303VCT6的芯片上运行,观察移植效果的一些记录,测试会一直更新,并且将我遇到的反馈效果记录下来,给后面同学做参考
测试效果:完美运行,示波器看了电平变化间隔,精度挺高
测试效果:时间戳观察,符合预期现象,下次使用逻辑分析仪看一下具体波形和STM32做对比!
因为笔者水平原因,文章有错误或者改进之处希望大佬可以在评论区提出来,或者私信我,万分感谢!!!
文章浏览阅读26次。本系统带文档lw万字以上文末可领取本课题的JAVA源码参考。
文章浏览阅读1.9k次,点赞67次,收藏20次。U4_3 语法分析-自底向上分析-LR0/LR1/SLR分析
文章浏览阅读1.5k次。 马上就要参加巅峰战将营,整理了一下,自己还真没有几套运动的衣服。只好临时抱佛脚了,跟丫头去逛街买装备。 一整天下来,李宁、安踏逛遍,搞定3身运动装,收工! 晚上便跟丫头来到石路万人码头乘坐游船赏月。 游船从石路南浩街万人码头出发,沿途经过了24做桥:阊门吊桥、惠济桥、平门桥、齐门桥、糖坊湾桥、娄们桥、相门桥、葑门桥、竹辉桥、古觅渡桥、南园桥、人民桥、蟠龙桥、吴门桥、盘门、新市
文章浏览阅读1.3k次,点赞29次,收藏8次。Python(35):Python3 通过https上传文件和下载文件_python3 文件上传下载
文章浏览阅读5.1k次。一、需求分析我的电脑一般都是24小时候开机的,方便远程操作。但是这样,一是比较浪费电,二是对电脑硬件也或多或少有些影响。所以就需要远程开机。目前远程开机有很多种方式:1、智能插线板,可以远程控制插板的通电和断电,并在BIOS中设置来电开机,实现远程开机2、通过一些硬件,插到机箱电源跳线上来实现3、利用大部分电脑都支持的WakeOnLan技术来实现开机,只是配置过程有不少坑,相对比较麻烦。如果利用W..._wol安卓远程唤醒软件
文章浏览阅读1.6k次,点赞5次,收藏2次。@VUE基础知识学习,基础安装node和淘宝镜像 operation not permitted, mkdir 'D:\nodejs\node_global’解决方法在官网上搜索node.js安装下载成功之后在本地进行安装,记得一定要去搜一下安装教程,因为有些步骤需要修改正常安装之后没有什么问题。检验npm版本(operation not permitted, mkdir 'D:\nodejs\node_global’解决方法)在这里我遇到了一个问题:发现报错,之后我就去百度上搜索了一下这个问_operation not permitted, mkdir 'd:\nodejs\node_global
文章浏览阅读1.3k次。 通常用博弈的战略式表述去描述和分析静态博弈,而对动态博弈的描述和分析就借助博弈的扩展式表述。回顾第2章给出的战略式表述,其中心内容包含三个要素:(1)参与者_gambit博弈论软件教程
文章浏览阅读1.4k次,点赞2次,收藏3次。然而,随着AI技术的快速发展,我们也面临着一系列伦理问题,这些问题涉及到我们的隐私、公平性、自主性和责任等方面。通过建立法律框架、改进训练数据和算法、提高模型的可解释性以及提供伦理培训,我们可以更好地应对AI伦理挑战,为科技发展中的人性之声提供指导。:为了解决数据收集和滥用问题,需要制定严格的数据隐私法规,确保个人数据的收集和使用受到适当的监管。:为了解决自主性问题,需要建立法律框架,明确自主AI系统的责任和法律责任。为了应对伦理挑战,开发人员和数据科学家需要受到伦理教育,以提高他们的伦理意识和决策能力。
文章浏览阅读3.6w次,点赞89次,收藏623次。AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它是专门为文本处理设计的编程语言,也是行处理软件,通常用于扫描,过滤,统计汇总等工作,数据可以来自标准输入也可以是管道或文件。当读到第一行时,匹配条件,然后执行指定动作,在接着读取第二行数据处理,不会默认输出。如果没有定义匹配条件,则是默认匹配所有数据行,awk隐含循环,条件匹配多少次,动作就会执行多少次。逐行读取文本,默认以空格或tab键为分割符进行分割,将分割所得的各个字段,保存到内建变量中,并按模式或或条件执行编辑命令。与sed工作原理相比:s_awk
文章浏览阅读161次。ClearEditTextView通过扩展EditText,添加了右边清除按钮、输入数据不合法时可左右抖动的功能。效果如下:模拟登录整体的实现代码如下:public class ClearEditTextView extends EditText implements View.OnFocusChangeListener, TextWatcher {//右边的删除按钮private Drawabl..._android edittext clear
文章浏览阅读1.1k次。由于小程序官方没有提供外部H5网页直接跳转到小程序的api,所以目前只支持小程序内嵌H5,并且只有内嵌的H5才能跳回小程序小程序跳转H5需要用到小程序的web-view,官方文档链接web-view是承载网页的容器。会自动铺满整个小程序页面,个人类型的小程序暂不支持使用。写法如下:<view class="page-body"> <web-vi..._uni小程序跳转到h5链接方法
文章浏览阅读153次。程序员的职业成长之路?从初级到高级的技能提升之路