STM32应该是比较熟悉的一个系列的单片机,而ESP32相对陌生一些。但是从名字看,两者应该都是32位单片机。那么两者之间到底有什么关联,或者性能哪个好一些,哪个差一些呢?
? ? STM32系列
意法半导体 (STMicroelectronics) 集团于1987年6月成立,是由意大利的SGS 微电子公司和法国Thomson 半导体公司合并而成。1998年5月,SGS-THOMSON Microelectronics 将公司名称改为意法半导体有限公司,意法半导体是世界最大的半导体公司之一。
STM32系列专为要求高性能、低成本、低功耗的嵌入式应用设计的ARM Cortex?-M0,M0+,M3, M4和M7内核(ST‘s product portfolio contains a comprehensive range of microcontrollers, from robust, low-cost 8-bit MCUs up to 32-bit ARM-based Cortex?-M0 and M0+, Cortex?-M3, Cortex?-M4 Flash microcontrollers with a great choice of peripherals. ST has also extended this range to include an ultra-low-power MCU platform) 。
按内核架构分为不同产品:主流产品(STM32F0、STM32F1、STM32F3)、超低功耗产品(STM32L0、STM32L1、STM32L4、STM32L4+)、高性能产品(STM32F2、STM32F4、STM32F7、STM32H7)
今天,做为爱思考的单片机爱好者,简单的分析一下。
首先说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,关于该芯片的配置,我直接放个图,大家体验一下(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快,但是可以通过网口接入网络,可以控制更多的外设,为消费电子和工业控制而生。
所以,两者的定位并不相同,做为工程师的你,一定要根据自己的项目需求来进行芯片的选型。
ESP32对比ESP8266
在你的项目中使用ESP32或ESP8266吗?ESP32和ESP8266有什么区别?在本文中,我们将通过比较ESP32和ESP8266来回答这些问题,并涵盖每个板的优缺点。
ESP32和ESP8266是性价比非常高的Wi-Fi模块,非常适合物联网(IoT)领域的DIY项目。
两款芯片都属于32位处理器。ESP32是双核160MHz至240MHz CPU,而ESP8266是单核处理器,运行频率为80MHz。
这些WiFi模块都带有GPIO,支持SPI,I2C,UART等各种协议。最好的部分是它们带有无线网络,这使得它们与Arduino等其他微控制器区别开来。这意味着你可以通过Wi-Fi或蓝牙(ESP32)以极低的价格轻松地远程控制和监控设备。
规格:ESP32 vs ESP8266
该ESP32是ESP8266继任者。它增加了额外的CPU内核,更快的Wi-Fi,更多的GPIO,并支持蓝牙4.2和蓝牙低功耗。此外,ESP32配有触摸感应针脚,可用于唤醒ESP32深度睡眠,内置霍尔效应传感器和内置温度传感器。
两块板都非常便宜,但ESP32的成本略高。虽然ESP32的售价大约在6美元到12美元之间,但ESP8266的售价却在4美元到6美元之间(但这取决于你获得它们的位置)。
ESP32上有更多GPIO
该ESP32有更多的GPIO比ESP8266,你可以决定哪些引脚UART,I2C,SPI -你只需要设置的代码。这是可能的,因为ESP32芯片的多路复用功能允许你为同一个引脚分配多个功能。
如果你没有在代码上设置它们,它们将位于默认定义的引脚上,如下图所示(这是ESP32 DEVKIT V1 DOIT板的示例 - 引脚位置可能因制造商而异)。
PWM,ADC等
你可以在任何GPIO中设置PWM信号,并在代码上设置可配置的频率和占空比。
对于模拟引脚,这些是静态的,但ESP32支持18个通道(模拟使能引脚)上的测量,而ESP8266只有一个10位ADC引脚。ESP32还支持两个8位DAC通道。
此外,ESP32包含10个电容感应GPIO,可检测触摸并可用于触发事件,或唤醒ESP32深度睡眠。
Arduino IDE - ESP32 vs ESP8266
ESP32和ESP8266板的编程方法有很多种。目前,可以使用Arduino IDE编程环境对两个板进行编程。
这是一件好事,特别适合那些习惯Arduino编程并熟悉Arduino编程语言的人。
使用Arduino IDE开始使用ESP32或ESP8266并让你的第一个项目运行非常简单。网上有非常多的指南操作:比如在Arduino IDE中安装ESP32板(Windows说明);在Arduino IDE中安装ESP32板(Mac和Linux说明书);如何在Arduino IDE中安装ESP8266板等。
虽然你可以使用Arduino IDE对两个板进行编程,但它们可能与相同的库和命令不兼容。有些库只与其中一个板兼容。这意味着大多数时候你的ESP8266代码与ESP32不兼容。但是,通常你只需要进行一些修改。
MicroPython Firwmare - ESP32 vs ESP8266
另一种对ESP32和ESP8266板进行编程的流行方法是使用MicroPython固件。
MicroPython是针对微控制器和嵌入式系统的Python 3的重新实现。MicroPython与常规Python非常相似。因此,如果你已经知道如何使用Python编程,那么你也知道如何在MicroPython中编程。
在MicroPython中,大多数Python脚本都与两个板兼容(与使用Arduino IDE时不同)。这意味着大多数时候你可以为ESP32和ESP8266使用相同的脚本。
所以,此时你应该问: 我应该买ESP8266还是ESP32?
这真的取决于你想做什么。两块板都有使用的价值,两者都有利有弊。
ESP8266比ESP32便宜。虽然它没有那么多的功能,但对大多数简单的DIY物联网项目来说效果都不错。此外,由于它“较旧”,因此在软件方面受到更多支持,你可能会更容易找到帮助。但是,它在GPIO映射方面有一些限制,它可能没有足够的引脚用于你打算执行的操作。如果是这种情况,你应该使用ESP32。
ESP32比ESP8266 功能更强大,包含更多具有多种功能的GPIO,更快的Wi-Fi,并且还支持蓝牙。很多人认为ESP32比ESP8266更难处理,因为它更复杂。在我们看来,ESP32编程与ESP8266一样容易,特别是如果你打算用Arduino语言或MicroPython编程它。
另一方面,ESP32也有一些缺点。首先,它比ESP8266贵。因此,如果你正在制作一个简单的物联网项目,那么ESP8266可能会以更低的价格成功。此外,由于它比ESP8266更新,并非所有软件都是为了充分利用ESP32功能而开发的,因此支持更少,错误更多。但从长远来看,这些问题将得到解决,两个开发板都将有各自应用的空间。
文章出处:【微信号:gh_dae0718828df,微信公众号:单片机爱好者】欢迎添加关注!文章转载请注明出处。