STM32、GD32、ESP32都是32位的单片机,本文对比其中的区别。
STM32:意法半导体在2007年6月11日发布的产品,基于ARM-CORTEX内核。
GD32:兆易创新公司 2013 年发布的产品,在芯片开发、配置、命名上基本模仿STM32,甚至 GPIO 和 STM32 都是 pin to pin 的,封装不改焊上去直接用。有时候 STM32 的源码不修改,重新编译烧写到 GD32 上就可以跑。STM32有自己的库文件,GD32 的库文件也是模仿 STM32 的库文件。当然也有很多不同,比如串口驱动、USB 等,需要额外调试。
ESP32:乐鑫公司 2017 年开发的产品,和 STM32、GD32 不同,ESP32 主要面向物联网领域,支持功能很多,但引出 GPIO pin 脚很少,因此大多数 GPIO 都有很多复用功能。出厂就集成蓝牙、WiFi 等物联网必备功能,板子也很小,喜欢物联网的可以玩玩。
GD32 和 STM32 的区别
GD32是国内开发的一款单片机,据说开发的人员是来自ST公司的,GD32也是以STM32作为模板做出来的。所以GD32和STM32有很多地方都是一样的,不过GD32毕竟是不同的产品,不可能所有东西都沿用STM32,有些自主开发的东西还是有区别的。相同的地方我们就不说了,下面我给大家讲一下不同的地方。
1、内核GD32采用二代的M3内核,STM32主要采用一代M3内核,下图是ARM公司的M3内核勘误表,GD使用的内核只有752419这一个BUG。
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<SYSCLK<24MHz,1 等待周期,当 24MHz<SYSCLK≤48MHz,2 等待周期,当 48MHz<SYSCLK≤72MHz。
Flash 擦除时间:GD 擦除的时间要久一点,官方给出的数据是这样的:GD32F103/101 系列 Flash 128KB 及以下的型号, Page Erase 典型值 100ms, 实际测量 60ms 左右。对应的 ST 产品 Page Erase 典型值 20~40ms。
5、功耗从下面的表可以看出GD的产品在相同主频情况下,GD的运行功耗比STM32小,但是在相同的设置下GD的停机模式、待机模式、睡眠模式比STM32还是要高的。
6、串口GD在连续发送数据的时候每两个字节之间会有一个Bit的Idle,而STM32没有,如下图。
GD的串口在发送的时候停止位只有1/2两种停止位模式。STM32有0.5/1/1.5/2四种停止位模式。
GD 和STM32 USART的这两个差异对通信基本没有影响,只是GD的通信时间会加长一点。
7、ADC差异GD的输入阻抗和采样时间的设置和ST有一定差异,相同配置GD采样的输入阻抗相对来说要小。具体情况见下表这是跑在72M的主频下,ADC的采样时钟为14M的输入阻抗和采样周期的关系:
8、FSMCSTM32只有100Pin以上的大容量(256K及以上)才有FSMC,GD32所有的100Pin或100Pin以上的都有FSMC。
9、103系列RAM&FLASH大小差别GD103系列和ST103系列的ram和flash对比如下图:
10、105&107系列STM32和GD的差别GD的105/107的选择比ST的多很多,具体见下表:
11、抗干扰能力GD 的抗干扰能力不如 STM32,还需要一定打磨。
ESP32 和 STM32
ESP32 是乐鑫公司推出的一款采用两个哈佛结构 Xtensa LX6 CPU 构成的拥有双核系统的芯片。所有的片上存储器、片外存储器以及外设都分布在两个 CPU 的数据总线和/或指令总线上。
相比于STM32的一个大家族,ESP32虽然也代表一个系列,但目前来说,这个系列的成员还是比较少的,我们看下:
资源如下:
功能框图如下:
模块(非芯片)的引脚分布如下:
ESP32 这个模块的 IO 并不多,估计也就 30 个左右(芯片有34个,但是模块中外接FLASH用掉了一些)。但是你会发现它有几个特点:
1、集成了非常多的外设接口,SPI、IIC、IIS、AD、DA、PWM、IR、UART、CAN等等。IO 数量有限,所以基本上每个 IO 都有多个功能。
2、片内flash和ram很大,flash有448KB,ram有520KB。而模块上直接挂了一个4MB的flash。
3、速度快!虽然外接晶体的频率只有40MHZ,但通过内部主频可以支持80MHZ、160MHZ、240MHZ,运算能力高达600MIPS。
4、有wifi和蓝牙!当前两者不能同时使用。
STM32 和 ESP32 基本是有各自不同的定位。ESP32 偏向体积小巧、速度超快、功能强大,通过 wifi 接入网络,专门为物联网而生;而 STM32 偏向管脚丰富、功能全面,虽然没有 wifi 和蓝牙,速度也没有 ESP32 快,但是可以通过网口接入网络,可以控制更多的外设,为消费电子和工业控制而生。
总结
STM32 和 GD32 是同质化产品,区别一个是国外,一个是国产,最近流行国产化替代,所以 GD32 还是很有发展前景的。物联网也是一个好方向,因此 ESP32 也是很有前景的。