esp32和stm32哪個(gè)好
對(duì)于國(guó)內(nèi)的大學(xué)生或者單片機(jī)從業(yè)者來(lái)說(shuō),STM32應(yīng)該是比較熟悉的一個(gè)系列的單片機(jī),而ESP32相對(duì)陌生一些。但是從名字看,兩者應(yīng)該都是32位單片機(jī)。那么兩者之間到底有什么關(guān)聯(lián),或者性能哪個(gè)好一些,哪個(gè)差一些呢?
今天,做為愛(ài)思考的單片機(jī)愛(ài)好者,簡(jiǎn)單的分析一下。
首先說(shuō)STM32,這個(gè)大家應(yīng)該是比較熟悉了。意法半導(dǎo)體在2007年6月11日發(fā)布了全球首款STM32產(chǎn)品,也就是F1系列,基于ARM-CORTEX內(nèi)核。在其后的幾年,陸陸續(xù)續(xù)發(fā)布了不同定位、不同方向的多款產(chǎn)品。有面向低功耗的L系列,有高性能的F2和F4系列,有低價(jià)的F0系列,有高速的F7系列等等。我們可以通過(guò)下面的這個(gè)圖,有一個(gè)大致的了解:
所以,你會(huì)發(fā)現(xiàn),STM32不是一個(gè)具體的單片機(jī)型號(hào),而是一個(gè)或者多個(gè)系列的,基于ARM內(nèi)核的單片機(jī)家族的統(tǒng)稱(chēng)。
那么,ESP32是什么?
它是樂(lè)鑫公司推出的一款采用兩個(gè)哈佛結(jié)構(gòu) Xtensa LX6 CPU 構(gòu)成的擁有雙核系統(tǒng)的芯片。所有的片上存儲(chǔ)器、片外存儲(chǔ)器以及外設(shè)都分布在兩個(gè) CPU 的數(shù)據(jù)總線和/或指令總線上。
相比于STM32的一個(gè)大家族,ESP32雖然也代表一個(gè)系列,但目前來(lái)說(shuō),這個(gè)系列的成員還是比較少的,我們看下:
那么,兩者之間該如何對(duì)比?先看ESP32的硬件,我直接放官方數(shù)據(jù)手冊(cè)里的配置:
?
功能框圖如下:
模塊(非芯片)的引腳分布如下:
你會(huì)發(fā)現(xiàn),ESP32這個(gè)模塊的IO并不多,估計(jì)也就30個(gè)左右(芯片有34個(gè),但是模塊中外接FLASH用掉了一些)。但是你會(huì)發(fā)現(xiàn)它有幾個(gè)特點(diǎn):
1、集成了非常多的外設(shè)接口,SPI、IIC、IIS、AD、DA、PWM、IR、UART、CAN等等。IO數(shù)量有限,所以基本上每個(gè)IO都有多個(gè)功能。
2、片內(nèi)flash和ram很大,flash有448KB,ram有520KB。而模塊上直接掛了一個(gè)4MB的flash。大的不像話!
3、速度快!雖然外接晶體的頻率只有40MHZ,但通過(guò)內(nèi)部主頻可以支持80MHZ、160MHZ、240MHZ,運(yùn)算能力高達(dá)600MIPS。
4、有wifi和藍(lán)牙!當(dāng)前兩者不能同時(shí)使用。
那么,它如何跟STM32對(duì)比?或者說(shuō),我們用STM32的哪一款來(lái)和ESP32進(jìn)行對(duì)比呢?
這里,我關(guān)注的因素是價(jià)格!也就是說(shuō),選擇和ESP32模塊價(jià)格接近的STM32芯片來(lái)對(duì)比!
為什么選ESP32模塊而不是芯片?因?yàn)閲?guó)內(nèi)的廠家安信可對(duì)樂(lè)鑫公司的芯片做了一個(gè)比較成熟的模塊封裝,而國(guó)內(nèi)工程師更熟悉的都是模塊。
ESP32-S的模塊在安信可淘寶店的售價(jià)是18.9元(注意,模塊形式的ESP32有一片外掛的FLASH,大小是4MB),如下:
所以,這里我們找一個(gè)STM32系列里,價(jià)格在20元左右的芯片。這里,我選了STM32F407VET6,它在立創(chuàng)商城的價(jià)格是500片+的時(shí)候,22元/片。關(guān)于該芯片的配置,我直接放個(gè)圖,大家體驗(yàn)一下(ps:這是一個(gè)100管腳的芯片)。
對(duì)比這兩者,你會(huì)發(fā)現(xiàn)STM32F407有以下幾個(gè)特點(diǎn):
1、GPIO非常多,82個(gè),UART、IIC、SPI、PWM、AD、DA等功能也很多,但不會(huì)出現(xiàn)ESP32那種GPIO不夠用的情況。
2、主頻168MHZ,比ESP32的240HMZ低了一些。運(yùn)算能力210DMIPS,也低了一些。
3、flash和ram都相對(duì)小一些。
4、有線網(wǎng)口,不能無(wú)線上網(wǎng)。
經(jīng)過(guò)對(duì)比,你會(huì)發(fā)現(xiàn)兩者基本是有各自不同的定位。ESP32偏向體積小巧、速度超快、功能強(qiáng)大,通過(guò)wifi接入網(wǎng)絡(luò),專(zhuān)門(mén)為物聯(lián)網(wǎng)而生;而STM32偏向管腳豐富、功能全面,雖然沒(méi)有wifi和藍(lán)牙,速度也沒(méi)有ESP32快,但是可以通過(guò)網(wǎng)口接入網(wǎng)絡(luò),可以控制更多的外設(shè),為消費(fèi)電子和工業(yè)控制而生。
所以,兩者的定位并不相同,做為工程師的你,一定要根據(jù)自己的項(xiàng)目需求來(lái)進(jìn)行芯片的選型。
ESP32對(duì)比ESP8266
在你的項(xiàng)目中使用ESP32或ESP8266嗎?ESP32和ESP8266有什么區(qū)別?在本文中,我們將通過(guò)比較ESP32和ESP8266來(lái)回答這些問(wèn)題,并涵蓋每個(gè)板的優(yōu)缺點(diǎn)。
ESP32和ESP8266是性?xún)r(jià)比非常高的Wi-Fi模塊,非常適合物聯(lián)網(wǎng)(IoT)領(lǐng)域的DIY項(xiàng)目。
兩款芯片都屬于32位處理器。ESP32是雙核160MHz至240MHz CPU,而ESP8266是單核處理器,運(yùn)行頻率為80MHz。
這些WiFi模塊都帶有GPIO,支持SPI,I2C,UART等各種協(xié)議。最好的部分是它們帶有無(wú)線網(wǎng)絡(luò),這使得它們與Arduino等其他微控制器區(qū)別開(kāi)來(lái)。這意味著你可以通過(guò)Wi-Fi或藍(lán)牙(ESP32)以極低的價(jià)格輕松地遠(yuǎn)程控制和監(jiān)控設(shè)備。
規(guī)格:ESP32 vs ESP8266
該ESP32是ESP8266繼任者。它增加了額外的CPU內(nèi)核,更快的Wi-Fi,更多的GPIO,并支持藍(lán)牙4.2和藍(lán)牙低功耗。此外,ESP32配有觸摸感應(yīng)針腳,可用于喚醒ESP32深度睡眠,內(nèi)置霍爾效應(yīng)傳感器和內(nèi)置溫度傳感器。
兩塊板都非常便宜,但ESP32的成本略高。雖然ESP32的售價(jià)大約在6美元到12美元之間,但ESP8266的售價(jià)卻在4美元到6美元之間(但這取決于你獲得它們的位置)。
ESP32上有更多GPIO
該ESP32有更多的GPIO比ESP8266,你可以決定哪些引腳UART,I2C,SPI -你只需要設(shè)置的代碼。這是可能的,因?yàn)镋SP32芯片的多路復(fù)用功能允許你為同一個(gè)引腳分配多個(gè)功能。
如果你沒(méi)有在代碼上設(shè)置它們,它們將位于默認(rèn)定義的引腳上,如下圖所示(這是ESP32 DEVKIT V1 DOIT板的示例 - 引腳位置可能因制造商而異)。
PWM,ADC等
你可以在任何GPIO中設(shè)置PWM信號(hào),并在代碼上設(shè)置可配置的頻率和占空比。
對(duì)于模擬引腳,這些是靜態(tài)的,但ESP32支持18個(gè)通道(模擬使能引腳)上的測(cè)量,而ESP8266只有一個(gè)10位ADC引腳。ESP32還支持兩個(gè)8位DAC通道。
此外,ESP32包含10個(gè)電容感應(yīng)GPIO,可檢測(cè)觸摸并可用于觸發(fā)事件,或喚醒ESP32深度睡眠。
Arduino IDE - ESP32 vs ESP8266
ESP32和ESP8266板的編程方法有很多種。目前,可以使用Arduino IDE編程環(huán)境對(duì)兩個(gè)板進(jìn)行編程。
這是一件好事,特別適合那些習(xí)慣Arduino編程并熟悉Arduino編程語(yǔ)言的人。
使用Arduino IDE開(kāi)始使用ESP32或ESP8266并讓你的第一個(gè)項(xiàng)目運(yùn)行非常簡(jiǎn)單。網(wǎng)上有非常多的指南操作:比如在Arduino IDE中安裝ESP32板(Windows說(shuō)明);在Arduino IDE中安裝ESP32板(Mac和Linux說(shuō)明書(shū));如何在Arduino IDE中安裝ESP8266板等。
雖然你可以使用Arduino IDE對(duì)兩個(gè)板進(jìn)行編程,但它們可能與相同的庫(kù)和命令不兼容。有些庫(kù)只與其中一個(gè)板兼容。這意味著大多數(shù)時(shí)候你的ESP8266代碼與ESP32不兼容。但是,通常你只需要進(jìn)行一些修改。
MicroPython Firwmare - ESP32 vs ESP8266
另一種對(duì)ESP32和ESP8266板進(jìn)行編程的流行方法是使用MicroPython固件。
MicroPython是針對(duì)微控制器和嵌入式系統(tǒng)的Python 3的重新實(shí)現(xiàn)。MicroPython與常規(guī)Python非常相似。因此,如果你已經(jīng)知道如何使用Python編程,那么你也知道如何在MicroPython中編程。
在MicroPython中,大多數(shù)Python腳本都與兩個(gè)板兼容(與使用Arduino IDE時(shí)不同)。這意味著大多數(shù)時(shí)候你可以為ESP32和ESP8266使用相同的腳本。
所以,此時(shí)你應(yīng)該問(wèn): 我應(yīng)該買(mǎi)ESP8266還是ESP32?
這真的取決于你想做什么。兩塊板都有使用的價(jià)值,兩者都有利有弊。
ESP8266比ESP32便宜。雖然它沒(méi)有那么多的功能,但對(duì)大多數(shù)簡(jiǎn)單的DIY物聯(lián)網(wǎng)項(xiàng)目來(lái)說(shuō)效果都不錯(cuò)。此外,由于它“較舊”,因此在軟件方面受到更多支持,你可能會(huì)更容易找到幫助。但是,它在GPIO映射方面有一些限制,它可能沒(méi)有足夠的引腳用于你打算執(zhí)行的操作。如果是這種情況,你應(yīng)該使用ESP32。
ESP32比ESP8266 功能更強(qiáng)大,包含更多具有多種功能的GPIO,更快的Wi-Fi,并且還支持藍(lán)牙。很多人認(rèn)為ESP32比ESP8266更難處理,因?yàn)樗鼜?fù)雜。在我們看來(lái),ESP32編程與ESP8266一樣容易,特別是如果你打算用Arduino語(yǔ)言或MicroPython編程它。
另一方面,ESP32也有一些缺點(diǎn)。首先,它比ESP8266貴。因此,如果你正在制作一個(gè)簡(jiǎn)單的物聯(lián)網(wǎng)項(xiàng)目,那么ESP8266可能會(huì)以更低的價(jià)格成功。此外,由于它比ESP8266更新,并非所有軟件都是為了充分利用ESP32功能而開(kāi)發(fā)的,因此支持更少,錯(cuò)誤更多。但從長(zhǎng)遠(yuǎn)來(lái)看,這些問(wèn)題將得到解決,兩個(gè)開(kāi)發(fā)板都將有各自應(yīng)用的空間。
小編推薦閱讀:
評(píng)論