一、前言
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ō)了,下面我給大家講一下不同的地方。
二、區(qū)別
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、FSMC
STM32只有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、抗干擾能力
關(guān)于這一點(diǎn),官方?jīng)]有給出,我也是在做項(xiàng)目的時(shí)候偶然發(fā)現(xiàn)的,項(xiàng)目原本是用STM32F103C8T6,后來(lái)?yè)Q成GD F103C8T6,這兩個(gè)芯片的引腳完全一致,然后單片機(jī)用了的兩個(gè)鄰近的引腳作為SPI的時(shí)鐘引腳和數(shù)據(jù)輸出引腳,然后發(fā)現(xiàn)STM32的SPI能正常通訊,GD的不行,經(jīng)過(guò)檢查發(fā)現(xiàn)PCB板SPI的銅線背面有兩根IIC的銅線經(jīng)過(guò),信號(hào)應(yīng)該是受到影響了。用示波器看了一下引腳的電平,發(fā)現(xiàn)確實(shí)是,STM32和GD的數(shù)據(jù)引腳波形都不正常,但是STM32的波形要好很多,波形雖然差了點(diǎn),但是SPI通訊依然正常。而GD則不能正常通訊了。然后我又把SPI的通訊速率減慢,發(fā)現(xiàn)STM32的數(shù)據(jù)引腳很快就恢復(fù)正常波形了,而GD的依然差,直到速率降到很低才恢復(fù)正常。初步懷疑是STM32內(nèi)部對(duì)引腳有做一些濾波的電路,而GD則沒(méi)有。雖然我用的這個(gè)電路板本身布線有些不合理,但是在同樣惡劣的環(huán)境下,STM32依然保證了通訊的正常,而GD不行,這在一定程度上說(shuō)明了GD的抗干擾能力不如STM32。
好了,關(guān)于GD32和STM32的區(qū)別就講到這里,后續(xù)我還會(huì)繼續(xù)給大家講我將STM32移植到GD32的過(guò)程和一些細(xì)節(jié)。如果還有什么問(wèn)題或者文中有錯(cuò)誤的地方,請(qǐng)一定要聯(lián)系我,謝謝!