GPIO的8種工作模式詳解
- 1.GPIO浮空輸入_IN_FLOATING模式工作原
- 2.GPIO帶上拉輸入_IPU 模式工作原理
- 3.GPIO帶下拉輸入_IPD 模式工作原理
- 4.GPIO模拟輸入_AIN 模式工作原理
- 5.GPIO開漏輸出_OUT_OD 模式工作原理
- 6.GPIO推挽輸出_OUT_PP模式工作原理
- 7.GPIO開漏複用輸出_AF_OD模式工作原理
- 8.GPIO推挽複用輸出_AF_PP模式工作原理
GPIO的8種工作模式詳解
浮空輸入_IN_FLOATING
帶上拉輸入_IPU
帶下拉輸入_IPD
模拟輸入_AIN
開漏輸出_OUT_OD
推挽輸出_OUT_PP
開漏複用輸出_AF_OD
推挽複用輸出_AF_PP
4輸入 + 2 輸出 + 2 複用輸出,一共是8種模式,以下是八種模式的工作原理:
1.GPIO浮空輸入_IN_FLOATING模式工作原
以上截圖就是浮空輸入模式的原理圖,圖中陰影的部分在浮空輸入模式下是處于不工作狀态的,尤其是下半部分的輸出電路,實際上這時的輸出電路與輸入的端口處于隔離狀态。
黃色的高亮部分顯示了資料傳輸通道,外部的電平信号通過左邊編号1的I/O 端口進入STM32内部經過編号2的施密特觸發器整形以後送入編号為3的“輸入資料寄存器”在“輸入資料寄存器”的另一端(編号4) ,CPU通過内部的資料總線可以随時讀出I/O 端口的電平變化的狀态。
2.GPIO帶上拉輸入_IPU 模式工作原理
上圖是STM32的GPIO帶上拉輸入模式的原理圖。
與前面介紹的浮空輸入模式相比,僅僅是在資料通道上面,接入了一個上拉電阻,根據STM32的資料手冊,這個上拉電阻阻值介于30K~50K 歐姆。同樣,CPU可以随時在“輸入資料寄存器”的另一端,通過内部的資料總線讀出I/O 端口的電平變化的狀态。
3.GPIO帶下拉輸入_IPD 模式工作原理
對于輸入下拉模式的輸入,是在資料通道的下部,接入了一個下拉電阻。
根據STM32的資料手冊,這個下拉電阻阻值也是介于30K~50K 歐姆。
對于要加上拉或下拉電阻:
1.當作單片機作為輸入時,假設我們直接在IO端口接一個按鍵到地(或電源)。
因為按鍵按,于不按管腳都是懸空的。單片機就很難檢測按鍵是否按下。
是以人為的接一個上拉(或下拉)。以确定未按下的時候IO輸入電平的狀态
2.可以提高晶片的抗幹擾能
3.當單片機的IO口作輸出時,如果不接上拉電阻隻能提供灌電流。無法輸出電流驅動外接裝置。這時也需要考慮上拉電阻。這樣才可以使IO輸出高電平
4.GPIO模拟輸入_AIN 模式工作原理
如果把STM32配置為模拟輸入模式時,工作原理就比較簡單了,信号從左邊編号為1 的端口進從右邊編号為2的一端直接進入STM32單片機的AD子產品。
細心的朋友可以看到資料通道中上拉、下拉電阻和施密特觸發器,這時均處于關斷的狀态,“輸入資料寄存器”就不能反映IO端口上的電平變化的狀态了,換句話說,也就是在模拟輸入狀态下,CPU不能通過“輸入資料寄存器”讀到IO端口變化的資料了。
以上分析的是GPIO子產品IO引腳的輸入模式的工作原理,下面介紹一下GPIO輸出模式的工作原理
5.GPIO開漏輸出_OUT_OD 模式工作原理
上圖是GPIO開漏輸出模式的工作原理圖
當CPU 在編号1 端通過“位設定/ 清除寄存器”或“輸出資料寄存器”寫入資料後
該資料位将通過編号2的輸出控制電路傳送到編号4 的I/O端口。
如果CPU 寫入的是邏輯“1 ”,則編号3 的N-MOS管将處于關閉狀态
此時I/O 端口的電平将由外部的上拉電阻決定
如果CPU 寫入的是邏輯“0 ”,則編号3的N-MOS管将處于開啟狀态
此時I/O端口的電平被編号3 的N-MOS管拉到了“地”的零電位。
在圖中的上半部,施密特觸發器處于開啟狀态
這意味着CPU 可以在“輸入資料寄存器”的另一端,随時可以監控I/O端口的狀态
通過這個特性,還可以實作了虛拟的I/O端口雙向通信:假如CPU 輸出邏輯“1 ”
由于編号3 的N-MOS管處于關閉狀态,I/O 端口的電平将完全由外部電路決定
是以,CPU 可以在“輸入資料寄存器”讀到外部電路的信号,而不是它自己輸出的邏輯“1 ”
GPIO口的輸出模式下,有3 種輸出速度可選(2MHz 、10MHz和50MHz)
這個速度是指GPIO口驅動電路的響應速度,而不是輸出信号的速度
輸出信号的速度與程式有關(晶片内部在I/O口的輸出部分安排了多個響應速度不同的輸出驅動電路使用者可以根據自己的需要選擇合适的驅動電路)。
通過選擇速度來選擇不同的輸出驅動子產品,達到最佳的噪聲控制和降低功耗的目的。
高頻的驅動電路,噪聲很高
當我們的項目不需要比較高的輸出頻率時,請選用低頻驅動電路,這樣非常有利于提高系統的EMI 性能。
當然如果我們的項目要求輸出較高頻率的信号,但卻選用了較低頻率的驅動子產品,很可能會得到比較失真的輸出信号
6.GPIO推挽輸出_OUT_PP模式工作原理
GPIO的推挽輸出模式是在開漏輸出模式的基礎上,在“輸出控制電路”之後,增加了一個P-MOS管
當CPU輸出邏輯“1 ”時,編号3 處的P-MOS管導通,而下方的N-MOS管截止,達到輸出高電平的目的
當CPU輸出邏輯“0 ”時,編号3 處的P-MOS管截止,而下方的N-MOS管導通,達到輸出低電平的目的
在這個模式下,CPU 仍然可以從“輸入資料寄存器”讀到該IO端口電壓變化的信号
7.GPIO開漏複用輸出_AF_OD模式工作原理
GPIO的開漏複用輸出模式與開漏輸出模式的工作原理基本相同
不同的是編号為2 的輸入的源不同,它是和複用功能的輸出端相連
此時的“輸出資料寄存器”被輸出通道給斷開了。
從上面的這個圖,我們還可以看到CPU同樣可以從“輸入資料寄存器”讀取到外部IO端口變化的電平信号。
8.GPIO推挽複用輸出_AF_PP模式工作原理
最後介紹一下GPIO推挽複用輸出模式的工作原理
編号2“輸出控制電路” 輸入是與複用功能的輸出端相連
此時“輸出資料寄存器”被從輸出通道斷開了,片上外設的輸出信号直接與“輸出控制電路”的輸入端想連接配接。
我們将GPIO配置成複用輸出功能後,假如相應的外設子產品沒有被激活,那麼此時IO端口的輸出将不确定。