GD32单片机和STM32单片机的区别

发布者:心灵舞动最新更新时间:2024-10-30 来源: cnblogs关键字:GD32  STM32  单片机 手机看文章 扫描二维码
随时随地手机看文章

一、前言

什么GD32?

GD32是国内开发的一款单片机,据说开发的人员是来自ST公司的,GD32也是以STM32作为模板做出来的。

所以GD32和STM32有很多地方都是一样的,不过GD32毕竟是不同的产品,不可能所有东西都沿用STM32,有些自主开发的东西还是有区别的。相同的地方我们就不说了,下面我给大家讲一下不同的地方。

二、区别

1、内核

GD32采用二代的M3内核,STM32主要采用一代M3内核,下图是ARM公司的M3内核勘误表,GD使用的内核只有752419这一个BUG。

11e2c490-bf90-11ec-9e50-dac502259ad0.png

2、主频

使用HSE(高速外部时钟):GD32的主频最大108M,STM32的主频最大72M

使用HSI(高速内部时钟):GD32的主频最大108M,STM32的主频最大64M

主频大意味着单片机代码运行的速度会更快,项目中如果需要进行刷屏,开方运算,电机控制等操作,GD是一个不错的选择。

3、供电

外部供电:GD32外部供电范围是2.63.6V,STM32外部供电范围是23.6V。GD的供电范围比STM32相对要窄一点。

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

4、Flash差异

GD32的Flash是自主研发的,和STM32的不一样。

GD Flash执行速度:GD32 Flash中程序执行为0等待周期。

STM32 Flash执行速度:ST系统频率不访问flash等待时间关系:0等待周期,当0

Flash擦除时间:GD擦除的时间要久一点,官方给出的数据是这样的:GD32F103/101系列Flash 128KB 及以下的型号, Page Erase 典型值100ms, 实际测量60ms 左右。对应的ST 产品Page Erase 典型值 20~40ms。

5、功耗

从下面的表可以看出GD的产品在相同主频情况下,GD的运行功耗比STM32小,但是在相同的设置下GD的停机模式、待机模式、睡眠模式比STM32还是要高的。

11f53a4e-bf90-11ec-9e50-dac502259ad0.png

6、串口

GD在连续发送数据的时候每两个字节之间会有一个Bit的Idle,而STM32没有,如下图。

120fa762-bf90-11ec-9e50-dac502259ad0.png

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

GD 和STM32 USART的这两个差异对通信基本没有影响,只是GD的通信时间会加长一点。

7、ADC差异

GD的输入阻抗和采样时间的设置和ST有一定差异,相同配置GD采样的输入阻抗相对来说要小。具体情况见下表这是跑在72M的主频下,ADC的采样时钟为14M的输入阻抗和采样周期的关系:

1221af98-bf90-11ec-9e50-dac502259ad0.png

8、FSMC

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

9、103系列RAM&FLASH大小差别

GD103系列和ST103系列的ram和flash对比如下图:

12526a5c-bf90-11ec-9e50-dac502259ad0.png

10、105&107系列STM32和GD的差别

GD的105/107的选择比ST的多很多,具体见下表:

12665044-bf90-11ec-9e50-dac502259ad0.png

11、抗干扰能力

关于这一点,官方没有给出,我也是在做项目的时候偶然发现的,项目原本是用STM32F103C8T6,后来换成GD F103C8T6,这两个芯片的引脚完全一致,然后单片机用了的两个邻近的引脚作为SPI的时钟引脚和数据输出引脚,然后发现STM32的SPI能正常通讯,GD的不行,经过检查发现PCB板SPI的铜线背面有两根IIC的铜线经过,信号应该是受到影响了。

用示波器看了一下引脚的电平,发现确实是,STM32和GD的数据引脚波形都不正常,但是STM32的波形要好很多,波形虽然差了点,但是SPI通讯依然正常。

而GD则不能正常通讯了。然后我又把SPI的通讯速率减慢,发现STM32的数据引脚很快就恢复正常波形了,而GD的依然差,直到速率降到很低才恢复正常。初步怀疑是STM32内部对引脚有做一些滤波的电路,而GD则没有。

虽然我用的这个电路板本身布线有些不合理,但是在同样恶劣的环境下,STM32依然保证了通讯的正常,而GD不行,这在一定程度上说明了GD的抗干扰能力不如STM32。


关键字:GD32  STM32  单片机 引用地址:GD32单片机和STM32单片机的区别

上一篇:【GD32 MCU 入门教程】二、GD32 MCU 烧录说明(1)ISP 烧录
下一篇:【GD32 MCU 入门教程】二、GD32 MCU 烧录说明(3)脱机烧录

推荐阅读最新更新时间:2024-11-12 23:47

