1.前言
本文是專門為基于GD32 MCU開發(fā)的工程設(shè)計(jì)人員提供,主要介紹了GPIO的功能配置、內(nèi)部結(jié)構(gòu)以及在不同場(chǎng)景使用時(shí)的注意事項(xiàng),旨在幫助GD32 MCU開發(fā)者優(yōu)化對(duì)通用型輸入輸出端口(GPIO)的使用,正確快速的使用GD32 MCU進(jìn)行產(chǎn)品開發(fā)。
GPIO,通用型輸入輸出端口的簡(jiǎn)稱,可以通過軟件配置其輸出或者輸入,GD32 的 GPIO 引腳與外部設(shè)備連接,從而實(shí)現(xiàn)與外部通信,控制以及信號(hào)輸入的功能,是 GD32 MCU 中很常見,使用最廣泛的模塊。
每個(gè) GPIO 引腳可以由軟件配置為輸出(推挽或開漏)、輸入、外設(shè)備用功能或者模擬模式。
每個(gè) GPIO 引腳都可以配置為上拉、下拉或浮空模式或無上拉/下拉。
GD32 MCU GPIO 主要特征有:
? 輸入/輸出方向控制;
? 施密特觸發(fā)器輸入功能;
? 每個(gè)引腳都具有弱上拉/下拉功能;
? 推挽/開漏輸出使能控制;
? 置位/復(fù)位輸出使能;
? 可編程觸發(fā)沿的外部中斷—使用EXTI配置寄存器;
? 模擬輸入/輸出配置;
? 備用功能輸入/輸出配置;
? 端口鎖定配置。
對(duì)于 GD32 某些系列 MCU 的 GPIO 可能具有更多功能,如時(shí)鐘、I2C、SPI、CAN、USART、USB、ADC、DAC 等,在進(jìn)行電路板設(shè)計(jì)前應(yīng)查看該系列的數(shù)據(jù)手冊(cè)與用戶手冊(cè),對(duì)比所使用的 GPIO 是否滿足需求。
2.GPIO 結(jié)構(gòu)
在 GD32 MCU 中,通常有兩種類型的 GPIO,非 5V 耐受 IO 以及 5V 耐受 IO(部分 MCU 沒有 5VT 引腳,如 GD32A503xx 系列),兩種類型的 IO 在結(jié)構(gòu)上略有區(qū)別。如圖 2-1. 標(biāo)準(zhǔn) IO基本結(jié)構(gòu)圖所示為一個(gè)標(biāo)準(zhǔn) IO 口的基本結(jié)構(gòu)圖:
圖 2-1. 標(biāo)準(zhǔn) IO 基本結(jié)構(gòu)圖

I/O pin 表示的芯片的 I/O pad,與外部電路相連接,其他部分電路都是芯片的內(nèi)部電路。其中框圖的上半部分表示 IO 的輸出部分電路,當(dāng) IO 使用其備用功能連接內(nèi)部其他外設(shè)時(shí),也會(huì)共用相關(guān)功率輸出部分電路。框圖的下半部分表示 IO 的輸入電路部分,作為備用功能連接內(nèi)部其他外設(shè)時(shí),同樣也會(huì)共用輸入部分電路,如施密特觸發(fā)器。
框圖的中間部分如紅框 4 內(nèi)的電路表示模擬輸入輸出通道,模擬通道輸出時(shí)(如 DAC 輸出)不經(jīng)過功率輸出電路,輸入時(shí)也不經(jīng)過施密特輸入電路,直接將外部電路通過 IO pin 與內(nèi)部的模擬外設(shè)直接連接。
紅框 3 表示的是 IO 輸出時(shí)的主要功率電路,配置相關(guān)的控制寄存器,可以控制上、下兩個(gè) MOS 管導(dǎo)通以實(shí)現(xiàn)推挽輸出或者是開漏輸出。
紅框 2 表示 IO 口的內(nèi)部上拉或者下拉電路,通過相關(guān)寄存器的配置可以實(shí)現(xiàn)輸入口的內(nèi)部上拉或者內(nèi)部下拉,上拉/下拉電阻的阻值可以參考數(shù)據(jù)手冊(cè),典型值為 40kΩ,少數(shù)引腳上下拉電阻非 40 kΩ,如 GD32F425xx 的 PA10 引腳上下拉電阻為 10 kΩ,詳細(xì)數(shù)據(jù)可查看數(shù)據(jù)手冊(cè)中 GPIO characteristic 章節(jié)。
紅框 1 中表示的 ESD 保護(hù)電路。
非 5VT IO 的 ESD 保護(hù)電路如圖 2-2. 非 5VT IO 引腳基本結(jié)構(gòu)圖所示,ESD 保護(hù)電路在 IO對(duì) VDD 和 VSS 分別形成兩個(gè)二極管,顯然,如果 IO 上的電壓比 VDD 的電壓大于二極管的正向?qū)▔航担蛘?IO 上電壓比 VSS 電位低,且壓差大于二極管的正向?qū)妷海瑒t會(huì)產(chǎn)生從 IO到 VDD,或者從 VSS 到 IO 的電流。
5VT IO 的 ESD 保護(hù)電路如圖 2-3. 5VT IO 引腳基本結(jié)構(gòu)圖所示,5VT IO 引腳沒有連接到電源(VDD)的內(nèi)部保護(hù)二極管。
因此,在實(shí)際使用中若存在引腳先上電,MCU 后上電的情況,優(yōu)先選擇使用 5VT 的引腳作為與外部連接先上電引腳,避免由于引腳漏電造成 IO 引腳拉低;若必須選擇標(biāo)準(zhǔn) IO 引腳,需采用比如三極管等隔離措施,防止引腳漏電。
圖 2-2. 非 5VT IO 引腳基本結(jié)構(gòu)圖

