STM32F1和STM32F4這兩個系列都是單片機達人的心頭好,到底那個好呢
大家都知道GD32是國內開發的一款單片機,能夠說是國貨之光,據說開發的人員是來自ST公司的,GD32也是以STM32作為模板做出來的。所以GD32和STM32有很多地方都是一樣的。
不過GD32畢竟是不同的產品,不可能所有東西都沿用STM32,有些自主開發的東西還是有區別的。
相同的地方我們就不說了,下面列一下不同的地方。
01內核
GD32採用二代的M3內核,STM32主要採用一代M3內核,下圖是ARM公司的M3內核勘誤表,GD使用的內核獨有752419這一個BUG。
02主頻
使用HSE(高速外部時鍾):GD32的主頻最大108M,STM32的主頻最大72M
使用HSI(高速內部時鍾):GD32的主頻最大108M,STM32的主頻最大64M
主頻大意味著單片機代碼運行的速度會更快,項目中假如須要進行刷屏,開方運算,電機控制等操作,GD是一個不錯的選擇。
03供電
外部供電:GD32外部供電範圍是2.6-3.6V,STM32外部供電範圍是2-3.6V。GD的供電範圍比STM32相對要窄一點。
內核電壓:GD32內核電壓是1.2V,STM32內核電壓是1.8V。GD的內核電壓比STM32的內核電壓要低,所以GD的晶片在運行的時候運行功耗更低。
04Flash差異
GD32的Flash是自主研發的,和STM32的不一樣。
GD Flash執行速度:GD32 Flash中程序執行為0等待周期。
STM32 Flash執行速度:ST系統頻次不訪問flash等待時長關係,0等待周期,當0<>z;1等待周期,當24MHz<>K≤48MHz;2等待周期,當48MHz<>K≤72MHz。
Flash擦除時長:GD擦除的時長要久一點,官方給出的數據是這樣的「GD32F103/101系列Flash 128KB及以下的型號,Page Erase典型值100ms,實際測量60ms左右。」對應的ST產品Page Erase典型值 20~40ms。
05功耗
從下面的表能夠看出GD的產品在相同主頻情況下,GD的運行功耗比STM32小,但是在相同的設置下GD的停機模式、待機模式、睡眠模式比STM32還是要高的。
06串口
GD在不間斷髮送數據的時候每兩個位元組之間會有一個Bit的Idle,而STM32沒有
GD的串口在發送的時候停下位獨有1/2兩種停下位模式。STM32有0.5/1/1.5/2四種停下位模式。
GD和STM32 USART的這兩個差異對通信根本沒有影響,只是GD的通信時長會加長一點。
07 ADC差異
GD的輸寫阻抗和採樣時長的設置和ST有一定差異,相同配置GD採樣的輸寫阻抗相對來說要小
08 FSMC
STM32獨有100Pin以上的大容量(256K及以上)才有FSMC,GD32所有的100Pin或100Pin以上的都有FSMC。
09 103系列RAM&FLASH大小差別
GD103系列和ST103系列的ram和flash
10 105&107系列STM32和GD的差別
GD的105/107的選擇比ST的多很多
11抗干擾能力
關於這一點,官方沒有給出,筆者也是在做項目標時候偶然發現的。
項目原本是用STM32F103C8T6,後來換成GDF103C8T6。這兩個晶片的引腳完全一致,單片機用了的兩個鄰近的引腳作為SPI的時鐘引腳和數據輸出引腳,然後發現STM32的SPI能正常通訊,GD的不行;經過檢查發現PCB板SPI的銅線背面有兩根IIC的銅線經過,信號應該是受到影響了。
用示波器看了一下引腳的電平,發現的確是,STM32和GD的數據引腳波形都不正常,但是STM32的波形要好很多,波形雖然差了點,但是SPI通訊依然正常。而GD則不能正常通訊了。
然後我們又把SPI的通訊速率減慢,發現STM32的數據引腳很快就恢復正常波形了,而GD的依然差,直到速率降到很低才恢復正常。初步狐疑是STM32內部對引腳有做一些濾波的電路,而GD則沒有。雖然用的這個電路板自身布線有些不合理,但是在同樣惡劣的環境下,STM32依然保證了通訊的正常,而GD不行,這在一定程度上說明了GD的抗干擾才能不如STM32。