813|0

6912

帖子

0

资源

五彩晶圆(中级)

GD32如何替换STM32? [复制链接]

本帖最后由 Jacktang 于 2022-3-6 16:29 编辑

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

 

01相同点

 

1)外围引脚PIN TO PIN兼容,每个引脚上的复用功能也完全相同。

2)芯片内部寄存器、外部IP寄存器地址和逻辑地址完全相同,但是有些寄存器默认值不同,有些外设模块的设计时序上和STM32有差异,这点差异主要体现在软件上修改,详情见下文。

3)编译工具:完全相同,例如KEIL 、IAR。

4)型号命名方式完全相同,所以替代只需找尾缀相同的型号即可,例如:STM32F103C8T6 与 GD32E103C8T6。

5)仿真工具:JLINK GDLINK

 

02外围硬件区别

 

image.png  

 

03硬件替换需要注意的地方

 

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

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

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

3)有时候发现用仿真器连接不上。因为GD的swd接口驱动能力比ST弱,可以有如下几种方式解决:

线尽可能短一些

降低SWD通讯速率

SWDIO接10k上拉,SWCLK接10k下拉

4)使用电池供电等,注意GD的工作电压,例如跌落到2.0V~2.6V区间,ST还能工作,GD可能无法启动或工作异常。

 

04使用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已生效,修改如下:

image.png  

 

总共需要修改如下四个函数:

 

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时间上有差异,修改如下:

 

image.png  

 

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

与ST不同,GD的flash存在分区的概念,前256K,CPU执行指令零等待,称code区,此范围外称为dataZ区。

两者在擦写操作上没有区别,但在读操作时间上存在较大差别,code区代码取值零等待,data区执行代码有较大延迟,代码执行效率比code区慢一个数量级,因此data区通常不建议运行对实时性要求高的代码。

为解决这个问题,可以使用分散加载的方法,比如把初始化代码,图片代码等放到data区。

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


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

查找数据手册?

EEWorld Datasheet 技术支持

最新文章 更多>>
    推荐帖子
    Ni-MH电池充电器PCB设计详解

    1 Protel软件简介随着电子信息技术的飞速发展,手工设计电子产品的PCB(印制电路板)已不能适应电子技术发展的需要。我们必须借 ...

    运放电路的散问

    【不懂就问】 图示的运放起到什么作用,或者属于哪一类运放 若去掉电感L,它和个积分放大器电路很像,只是输入端不一样 是不 ...

    stm32同一组io口不同引脚设置不同输入输出模式

    stm32同一组io口不同引脚设置不同输入输出模式,比如PA口的PA1用作输入使用来读取输入值,PA2用作输出使用来输出高低电平。这个 ...

    POE交换机选择和使用时需要注意的事项

    POE交换机选择和使用时需要注意的事项 POE交换机的电源相当于电源线。它通过网线为无线AP网络电话网络摄像机等设备供电,既 ...

    Sitara™开发红宝书

    小编尽可能多的为您罗列了各种可轻松获取的资源。在开发基于Sitara开发的应用程序时,你可以查阅Sitara相关的入门指南、观看实战 ...

    请问一下 低频卡在POR之前需要发送多少个FC的电磁波,怎么查了好多资料都没有明确数据

    本帖最后由 深圳小花 于 2022-4-30 18:00 编辑 请问一下 低频卡T5557卡 在POR之前需要发送多少个FC的电磁波,怎么查了好多资 ...

    关闭
    站长推荐上一条 1/9 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表