圖 2-3. 5VT IO 引腳基本結(jié)構(gòu)圖

注意:5VT IO 與非 5VT IO 內(nèi)部結(jié)構(gòu)有部分區(qū)別。
3.典型應(yīng)用場(chǎng)景與注意事項(xiàng)
不同類型的 IO 在使用時(shí)有一些注意事項(xiàng),接下來分別從輸入與輸出兩個(gè)角度來描繪下不同類型 IO 的典型應(yīng)用場(chǎng)景與特性以及注意事項(xiàng)。
3.1.IO 輸入
首先是 IO 口的輸入電壓范圍,輸入耐壓值表示 IO 口所能容忍的輸入電壓范圍,部分 GD32MCU 含有 5VT IO 與非 5VT IO,5VT IO 與非 5VT IO 有著不同的特性,如用戶手冊(cè)中的表 3-1.絕對(duì)最大額定值所示。

針對(duì) IO 口的輸入場(chǎng)景,我們有幾點(diǎn)需要注意:
1. 對(duì)于 5VT IO,當(dāng) VDD=0 時(shí)(即 MCU 未上電時(shí)),其引腳輸入電壓不能超過 3.6V;
2. 我們需要根據(jù) IO 口外部輸入信號(hào)的電壓值范圍來慎重選擇 5VT IO 還是非 5VT IO,如果輸入信號(hào)已經(jīng)大于 5.5V 了,就要將信號(hào)調(diào)理成適宜的范圍再送到 MCU 的 IO 口;
3. GPIO 輸入低電平判定范圍為≤0.3 VDD ,GPIO 輸入高電平判定范圍為≥0.7VDD ;
4. 根據(jù)前面描述不同類型 IO 口的典型結(jié)構(gòu),如果非 5VT IO 上的電壓比 VDD 電壓大 0.3V 以上,則會(huì)可能使 ESD 保護(hù)電路中 IO 對(duì) VDD 的二極管導(dǎo)通造成漏電,尤其是在 MCU 未上電,而 IO 口就已經(jīng)有電平時(shí)的情景,此時(shí),如果選擇 5VT IO 可以有效規(guī)避從 IO 向 VDD漏電的情況;典型的,如果 IO 接入的是 I2C 總線,我們就需要選擇 5VT 引腳;
5. MCU 所有的 IO 在上電完成還未進(jìn)行其他配置時(shí),均默認(rèn)工作在浮空輸入模式,其中調(diào)試口為上拉或下拉模式,具體的上拉還是下拉請(qǐng)參照用戶手冊(cè)。因此,在一些需要產(chǎn)生固定電平的場(chǎng)景中,如果 MCU 從待機(jī)模式復(fù)位,則需要考慮這些 IO 口的默認(rèn)輸入上下拉狀態(tài),且在程序重新配置這些 IO 的狀態(tài)之前,默認(rèn)狀態(tài)不會(huì)變化;
6. 為了獲得更低的功耗水平,尤其是在睡眠模式和深度睡眠模式中,需要將未使用的 IO 配置成模擬輸入,或者配置為浮空輸入狀態(tài)的同時(shí)外部加上下拉,或者設(shè)置為內(nèi)部上拉或下拉。需注意設(shè)置內(nèi)部上拉時(shí),外部不可再硬件下拉,避免額外功耗,同理,內(nèi)部下拉時(shí),外部不可硬件上拉(這里未使用的 IO 也包括在本封裝上未引出來的 IO)。對(duì)于 GD32 低功耗 MCU 產(chǎn)品,在運(yùn)行模式下,如前描述的設(shè)置也會(huì)獲得最好的功耗表現(xiàn);
7. 5VT IO 只有在輸入模式下才可輸入最大 5.5V 電壓。當(dāng)輸出模式被啟用時(shí),5VT IO 不再可以承受 5.5V 電壓。有關(guān) I/O 輸入電壓的詳細(xì)信息,請(qǐng)參閱數(shù)據(jù)表通用操作條件表中的 VIN參數(shù);
8. 只有在引腳上沒有啟用模擬功能時(shí),5VT IO 才可輸入最大 5.5V 電壓。如果在 5VT IO 上啟用了一些模擬輸入功能(ADC 輸入有源,COMP 輸入,OPAMP 輸入),那么引腳上的最大工作電壓不能超過 min(VDDA, VREFP) + 0.3 V。
3.2.IO 輸出
在 IO 輸出的場(chǎng)景我們也有一些要點(diǎn)需要注意,
1. 開漏輸出電壓與輸出帶載電流有非常顯著的關(guān)系,通常 IO 在輸出高時(shí),如果所帶負(fù)載越大,則輸出的高電平就會(huì)被往下拉的越低,同理,如果 IO 在輸出低時(shí),流進(jìn) IO 的電流越大,則 IO 輸出的低電平就會(huì)被往上拉的越高;
2. 對(duì)于 MCU 中存在備份域的型號(hào),其中有部分 IO 是工作在備份域電源中的,這些 IO 的帶載能力有限,建議這些 IO 的 IO speed 參數(shù)設(shè)置為最低速度(一般為 2MHz)。如 GD32F4xx系列中的 PC13、PC14、PC15、PI8 四個(gè)引腳,不同系列驅(qū)動(dòng)能力較弱的引腳不同,詳細(xì)信息可在該系列數(shù)據(jù)手冊(cè)中查詢;
3. GPIO 可通過電流與 IO 配置速度有關(guān),目前所有 GD32 MCU IO 最大可通過電流均為 25mA(工作在備份域的引腳除外),GPIO 拉電流以及灌電流均不可超過 25 mA。當(dāng) GPIO速度配置較低時(shí),其拉電流與灌電流能力可能達(dá)不到 25 mA;
4. 部分 GD32 MCU 包含 I/O 補(bǔ)償單元,如 E50x 系列。默認(rèn)情況下,I/O 補(bǔ)償單元是不使用的,當(dāng) I/O 端口輸出速度大于 50MHz 時(shí),建議使用 I/O 補(bǔ)償單元對(duì) I/O 端口進(jìn)行斜率控制,從而降低 I/O 端口噪聲對(duì)工作電源的影響;
5. IO 在高低電平轉(zhuǎn)換時(shí)過沖會(huì)隨著 IO 口速度增大而增大,可通過降低 IO 口速度來減少過沖;
6. GPIO 輸出的高低電平并非絕對(duì)的零或者 VDD,而會(huì)隨著 IO 配置的速度、VDD 電壓、輸出電流的大小而變化。如表 3-2. GD32F425xx GPIO DC 特性所示為 GD32F425xx GPIO 輸出高低電平隨這些變量變化的數(shù)據(jù)表。

