对于国内的大学生或者单片机从业者来说,STM32应该是比较熟悉的一个系列的单片机,而ESP32相对陌生一些。但是从名字看,两者应该都是32位单片机。那么两者之间到底有什么关联,或者性能哪个好一些,哪个差一些呢?
今天,做为爱思考的单片机爱好者,简单的分析一下。
首先说STM32,这个大家应该是比较熟悉了。意法半导体在2007年6月11日发布了全球首款STM32产品,也就是F1系列,基于ARM-CORTEX内核。在其后的几年,陆陆续续发布了不同定位、不同方向的多款产品。有面向低功耗的L系列,有高性能的F2和F4系列,有低价的F0系列,有高速的F7系列等等。我们可以通过下面的这个图,有一个大致的了解:
所以,你会发现,STM32不是一个具体的单片机型号,而是一个或者多个系列的,基于ARM内核的单片机家族的统称。
那么,ESP32是什么?
它是乐鑫公司推出的一款采用两个哈佛结构 Xtensa LX6 CPU 构成的拥有双核系统的芯片。所有的片上存储器、片外存储器以及外设都分布在两个 CPU 的数据总线和/或指令总线上。
相比于STM32的一个大家族,ESP32虽然也代表一个系列,但目前来说,这个系列的成员还是比较少的,我们看下:
那么,两者之间该如何对比?先看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对比?或者说,我们用STM32的哪一款来和ESP32进行对比呢?
这里,我关注的因素是价格!也就是说,选择和ESP32模块价格接近的STM32芯片来对比!
为什么选ESP32模块而不是芯片?因为国内的厂家安信可对乐鑫公司的芯片做了一个比较成熟的模块封装,而国内工程师更熟悉的都是模块。
ESP32-S的模块在安信可淘宝店的售价是18.9元(注意,模块形式的ESP32有一片外挂的FLASH,大小是4MB),如下:
所以,这里我们找一个STM32系列里,价格在20元左右的芯片。这里,我选了STM32F407VET6,它在立创商城的价格是500片+的时候,22元/片。关于该芯片的配置,我直接放个图,大家体验一下(ps:这是一个100管脚的芯片)。
对比这两者,你会发现STM32F407有以下几个特点:
1、GPIO非常多,82个,UART、IIC、SPI、PWM、AD、DA等功能也很多,但不会出现ESP32那种GPIO不够用的情况。
2、主频168MHZ,比ESP32的240HMZ低了一些。运算能力210DMIPS,也低了一些。
3、flash和ram都相对小一些。
4、有线网口,不能无线上网。
经过对比,你会发现两者基本是有各自不同的定位。ESP32偏向体积小巧、速度超快、功能强大,通过wifi接入网络,专门为物联网而生;而STM32偏向管脚丰富、功能全面,虽然没有wifi和蓝牙,速度也没有ESP32快,但是可以通过网口接入网络,可以控制更多的外设,为消费电子和工业控制而生。
所以,两者的定位并不相同,做为工程师的你,一定要根据自己的项目需求来进行芯片的选型。