STM32筆記-GPIO

基本結構分析
下面我們按圖中的編號對 GPIO 端口的結構部件進行說明。
1. 保護二極管及上、下拉電阻
引腳的兩個保護二級管可以防止引腳外部過高或過低的電壓輸入,當引腳電壓高於
VDD 時, 上方的二極管導通,當引腳電壓低於 VSS 時,下方的二極管導通,防止不正常電
壓引入芯片導致芯片燒燬。儘管有這樣的保護,並不意味着 STM32 的引腳能直接外接大功
率驅動器件,如直接驅動電機,強制驅動要麼電機不轉,要麼導致芯片燒壞,必須要加大
功率及隔離電路驅動。
2. P-MOS 管和 N-MOS 管
GPIO 引腳線路經過兩個保護二極管後,向上流向“輸入模式”結構,向下流向“輸出
模式”結構。先看輸出模式部分,線路經過一個由 P-MOS 和 N-MOS 管組成的單元電路。
這個結構使 GPIO 具有了“推輓輸出”和“開漏輸出”兩種模式。
所謂的推輓輸出模式,是根據這兩個 MOS 管的工作方式來命名的。在該結構中輸入
高電平時,經過反向後,上方的 P-MOS 導通,下方的 N-MOS 關閉,對外輸出高電平;而
在該結構中輸入低電平時,經過反向後, N-MOS 管導通, P-MOS 關閉,對外輸出低電平。
當引腳高低電平切換時,兩個管子輪流導通, P 管負責灌電流, N 管負責拉電流,使其負
載能力和開關速度都比普通的方式有很大的提高。推輓輸出的低電平爲 0 伏,高電平爲 3.3
伏,具體參考圖 8-2,它是推輓輸出模式時的等效電路。

而在開漏輸出模式時,上方的 P-MOS 管完全不工作。如果我們控制輸出爲 0,低電平,
則 P-MOS 管關閉, N-MOS 管導通,使輸出接地,若控制輸出爲 1 (它無法直接輸出高電平)
時,則 P-MOS 管和 N-MOS 管都關閉,所以引腳既不輸出高電平,也不輸出低電平,爲高
阻態。爲正常使用時必須外部接上拉電阻,參考圖 8-3 中等效電路。它具有“線與”特性,
也就是說,若有很多個開漏模式引腳連接到一起時,只有當所有引腳都輸出高阻態,才由
上拉電阻提供高電平,此高電平的電壓爲外部上拉電阻所接的電源的電壓。若其中一個引
腳爲低電平,那線路就相當於短路接地,使得整條線路都爲低電平, 0 伏。
推輓輸出模式一般應用在輸出電平爲 0 和 3.3 伏而且需要高速切換開關狀態的場合。
在 STM32 的應用中,除了必須用開漏模式的場合,我們都習慣使用推輓輸出模式。
開漏輸出一般應用在 I2C、 SMBUS 通訊等需要“線與”功能的總線電路中。除此之外,
還用在電平不匹配的場合,如需要輸出 5 伏的高電平,就可以在外部接一個上拉電阻, 上
拉電源爲 5 伏, 並且把 GPIO 設置爲開漏模式,當輸出高阻態時,由上拉電阻和電源向外
輸出 5 伏的電平,具體見圖 8-4。

1. 輸入模式(模擬/浮空/上拉/下拉)

在輸入模式時, 施密特觸發器打開, 輸出被禁止,可通過輸入數據寄存器 GPIOx_IDR
讀取 I/O 狀態。 其中輸入模式,可設置爲上拉、下拉、 浮空和模擬輸入四種。 上拉和下拉
輸入很好理解, 默認的電平由上拉或者下拉決定。浮空輸入的電平是不確定的,完全由外
部的輸入決定,一般接按鍵的時候用的是這個模式。模擬輸入則用於 ADC 採集。

2. 輸出模式(推輓/開漏)

在輸出模式中, 推輓模式時雙 MOS 管以輪流方式工作,輸出數據寄存器 GPIOx_ODR
可控制 I/O 輸出高低電平。開漏模式時,只有 N-MOS 管工作,輸出數據寄存器可控制 I/O
輸出高阻態或低電平。 輸出速度可配置,有 2MHz\10MHz\50MHz 的選項。此處的輸出速
度即 I/O 支持的高低電平狀態最高切換頻率,支持的頻率越高,功耗越大,如果功耗要求
不嚴格,把速度設置成最大即可。
在輸出模式時施密特觸發器是打開的,即輸入可用,通過輸入數據寄存器 GPIOx_IDR
可讀取 I/O 的實際狀態。

3. 複用功能(推輓/開漏)

複用功能模式中,輸出使能,輸出速度可配置,可工作在開漏及推輓模式,但是輸出
信號源於其它複用外設,輸出數據寄存器 GPIOx_ODR 無效;輸入可用,通過輸入數據寄存器
可獲取 I/O 實際狀態,但一般直接用複用外設的寄存器來獲取該數據信號。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章