今天給大家講解一下 GPIO 基礎(chǔ),參考資料: STM32F1xx 官方資料: 《STM32中文參考手冊V10》-第8章通用和復(fù)用功能IO(GPIO和AFIO) GPIO 是通用輸入/輸出端口的簡稱,,是 STM32 可控制的引腳,。GPIO 的引腳與外部硬件設(shè)備連接,可實現(xiàn)與外部通訊,、控制外部硬件或者采集外部硬件數(shù)據(jù)的功能,。 STM32的八種GPIO口模式 1) GPIO_Mode_AIN 模擬輸入; STM32 普通 GPIO 內(nèi)部邏輯圖 保護二極管:IO引腳上下兩邊兩個二極管用于防止引腳外部過高,、過低的電壓輸入,。當(dāng)引腳電壓高于VDD時,上方的二極管導(dǎo)通,;當(dāng)引腳電壓低于VSS時,,下方的二極管導(dǎo)通,防止不正常電壓引入芯片導(dǎo)致芯片燒毀,。也叫鉗位二極管,。 P-MOS管和N-MOS管:由P-MOS管和N-MOS管組成的單元電路使得GPIO具有“推挽輸出”和“開漏輸出”的模式。 TTL肖特基觸發(fā)器:信號經(jīng)過觸發(fā)器后,,模擬信號轉(zhuǎn)化為0和1的數(shù)字信號,。但是,當(dāng)GPIO引腳作為ADC采集電壓的輸入通道時,,用其“模擬輸入”功能,,此時信號不再經(jīng)過觸發(fā)器進行TTL電平轉(zhuǎn)換。(可以理解為一個比較器,,大于某個值是1,,小于某個值是0) 查看《STM32中文參考手冊V10》中的GPIO的表格時,會看到有“FT”一列,,這代表著這個GPIO口時兼容3.3V和5V的,;如果沒有標(biāo)注“FT”,就代表著不兼容5V,。比如STM32F103VET6的GPIOE口那一組全部兼容5V,,其他組是部分兼容5V。 備注:導(dǎo)通路徑為黃色部分,。 1,、模擬輸入 GPIO_Mode_AIN 此模式可以檢測外部輸入的模擬電壓,可以檢測電壓值,,只要不高于Vcc即可,。 2、浮空輸入 GPIO_MODE_IN_FLOATING 此模式最常用的是檢測按鍵,,可以接收高低電平,。但容易被干擾。 3,、下拉輸入GPIO_Mode_IPD 此模式檢測到電平默認(rèn)為低,,可以檢測到由低到高的電平變化。 4,、上拉輸入GPIO_Mode_IPU 此模式檢測到電平默認(rèn)為高,,可以檢測到由高到低的電平變化,。 5、開漏輸出GPIO_Mode_Out_OD 開漏輸出用于輸出低電平,,高電平靠外部上拉電阻電壓決定,,適用于快速切換電壓的外部電路結(jié)構(gòu)。 6,、推挽輸出GPIO_Mode_Out_PP 推挽輸出用于輸出高低電平,,是最常用的模式。 7,、復(fù)用開漏輸出GPIO_Mode_AF_OD 復(fù)用 IIC 時候選擇復(fù)用開漏輸出,,因為開漏輸出可以“線與”。 8,、復(fù)用推挽輸出GPIO_Mode_AF_PP 其他復(fù)用比如 SPI 等可以選擇復(fù)用推挽輸出,。 什么是推挽結(jié)構(gòu)和推挽電路? 推挽結(jié)構(gòu)一般是指兩個參數(shù)相同的三極管或MOS管分別受兩互補信號的控制,,總是在一個三極管或MOS管導(dǎo)通的時候另一個截止,。高低電平由輸出電平?jīng)Q定。 推挽輸出和開漏輸出 左側(cè)為推挽輸出,,可以輸出高低電平。右側(cè)為開漏輸出,,只能輸出低電平,,高電平靠外部上拉電阻決定。 圖中所示為三極管,,也可以叫開集輸出(集電極開路輸出),,開漏輸出是當(dāng)這個管子為MOS管,漏極開路輸出,,叫開漏輸出,。 推挽輸出:上面三級管導(dǎo)通,輸出高電平,,下面三極管導(dǎo)通,,輸出低電平。 開漏輸出:三極管導(dǎo)通輸出低電平,,三極管截止是高阻態(tài),,電平由外部上拉電阻決定。 推挽輸出高電平(向負(fù)載推流): 推挽輸出低電平(從負(fù)載拉流): ·················· END ·················· |
|