一、前言
什麼GD32?
GD32是國内開發的一款單片機,據說開發的人員是來自ST公司的,GD32也是以STM32作為模闆做出來的。
是以GD32和STM32有很多地方都是一樣的,不過GD32畢竟是不同的産品,不可能所有東西都沿用STM32,有些自主開發的東西還是有差別的。相同的地方我們就不說了,下面我給大家講一下不同的地方。
二、差別
1、核心
GD32采用二代的M3核心,STM32主要采用一代M3核心,下圖是ARM公司的M3核心勘誤表,GD使用的核心隻有752419這一個BUG。
2、主頻
使用HSE(高速外部時鐘):GD32的主頻最大108M,STM32的主頻最大72M
使用HSI(高速内部時鐘):GD32的主頻最大108M,STM32的主頻最大64M
主頻大意味着單片機代碼運作的速度會更快,項目中如果需要進行刷屏,開方運算,電機控制等操作,GD是一個不錯的選擇。
3、供電
外部供電:GD32外部供電範圍是2.63.6V,STM32外部供電範圍是23.6V。GD的供電範圍比STM32相對要窄一點。
核心電壓:GD32核心電壓是1.2V,STM32核心電壓是1.8V。GD的核心電壓比STM32的核心電壓要低,是以GD的晶片在運作的時候運作功耗更低。
4、Flash差異
GD32的Flash是自主研發的,和STM32的不一樣。
GD Flash執行速度:GD32 Flash中程式執行為0等待周期。
STM32 Flash執行速度:ST系統頻率不通路flash等待時間關系:0等待周期,當0<SYSCLK<24MHz,1等待周期,當24MHz<SYSCLK≤48MHz,2等待周期,當48MHz<SYSCLK≤72MHz。
Flash擦除時間:GD擦除的時間要久一點,官方給出的資料是這樣的:GD32F103/101系列Flash 128KB 及以下的型号, Page Erase 典型值100ms, 實際測量60ms 左右。對應的ST 産品Page Erase 典型值 20~40ms。
5、功耗
從下面的表可以看出GD的産品在相同主頻情況下,GD的運作功耗比STM32小,但是在相同的設定下GD的停機模式、待機模式、睡眠模式比STM32還是要高的。
6、序列槽
GD在連續發送資料的時候每兩個位元組之間會有一個Bit的Idle,而STM32沒有,如下圖。
GD的序列槽在發送的時候停止位隻有1/2兩種停止位模式。STM32有0.5/1/1.5/2四種停止位模式。
GD 和STM32 USART的這兩個差異對通信基本沒有影響,隻是GD的通信時間會加長一點。
7、ADC差異
GD的輸入阻抗和采樣時間的設定和ST有一定差異,相同配置GD采樣的輸入阻抗相對來說要小。具體情況見下表這是跑在72M的主頻下,ADC的采樣時鐘為14M的輸入阻抗和采樣周期的關系:
8、FSMC
STM32隻有100Pin以上的大容量(256K及以上)才有FSMC,GD32所有的100Pin或100Pin以上的都有FSMC。
9、103系列RAM&FLASH大小差别
GD103系列和ST103系列的ram和flash對比如下圖:
10、105&107系列STM32和GD的差别
GD的105/107的選擇比ST的多很多,具體見下表:
11、抗幹擾能力
關于這一點,官方沒有給出,我也是在做項目的時候偶然發現的,項目原本是用STM32F103C8T6,後來換成GD F103C8T6,這兩個晶片的引腳完全一緻,然後單片機用了的兩個鄰近的引腳作為SPI的時鐘引腳和資料輸出引腳,然後發現STM32的SPI能正常通訊,GD的不行,經過檢查發現PCB闆SPI的銅線背面有兩根IIC的銅線經過,信号應該是受到影響了。
用示波器看了一下引腳的電平,發現确實是,STM32和GD的資料引腳波形都不正常,但是STM32的波形要好很多,波形雖然差了點,但是SPI通訊依然正常。
而GD則不能正常通訊了。然後我又把SPI的通訊速率減慢,發現STM32的資料引腳很快就恢複正常波形了,而GD的依然差,直到速率降到很低才恢複正常。初步懷疑是STM32内部對引腳有做一些濾波的電路,而GD則沒有。
雖然我用的這個電路闆本身布線有些不合理,但是在同樣惡劣的環境下,STM32依然保證了通訊的正常,而GD不行,這在一定程度上說明了GD的抗幹擾能力不如STM32。