3.3.其他注意事項(xiàng)
為了更好的提升 GD32 MCU 在一些典型應(yīng)用場(chǎng)景下的性能,在使用 GD32 MCU 的 GPIO 時(shí)還需注意以下事項(xiàng):
1. 部分系列 GD32 MCU ADC 輸入引腳為標(biāo)準(zhǔn) IO 引腳,需注意避免 ADC 輸入電壓超過VDD+0.3V 的情況,否則可能由于漏電造成 ADC 采樣異常;在使用 ADC 模塊時(shí),所有ADC 引腳均不可引入負(fù)電壓,否則將導(dǎo)致 ADC 采樣不準(zhǔn);
2. VBAT 引腳允許從外部電壓源(電池或電容)為 GD32 備份域供電。當(dāng) GD32 微控制器僅通過VBAT 引腳供電時(shí),只有在備份域里的 GPIO 才能工作。備份域的 GPIO 驅(qū)動(dòng)能力較弱,且不同系列的備份域 GPIO 不同,可在該系列的用戶手冊(cè)中查看。對(duì)于沒有外部電池的應(yīng)用,建議將 VBAT 引腳通過 100nF 的外部陶瓷去耦電容接地后連接到 VDD 引腳上;
3. 為提高 EMC 性能以及避免浮空輸入 IO 漏電風(fēng)險(xiǎn),未使用的 IO 口引腳建議硬件上拉或者是下拉。IO 的輸入電路可以簡(jiǎn)化為圖 3-1. IO 輸入電路簡(jiǎn)化圖,Pxx 表示 MCU 的某一個(gè)引腳。當(dāng)IO 配置為浮空輸入模式時(shí),SW1 和 SW2 導(dǎo)通。如果 Pxx 沒有外部電壓驅(qū)動(dòng),則 Pxx 的電壓為 VSS~VDD 之間的任意電壓值。假設(shè)圖 3-1. IO 輸入電路簡(jiǎn)化圖中 MN 的閾值電壓是VTHN,MP 的閾值電壓是 VTHP,當(dāng) Pxx 的電壓處在 VTHN~(VDD-VTHP)時(shí),MN 和 MP 同時(shí)開啟,VDD 到 VSS 之間可能會(huì)有非常大的漏電。
當(dāng) IO 配置為上拉模式、下拉模式或模擬模式時(shí),MP 和 MN 不會(huì)同時(shí)導(dǎo)通,VDD 到 VSS之間不會(huì)有漏電。
圖 3-1. IO 輸入電路簡(jiǎn)化圖

