GD32替换STM32注意事项

文章源自微信公众号(8号线攻城狮)

1.GD32简述

在这里插入图片描述
GD32F103是GD早期的产品,GD32E103和GD32F303是对GD32F103的升级和优化,所以4者是兼容的,虽然内核不同,但是通用外设几乎很少涉及到内核部分,在时间急迫的情况下可以使用ST的库开发。

2.二者之间的相同点

  • 1.外围引脚PIN TO PIN兼容,每个引脚上的复用功能也完全相同。
  • 2.芯片内部寄存器、外部IP寄存器地址和逻辑地址完全相同,但是有些寄存器默认值不同,有些外设模块的设计时序上和STM32有差异,这点差异主要体现在软件上修改。
  • 3.编译工具:完全相同例如:KEIL 、IAR
  • 4.型号命名方式完全相同,所以替代只需找尾缀相同的型号即可,例如:STM32F103C8T6 与GD32E103C8T6。
  • 5.仿真工具:JLINK GDLINK

3.外围硬件的区别

从上面的介绍中,我们可以看出,GD32F30/E103系列和STM32F103系列是兼容的,但也需要一些注意的地方

  • 1.BOOT0必须接10K下拉或接GND,ST可悬空,这点很重要。
  • 2.RC复位电路必须要有,否则MCU可能不能正常工作,ST的有时候可以不要。
  • 3.有时候发现用仿真器连接不上。因为GD的swd接口驱动能力比ST弱,可以有如下几种方式解决:
    a、线尽可能短一些;
    b、降低SWD通讯速率;
    c、SWDIO接10k上拉,SWCLK接10k下拉。
  • 4.使用电池供电等,注意GD的工作电压,例如跌落到2.0V~2.6V区间,ST还能工作,GD可能无法启动或工作异常。

4.使用ST标准库开发需要修改的地方

  • 1.GD对时序要求严格,配置外设需要先打开时钟,在进行外设配置,否则可能导致外设无法配置成功;ST的可以先配置在开时钟。
  • 2.修改外部晶振起振超时时间,不用外部晶振可跳过这步。
    原因:GD与ST的启动时间存在差异,为了让GD MCU更准确复位。
    修改:
将宏定义:
#define HSE_STARTUP_TIMEOUT ((uint16_t)0x0500)
修改为:
#define HSE_STARTUP_TIMEOUT ((uint16_t)0xFFFF)
  • 3.GD32F10X flash取值零等待,而ST需要2个等待周期,因此,一些精确延时或者模拟IIC或SPI的代码可能需要修改。
    原因:GD32采用专利技术提高了相同工作频率下的代码执行速度。
    修改:如果使用for或while循环做精确定时的,定时会由于代码执行速度加快而使循环的时间变短,因此需要仿真重新计算设计延时。使用Timer定时器无影响。

  • 4.在代码中设置读保护,如果使用外部工具读保护比如JFLASH或脱机烧录器设置,可跳过此步骤。
    在写完KEY序列后,需要读该位确认key已生效,修改如下:
    在这里插入图片描述
    总共需要修改如下四个函数:

FLASH_Status FLASH_EraseOptionBytes(void);
FLASH_Status FLASH_ProgramOptionByteData(uint32_t Address, uint8_t Data);
uint32_t FLASH_GetWriteProtectionOptionByte(void);
FlagStatus FLASH_GetReadOutProtectionStatus(void);
  • 5.GD与ST在flash的Erase和Program时间上有差异
    修改如下:
    在这里插入图片描述
  • 6.需求flash大于256K注意,小于256K可以忽略这项
    与ST不同,GD的flash存在分区的概念,前256K,CPU执行指令零等待,称code区,此范围外称为dataZ区。两者在擦写操作上没有区别,但在读操作时间上存在较大差别,code区代码取值零等待,data区执行代码有较大延迟,代码执行效率比code区慢一个数量级,因此data区通常不建议运行对实时性要求高的代码,为解决这个问题,可以使用分散加载的方法,比如把初始化代码,图片代码等放到data区。

5.总结

至此,经过以上修改,在不使用USB和网络能复杂协议的代码,就可以使用ST的代码操作了。

  • 9
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
GD32F103是GigaDevice推出的一款基于ARM Cortex-M3内核的单片机芯片,与STM103非常相似。由于两者内核相同,因此在进行替换时需要注意以下几点: 首先要注意的是GD32F103的引脚布局与STM103不完全相同,因此可能需要重新设计电路板或进行一定的焊盘转接。建议在进行替换前先仔细核对引脚布局。 其次要注意的是GD32F103与STM103的时钟频率不同。GD32F103的最高时钟频率为108MHz,而STM103则为72MHz。替换时应注意是否需要进行时钟频率的调整以确保正确的运行。 除了时钟频率之外,还需要注意GD32F103的电气特性与STM103可能存在差异。例如,两者的电源电压范围可能不同,或者在工作温度范围和ESD特性等方面存在差异。因此,在进行替换前应该认真查阅官方的数据手册或咨询芯片厂商的技术支持人员以确保选用的芯片符合产品设计的要求。 最后,还需要注意GD32F103的软件开发工具与STM103不完全相同。GD32F103的官方开发工具为GigaDevice提供的GD32CubeMX和GD32Studio,而STM103则常用Keil等工具。因此,在进行替换时应确定能够适应对应的软件开发环境,以确保项目能够顺利进行。 综上所述,GD32F103与STM103虽然在硬件上十分相似,但在进行替换时还是需要仔细阅读数据手册和注意电气特性、引脚布局、时钟频率以及软件开发环境等方面的差异,以确保产品的性能、可靠性和稳定性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

栋哥爱做饭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值