欢迎来到114ic电子网!签到免费注册 加为收藏

GD32如何替换STM32?

日子:2021/8/27 10:43:49
摘要:GD32F103是GD早期的产品经理。GD32E103和GD32F303是对GD32F103的升级和优化。所以4者是兼容的。虽然内核不同,但是通用外设差一点很少涉及到内核部分,在时间急迫的情况下可以使用ST的库开发。


GD32F103是GD早期的产品经理,GD32E103和GD32F303是对GD32F103的升级和优化。所以4者是兼容的,虽然内核不同,但是通用外设差一点很少涉及到内核部分,在时间急迫的情况下可以使用ST的库开发。

一,光和声音的亦然点

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

二,外围硬件区别


三,硬件替换需要注意的地方

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

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

四,使用ST标准库开发需要修改的地方

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

2)修改外部晶振起振超时时间, 不用的意思外部晶振可跳过这步。
原因:GD与ST的启动时间存在led有哪些差异性。为了让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时间上有led有哪些差异性。修改如下:



6)需求flash大于256K注意,小于256K可以忽略这项。

GD的flash存在分区的界说,前256K,CPU执行指令零守候,称code区,此脉搏正常范围外斥之为dataZ区。两者在擦写操作上没有区别,但陪读操作时间上存在较大差别,code区代码取值零守候,data区执行代码有较大延迟,代码执行效率比code区慢一下分子直径的数量级。因此data区司空见惯不建议运行对实时性是以互联网要求高的代码,为解决这个问题,可以使用分散加载的方法,比如把初始化代码,图片代码等放到data区。

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

『本文渡人自网络管理,版权归原作者所有,如有侵权请维系删除』 _ _ _ _

Baidu