GPIO基礎(chǔ)知識的概括?。ㄗ钊Y料)
GPIO 是通用輸入/輸出端口的簡稱,本文以STM32為例進行說明,其他的單片機功能上都是大同小異,學會STM32的GPIO,我們可以觸類旁通。
GPIO 的引腳與外部硬件設(shè)備連接,可實現(xiàn)與外部通訊、控制外部硬件或者采集外部硬件數(shù)據(jù)的功能。
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 內(nèi)部邏輯圖
保護二極管:IO引腳上下兩邊兩個二極管用于防止引腳外部過高、過低的電壓輸入。
當引腳電壓高于VDD時,上方的二極管導通;當引腳電壓低于VSS時,下方的二極管導通,防止不正常電壓引入芯片導致芯片燒毀。也叫鉗位二極管。
P-MOS管和N-MOS管:
由P-MOS管和N-MOS管組成的單元電路使得GPIO具有“推挽輸出”和“開漏輸出”的模式。
TTL肖特基觸發(fā)器:
信號經(jīng)過觸發(fā)器后,模擬信號轉(zhuǎn)化為0和1的數(shù)字信號。但是,當GPIO引腳作為ADC采集電壓的輸入通道時,用其“模擬輸入”功能,此時信號不再經(jīng)過觸發(fā)器進行TTL電平轉(zhuǎn)換。(可以理解為一個比較器,大于某個值是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
開漏輸出用于輸出低電平,高電平靠外部上拉電阻電壓決定,適用于快速切換電壓的外部電路結(jié)構(gòu)。
6、推挽輸出GPIO_Mode_Out_PP
推挽輸出用于輸出高低電平,是最常用的模式。
7、復用開漏輸出GPIO_Mode_AF_OD
復用 IIC 時候選擇復用開漏輸出,因為開漏輸出可以“線與”。
8、復用推挽輸出GPIO_Mode_AF_PP
其他復用比如 SPI 等可以選擇復用推挽輸出。
什么是推挽結(jié)構(gòu)和推挽電路?
推挽結(jié)構(gòu)一般是指兩個參數(shù)相同的三極管或MOS管分別受兩互補信號的控制,總是在一個三極管或MOS管導通的時候另一個截止。高低電平由輸出電平?jīng)Q定。
推挽輸出和開漏輸出
左側(cè)為推挽輸出,可以輸出高低電平。右側(cè)為開漏輸出,只能輸出低電平,高電平靠外部上拉電阻決定。
圖中所示為三極管,也可以叫開集輸出(集電極開路輸出),開漏輸出是當這個管子為MOS管,漏極開路輸出,叫開漏輸出。
推挽輸出:上面三級管導通,輸出高電平,下面三極管導通,輸出低電平。
開漏輸出:三極管導通輸出低電平,三極管截止是高阻態(tài),電平由外部上拉電阻決定。
推挽輸出高電平(向負載推流):
推挽輸出低電平(從負載拉流):
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。