浅谈GD32与STM32之间的区别

一.硬件设计

以我们常用的STM32与GD32单片机为例,做一下对比。

比较GD32E230C8(M0),GD32F103C8(M3),GD32F303CG(M4),STM32F103C8(M3),STM32F303C8T6(M4)硬件管脚的区别。

image-20210923103408862

从上图中可以看出:

  • GD32E230C8(M0)与STM32G030C8(M0)管脚不兼容;
  • GD32F103C8(M3)与STM32F103C8(M3)管脚兼容;
  • GD32F303CG(M4)与STM32F303C8T6(M4)管脚兼容。

GD32E230C8(M0),GD32F103C8(M3),GD32F303CG(M4)有两个引脚(35脚和36脚)硬件电气不兼容,可以加电阻,用于切换,实现PCB板兼容。

下表是GD32E230C8单片机35和36管脚定义:

image-20210923104636722

下表是GD32F103C8(M3)单片机35和36管脚定义:

image-20210923105234699

*可以看出这两个管脚不兼容,若想实现PCB管脚兼容,可以加电阻。

下图是GD32E230C8单片机原理图:

image-20210923104335192

从上图可以看出,在35和36脚加了3个电阻,2个上拉电阻和1个下拉电阻。

  • 当使用GD32E230C8T6单片机时,35脚和36脚默认是普通IO口,可以按照上图所示连接电阻。
  • 当使用GD32F103C8单片机时,35脚和36脚是电源口,此时可以把R6换成0欧姆的电阻,R7不焊接,R8焊接0欧姆的电阻。

二.设计中的不同点

1.工作电压不同:STM32的工作电压在2.0~ 3.6V或1.65~3.6V,GD32F的工作电压在 2.6~3.6V,工作范围相对要窄。

电压范围不同: GD32F: 2.6-3.6V STM32F: 2.0-3.6V(外部电压) GD32F: 1.2V(内核电压)STM32F: 1.8V(内核电压)

GD32的内核电压比STM32的内核电压要低,所以GD32的芯片在运行的时候运行功耗更低。

2.GD32F303/F103主频比STM32F103主频要高,GD32F10 系列主频: 108MHZ , STM32F10 系列主频 :72MHZ 。

3.启动时间:GD32 启动时间相同,由于 GD32 运行稍快,需要延长上电时间 ,配置(2ms) 。

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

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

Flash 擦除时间: GD32 是 60ms/page,STM32 30ms/page

6.功耗上GD32的静态功耗要相对高一点

功耗区别(以128k以下容量的作为参考)

a: 睡眠模式 Sleep:GD32F: 12.4mA STM32F10X: 7.5mA

b:深度睡眠模式 Deep Sleep: GD32F: 1.4mA STM32F10X: 24uA

c:待机模式 Stand By: GD32F: 10.5uA STM32F10X: 3.4uA

d:运行功耗: GD32F: 32.4mA/72M STM32F10X: 52mA/72M

7.GD32的BOOT0必须接10K下拉或接GND,ST可悬空。

BOOT0 管脚: Flash 程序运行时,BOOT0 在 STM32 上可悬空,GD32 必须外部下拉(从 Flash 运行,BOOT0 必须下拉地)。

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

9.GD32的SWD接口驱动能力比STM32弱,可以有如下几种方式解决:

a:线尽可能短一些;

b:降低SWD通讯速率;

c: SWDIO接10k上拉,SWCLK接10k下拉。

10.GD32对时序要求严格,配置外设需要先打开时钟,否则可能导致外设无法配置成功;STM32的可以先配置再开时钟。

11.修改外部晶振起振超时时间,不用外部晶振可跳过这步

原因:GD32与STM32的启动时间存在差异,为了让GD32 MCU更准确复位(不修改可能无法复位)。

12.串口通信不同点: GD32在连续发送数据的时候每两个字节之间会有一个Bit的Idle,而STM32没有。

GD32的串口在发送的时候停止位只有1/2两种停止位模式。STM32有0.5/1/1.5/2四种停止位模式。

13.ADC不同点: GD32的输入阻抗和采样时间的设置和STM32有一定差异,相同配置GD32采样的输入阻抗相对来说要小

14.FSMC不同点: STM32只有100Pin以上的大容量(256K及以上)才有FSMC,GD32所有的100Pin或100Pin以上的都有FSMC。

### GD32E230C8T6STM32F103C8T6微控制器规格特性差异 #### 处理器架构 GD32E230C8T6采用RISC-V指令集架构,而STM32F103C8T6则基于ARM Cortex-M3处理器核心。这种区别意味着两者在编程模型和支持工具链方面存在显著不同[^1]。 #### 工作频率 STM32F103C8T6的最大工作频率可达72 MHz;相比之下,GD32E230C8T6的工作频率最高为108 MHz,在性能上具有一定优势。 #### 存储容量 对于闪存大小而言,STM32F103C8T6提供了高达128 KB Flash Memory以及20 KB SRAM。然而,GD32E230C8T6仅配备有64KB Flash 和 16KB RAM, 显著低于前者。 #### I/O端口数量及种类 两款MCU都拥有丰富的GPIO资源用于外部设备连接。但是具体到特殊功能I/O如定时器、ADC等的数量和类型,则各有侧重。例如,STM32F103C8T6具备多个高级定时器(Timer),可用于PWM波形生成等功能; 而GD32E230系列强调其灵活配置的外设接口,支持更多种类型的通信协议[^2]。 #### 开发生态环境 由于市场占有率和技术积累的不同,围绕这两款产品的开发资料、社区活跃度等方面也有所差别。通常来说,针对STM32平台的支持更为广泛深入,包括但不限于官方文档、第三方库函数、在线教程等内容。而对于新兴起的RISC-V架构下的GD32系列产品,虽然发展迅速但仍处于追赶阶段。 ```python # 示例代码对比两个MCU初始化部分伪码表示 def init_stm32(): # STM32特定寄存器设置... def init_gd32_riscv(): # RISC-V体系结构下特有的汇编指令或API调用... if __name__ == "__main__": print("Initializing STM32...") init_stm32() print("Initializing GD32(RISC-V)...") init_gd32_riscv() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值