GPIO 基礎知識的概括!(最全資料)

GPIO 是通用輸入 / 輸出端口的簡稱,本文以 STM32 爲例進行說明,其他的單片機功能上都是大同小異,學會 STM32 的 GPIO,我們可以觸類旁通。

GPIO 的引腳與外部硬件設備連接,可實現與外部通訊、控制外部硬件或者採集外部硬件數據的功能。

STM32 的八種 GPIO 口模式

1) GPIO_Mode_AIN 模擬輸入;
2) GPIO_Mode_IN_FLOATING 浮空輸入;
3) GPIO_Mode_IPD 下拉輸入;
4) GPIO_Mode_IPU 上拉輸入;

5) GPIO_Mode_Out_OD 開漏輸出;
6) GPIO_Mode_Out_PP 推輓輸出;
7) GPIO_Mode_AF_OD 複用開漏輸出;
8) GPIO_Mode_AF_PP 複用推輓輸出。

STM32 普通 GPIO 內部邏輯圖

保護二極管:IO 引腳上下兩邊兩個二極管用於防止引腳外部過高、過低的電壓輸入。

當引腳電壓高於 VDD 時,上方的二極管導通;當引腳電壓低於 VSS 時,下方的二極管導通,防止不正常電壓引入芯片導致芯片燒燬。也叫鉗位二極管。

P-MOS 管和 N-MOS 管

由 P-MOS 管和 N-MOS 管組成的單元電路使得 GPIO 具有 “推輓輸出” 和“開漏輸出”的模式。

TTL 肖特基觸發器

信號經過觸發器後,模擬信號轉化爲 0 和 1 的數字信號。但是,當 GPIO 引腳作爲 ADC 採集電壓的輸入通道時,用其 “模擬輸入” 功能,此時信號不再經過觸發器進行 TTL 電平轉換。(可以理解爲一個比較器,大於某個值是 1,小於某個值是 0)

查看《STM32 中文參考手冊 V10》中的 GPIO 的表格時,會看到有 “FT” 一列,這代表着這個 GPIO 口時兼容 3.3V 和 5V 的;

如果沒有標註 “FT”,就代表着不兼容 5V。比如 STM32F103VET6 的 GPIOE 口那一組全部兼容 5V,其他組是部分兼容 5V。

備註:導通路徑爲黃色部分。

1、模擬輸入 GPIO_Mode_AIN

此模式可以檢測外部輸入的模擬電壓,可以檢測電壓值,只要不高於 Vcc 即可。

2、浮空輸入 GPIO_MODE_IN_FLOATING

此模式最常用的是檢測按鍵,可以接收高低電平。但容易被幹擾。

3、下拉輸入 GPIO_Mode_IPD

此模式檢測到電平默認爲低,可以檢測到由低到高的電平變化。

4、上拉輸入 GPIO_Mode_IPU

此模式檢測到電平默認爲高,可以檢測到由高到低的電平變化。

5、開漏輸出 GPIO_Mode_Out_OD

開漏輸出用於輸出低電平,高電平靠外部上拉電阻電壓決定,適用於快速切換電壓的外部電路結構。

6、推輓輸出 GPIO_Mode_Out_PP

推輓輸出用於輸出高低電平,是最常用的模式

7、複用開漏輸出 GPIO_Mode_AF_OD

複用 IIC 時候選擇複用開漏輸出,因爲開漏輸出可以 “線與”。

8、複用推輓輸出 GPIO_Mode_AF_PP

其他複用比如 SPI 等可以選擇複用推輓輸出。

什麼是推輓結構和推輓電路?

推輓結構一般是指兩個參數相同的三極管或 MOS 管分別受兩互補信號的控制,總是在一個三極管或 MOS 管導通的時候另一個截止。高低電平由輸出電平決定。

推輓輸出和開漏輸出

左側爲推輓輸出,可以輸出高低電平。右側爲開漏輸出,只能輸出低電平,高電平靠外部上拉電阻決定。

圖中所示爲三極管,也可以叫開集輸出(集電極開路輸出),開漏輸出是當這個管子爲 MOS 管,漏極開路輸出,叫開漏輸出。

推輓輸出:上面三級管導通,輸出高電平,下面三極管導通,輸出低電平。

開漏輸出:三極管導通輸出低電平,三極管截止是高阻態,電平由外部上拉電阻決定。

推輓輸出高電平(向負載推流):

推輓輸出低電平(從負載拉流):


本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/nTTheBKBScVfXSNGtmNZtg