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)注
6035文章
44554瀏覽量
634631 -
mcu
+關(guān)注
關(guān)注
146文章
17123瀏覽量
350980 -
嵌入式
+關(guān)注
關(guān)注
5082文章
19104瀏覽量
304798 -
GPIO
+關(guān)注
關(guān)注
16文章
1204瀏覽量
52051 -
GD32
+關(guān)注
關(guān)注
7文章
403瀏覽量
24328
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論