4. 多組中同一標(biāo)號(hào) PIN 僅可配置一個(gè) IO 口為外部中斷,例:PA0、PB0、PC0 僅支持三個(gè)中的其中一個(gè) IO 口產(chǎn)生外部中斷,不支持三個(gè)同為外部中斷模式;
本教程由GD32 MCU方案商聚沃科技原創(chuàng)發(fā)布,了解更多GD32 MCU教程,關(guān)注聚沃科技官網(wǎng)
-
單片機(jī)
+關(guān)注
關(guān)注
6063文章
44928瀏覽量
647143 -
mcu
+關(guān)注
關(guān)注
146文章
17851瀏覽量
360680 -
嵌入式
+關(guān)注
關(guān)注
5141文章
19542瀏覽量
315166 -
GPIO
+關(guān)注
關(guān)注
16文章
1276瀏覽量
53601 -
GD32
+關(guān)注
關(guān)注
7文章
419瀏覽量
25176
發(fā)布評(píng)論請(qǐng)先 登錄
GD32 MCU 入門教程】GD32 MCU 常見外設(shè)介紹(12)FMC 模塊介紹

GD32與STM32的異同點(diǎn)
GD32大容量產(chǎn)品軟件的移植注意事項(xiàng)

AN092GD32MCU GPIO結(jié)構(gòu)與使用注意事項(xiàng)

兆易創(chuàng)新GD32 MCU選型手冊(cè),適用于GD32全系列MCU
不同型號(hào)的GD32 MCU如何區(qū)分?

GD32 MCU如何將燒錄口配置為GPIO使用?

【GD32 MCU 入門教程】一、GD32 MCU 開發(fā)環(huán)境搭建(1)使用Keil開發(fā)GD32

【GD32 MCU 入門教程】一、GD32 MCU 開發(fā)環(huán)境搭建(2)使用 IAR 開發(fā) GD32

【GD32 MCU 入門教程】一、GD32 MCU 開發(fā)環(huán)境搭建(3)使用 Embedded Builder 開發(fā) GD32

【GD32 MCU 入門教程】GD32 MCU 常見外設(shè)介紹(14)RTC 模塊介紹

GD32單片機(jī)GPIO結(jié)構(gòu)及注意事項(xiàng)

評(píng)論