单片机程序问题总结
BL51: WARNING 16 (UNCALLED SEGMENT, IGNORED FOR OVERLAY ...) 原因是声明的函数没有调用。才产生这个警告。 详细说明见下面网址内部。 http://www.keil.com/support/docs/875.htm 解决办法: 1将没调用的函数部分注释掉。等用到的时候在取消注释。 2调用一下,这个函数。(废话) 3使用条件编译。 #if 0 void uncalled_function (void) { } #endif 碰到的问题 目标器件:C8051F340 编译环境:Keil uV4. 项目需要,定义了一个数组 U8 xda
[单片机]
MSP430 5438 单片机学习笔记
通过430一年的学习遇到的很多问题,也收获了很多,以下是学习中遇到的一些问题,和解决方法,还有很多没有整理出来,慢慢整理中。。。。 一、多源中断问题 #pragma vector = PORT2_VECTOR __interrupt void port2(void) { switch(P2IV) { case P2IV_P2IFG6: P2IFG &=~BIT6; P1OUT ^= BIT0;break; //LED1 亮灭 case P2IV_P2IFG7: P2IFG &=~BIT7;
[单片机]
STM32 systick 定时 时间计算
系统嘀嗒(SysTick)校准值寄存器 1.(SysTick) 系统嘀嗒时钟是由HCLK 分频 出来的。HCLK=SYSCLK=72MHz /* Select HCLK/8 as SysTick clock source */ SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); 当系统嘀嗒时钟设定为9 兆赫 或是: SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK); 当系统嘀嗒时钟设定为72 兆赫 2.系统嘀嗒校准值固定到9000,当系统嘀嗒时钟设定为9 兆赫,产生1ms 时基。 /* SysTick interrupt eac
[单片机]
STM32定时器自学笔记
看STM32定时器一个多星期,真是乱啊。各种模式的说。这也主要是我们对定时器的各种模式的应用不是很了解。而我们对定时器的基础部分则是上手很快。就是定时器定时完成后的更新事件中断。捕获,比较这些还说得过去,再后来的从模式、触发、霍尔传感器和编码器等直接就乱了,更不用说高级定时器中的刹车、死区、互补等。 而我看定时器则是看了通用定时器,主要是刹车,编码器等这些对于我来说应用得少,即使哪天用到了也忘了。看了通用定时器不少于4次。总算能够理理清楚了。以下慢慢说。 通用定时器有以下一些模式: 计数模式(向上计数,向下计数,中央对齐计数) 捕获比较模式: (捕获)1、输入捕获模式 2、PWM输入模式 (比较)1、强制输出模式 2、比较输出模式
[单片机]
<font color='red'>STM32</font>定时器自学笔记
ROM与RAM 单片机上电后是如何一步步执行的
ROM:(Read Only Memory)程序存储器 在单片机中用来存储程序数据及常量数据或变量数据,凡是c文件及h文件中所有代码、全局变量、局部变量、 const 限定符定义的常量数据、startup.asm文件中的代码(类似ARM中的bootloader或者X86中的BIOS,一些低端的单片机是没有这个的)通通都存储在ROM中。 RAM:(Random Access Memory)随机访问存储器 用来存储程序中用到的变量。凡是整个程序中,所用到的需要被改写的量,都存储在RAM中, 被改变的量 包括全局变量、局部变量、堆栈段。 程序经过编译、汇编、链接后,生成hex文件。用专用的烧录软件,通过烧录器将hex文件烧录到ROM中(究
[单片机]
STM32学习——中断方式下的发送数据
利用中断接收数据较为简单,但利用中断去发送数据弄了半天才搞定。。。 注:在设置USART的控制寄存器的TE位时,会发送一个空闲帧,于是便会进入中断。 错误的做法 本来的思路是中断里的代码尽可能地少,发送字符放在主函数中,类似这样 while(1) { USART_SendData(DEBUG_USARTx,Buf ); //Delay(0xfffff); if(j =5) break; } 然而。。。要是不加Delay延时j就无法在中断服务函数中自加,通过调试,发现调用USART_SendData(),发送完成标志位TC并不是马上置位,该函数只是将数据送入数据寄存器DR,并不代表发送完毕,所以
[单片机]
STM32烧写方法二】RS232-TTL
注意这种方法可以用于恢复芯片的SWD和JTAG被禁用! 第二种方法:利用串口模块烧写程序,就是usart通信协议,只需要4根线,但STM32芯片上的脚需要操作一下! 分别是BOOT0和B00T1!这种方法可以使有些芯片的JTAG和SWD被关闭的芯片可以重新开启! 第一步:将芯片的BOOT0接入高电平(就接一个3.3v的电压),将BOOT1接地! 第二步:将该烧写的模块的TX、RX、VCC、GND连接到STM32任何一个串口,芯片上电。串口连接电脑! 第三步:到官网或网上下载软件:Flash_Loader_Demonstrator_v2.2.0_Setup.exe 最后打开软件,如下图 选择串口连接电脑的端口
[单片机]
【<font color='red'>STM32</font>烧写方法二】RS232-TTL
μCOS-II在ATmega128单片机上的移植与开发
  引 言   本文介绍μC/OS-Ⅱ移植到ATMEL公司的8位微控制器ATmega128上的过程。所谓移植,就是使一个实时内核可以在某个微处理器上运行,并在此基础上进行驱动程序开发,使之成为一个实用的嵌入式系统。嵌入式系统包括了硬件和软件两部分,由于系统硬件资源的限制和实际应用的要求,应用系统对软件的基本要求是体积小,执行速度快,具有较好的裁减性和可移植性。   嵌入式系统的软件一般由嵌入式操作系统和应用软件组成,通过在操作系统之上开发应用软件,可以屏蔽掉很多底层硬件细节,使得应用程序调试方便,移植简单,易维护,同时开发周期也短。多数实时操作系统为用户提供一些标准的API函数,程序开发人员可以利用这些API函数进行应用程序
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved