STM32、GD32、ESP32都是32位的單片機(jī),本文對(duì)比其中的區(qū)別。
STM32:意法半導(dǎo)體在2007年6月11日發(fā)布的產(chǎn)品,基于ARM-CORTEX內(nèi)核。
GD32:兆易創(chuàng)新公司 2013 年發(fā)布的產(chǎn)品,在芯片開(kāi)發(fā)、配置、命名上基本模仿STM32,甚至 GPIO 和 STM32 都是 pin to pin 的,封裝不改焊上去直接用。有時(shí)候 STM32 的源碼不修改,重新編譯燒寫(xiě)到 GD32 上就可以跑。STM32有自己的庫(kù)文件,GD32 的庫(kù)文件也是模仿 STM32 的庫(kù)文件。當(dāng)然也有很多不同,比如串口驅(qū)動(dòng)、USB 等,需要額外調(diào)試。
ESP32:樂(lè)鑫公司 2017 年開(kāi)發(fā)的產(chǎn)品,和 STM32、GD32 不同,ESP32 主要面向物聯(lián)網(wǎng)領(lǐng)域,支持功能很多,但引出 GPIO pin 腳很少,因此大多數(shù) GPIO 都有很多復(fù)用功能。出廠就集成藍(lán)牙、WiFi 等物聯(lián)網(wǎng)必備功能,板子也很小,喜歡物聯(lián)網(wǎng)的可以玩玩。
GD32 和 STM32 的區(qū)別
GD32是國(guó)內(nèi)開(kāi)發(fā)的一款單片機(jī),據(jù)說(shuō)開(kāi)發(fā)的人員是來(lái)自ST公司的,GD32也是以STM32作為模板做出來(lái)的。所以GD32和STM32有很多地方都是一樣的,不過(guò)GD32畢竟是不同的產(chǎn)品,不可能所有東西都沿用STM32,有些自主開(kāi)發(fā)的東西還是有區(qū)別的。相同的地方我們就不說(shuō)了,下面我給大家講一下不同的地方。
1、內(nèi)核GD32采用二代的M3內(nèi)核,STM32主要采用一代M3內(nèi)核,下圖是ARM公司的M3內(nèi)核勘誤表,GD使用的內(nèi)核只有752419這一個(gè)BUG。
2、主頻使用HSE(高速外部時(shí)鐘):GD32的主頻最大108M,STM32的主頻最大72M
使用HSI(高速內(nèi)部時(shí)鐘):GD32的主頻最大108M,STM32的主頻最大64M
主頻大意味著單片機(jī)代碼運(yùn)行的速度會(huì)更快,項(xiàng)目中如果需要進(jìn)行刷屏,開(kāi)方運(yùn)算,電機(jī)控制等操作,GD是一個(gè)不錯(cuò)的選擇。
3、供電外部供電:GD32外部供電范圍是2.63.6V,STM32外部供電范圍是23.6V。GD的供電范圍比STM32相對(duì)要窄一點(diǎn)。
內(nèi)核電壓:GD32內(nèi)核電壓是1.2V,STM32內(nèi)核電壓是1.8V。GD的內(nèi)核電壓比STM32的內(nèi)核電壓要低,所以GD的芯片在運(yùn)行的時(shí)候運(yùn)行功耗更低。
4、Flash差異GD32 的 Flash 是自主研發(fā)的,和 STM32 的不一樣。
GD Flash 執(zhí)行速度:GD32 Flash 中程序執(zhí)行為 0 等待周期。
STM32 Flash 執(zhí)行速度:ST 系統(tǒng)頻率不訪問(wèn) flash 等待時(shí)間關(guān)系:0 等待周期,當(dāng) 0<SYSCLK<24MHz,1 等待周期,當(dāng) 24MHz<SYSCLK≤48MHz,2 等待周期,當(dāng) 48MHz<SYSCLK≤72MHz。
Flash 擦除時(shí)間:GD 擦除的時(shí)間要久一點(diǎn),官方給出的數(shù)據(jù)是這樣的:GD32F103/101 系列 Flash 128KB 及以下的型號(hào), Page Erase 典型值 100ms, 實(shí)際測(cè)量 60ms 左右。對(duì)應(yīng)的 ST 產(chǎn)品 Page Erase 典型值 20~40ms。
5、功耗從下面的表可以看出GD的產(chǎn)品在相同主頻情況下,GD的運(yùn)行功耗比STM32小,但是在相同的設(shè)置下GD的停機(jī)模式、待機(jī)模式、睡眠模式比STM32還是要高的。
6、串口GD在連續(xù)發(fā)送數(shù)據(jù)的時(shí)候每?jī)蓚(gè)字節(jié)之間會(huì)有一個(gè)Bit的Idle,而STM32沒(méi)有,如下圖。
GD的串口在發(fā)送的時(shí)候停止位只有1/2兩種停止位模式。STM32有0.5/1/1.5/2四種停止位模式。
GD 和STM32 USART的這兩個(gè)差異對(duì)通信基本沒(méi)有影響,只是GD的通信時(shí)間會(huì)加長(zhǎng)一點(diǎn)。
7、ADC差異GD的輸入阻抗和采樣時(shí)間的設(shè)置和ST有一定差異,相同配置GD采樣的輸入阻抗相對(duì)來(lái)說(shuō)要小。具體情況見(jiàn)下表這是跑在72M的主頻下,ADC的采樣時(shí)鐘為14M的輸入阻抗和采樣周期的關(guān)系:
8、FSMCSTM32只有100Pin以上的大容量(256K及以上)才有FSMC,GD32所有的100Pin或100Pin以上的都有FSMC。
9、103系列RAM&FLASH大小差別GD103系列和ST103系列的ram和flash對(duì)比如下圖:
10、105&107系列STM32和GD的差別GD的105/107的選擇比ST的多很多,具體見(jiàn)下表:
11、抗干擾能力GD 的抗干擾能力不如 STM32,還需要一定打磨。
ESP32 和 STM32
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è)系列的成員還是比較少的,我們看下:
資源如下:
功能框圖如下:
模塊(非芯片)的引腳分布如下:
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 和 ESP32 基本是有各自不同的定位。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è)控制而生。
總結(jié)
STM32 和 GD32 是同質(zhì)化產(chǎn)品,區(qū)別一個(gè)是國(guó)外,一個(gè)是國(guó)產(chǎn),最近流行國(guó)產(chǎn)化替代,所以 GD32 還是很有發(fā)展前景的。物聯(lián)網(wǎng)也是一個(gè)好方向,因此 ESP32 也是很有前景的。