GPIO信號介紹
一、GPIO信號基礎知識
GPIO(General-Purpose input/output),通用型之輸入輸出端口的簡稱,可以通過軟件控制其輸出和輸入,市面上絕大部分芯片都會提供一個"通用可編程IO接口",即GPIO。
GPIO信號原理框圖
目前市面上使用的芯片,其內部GPIO信號電路結構都如上圖所示,其輸入保護二極管用于防止引腳外部過高正電壓、負電壓輸入,當電壓高于VDD時,上方的二極管導通,當引腳電壓低于VSS時,下方二極管導通,防止外部脈沖電壓引入損毀芯片。
TTL施密特觸發(fā)器:基本原理是當輸入電壓高于正向閾值電壓,輸出未高;當輸入電壓低于負向閾值電壓,輸出為低。IO口信號經(jīng)過觸發(fā)器后模擬信號轉化為0和1的數(shù)字信號,也就是高低電平,并且符合TTL電平協(xié)議。
P-MOS管和N-MOS管:信號由P-MOS管和N-MOS管,依據(jù)兩個MOS管的工作方式,使得GPIO具有"推挽輸出"和"開漏輸出模式",P-MOS管高電平導通,低電平關閉;N-MOS管低電平導通,高電平關閉。
二、GPIO信號的8種模式:
狀態(tài) | 類型 | 特征 |
浮空輸入 | 數(shù)字輸入 | 可讀取引腳電平,若引腳懸空,則電平不穩(wěn)定 |
上拉輸入 | 數(shù)字輸入 | 可讀取引腳電平,內部上拉,懸空默認高電平 |
下拉輸入 | 數(shù)字輸入 | 可讀取引腳電平,內部下拉,懸空默認低電平 |
模擬輸入 | 模擬輸入 | GPIO無效,引腳直接接入內部ADC |
開漏輸出 | 數(shù)字輸出 | 可輸出引腳電平,高電平為高阻態(tài),低電平接VSS |
推挽輸出 | 數(shù)字輸出 | 可輸出引腳電平,高電平接VDD,低電平接VSS |
復用開漏輸出 | 數(shù)字輸出 | 由外部控制,高電平為高阻態(tài),低電平接VSS |
復用推挽輸出 | 數(shù)字輸出 | 由外部控制,高電平接VDD,低電平接VSS |
2.1、浮空輸入:
浮空輸入模式下,I/O端口的電平信號直接進入輸入數(shù)據(jù)存儲器。I/O電平狀態(tài)是不確定的,完全由外部輸入決定;如果在該引腳懸空(無信號輸入)的情況下,讀取該端口的電平是不確定的,通常用于IIC、UART等總線設備。
2.2、上拉輸入模式:
上拉輸入模式下,I/O端口的電平信號直接進入輸入數(shù)據(jù)存儲器。但是在I/O端口懸空(在無信號輸入)的情況下,輸入端的電平保持在高電平(并且在I/O端口輸入為低電平的時候,輸入端的電平也是低電平)
2.3、下拉輸入模式:
下拉輸入模式下,I/O端口的電平信號直接進入輸入數(shù)據(jù)存儲器。但是在I/O端口懸空(在無信號輸入)的情況下,輸入端的電平保持在低電平(并且在I/O端口輸入為高電平的時候,輸入端的電平也是高電平)
2.4、模擬輸入模式:
模擬輸入模式下,I/O端口的模擬信號(電壓信號,而非電平信號)直接模擬輸入到片上外設模塊,比如ADC模塊電路。
2.5、開漏輸出模式:
在開漏輸出模式時,只有N-MOS管工作,如果控制輸出為低電平,則P-MOS管關閉,N-MOS管導通,使輸出為低電平;若控制輸出為高電平,則P-MOS管和N-MOS管都關閉,輸出指令就不會起作用,此時I/O端口的電平由外部的上拉或者下拉決定,如果沒有上拉或者下拉I/O口就處于懸空狀態(tài)。
2.6、推挽輸出模式:
在推挽輸出模式時,N-MOS管、P-MOS管都工作,如果控制輸出為低電平,則P-MOS管關閉,N-MOS管導通,使輸出為低電平;若控制輸出為高電平,則N-MOS管關閉,N-MOS管導通,使輸出為高電平,外部的上拉或者下拉的作用是控制在沒有輸出時I/O電平。
2.7、復用開漏輸出模式:
GPIO復用為其它外設,輸出數(shù)據(jù)寄存器無效;輸出高低電平來源于其它外設,施密特觸發(fā)器打開,輸入可用,通過輸入數(shù)據(jù)存儲器可獲取I/O實際狀態(tài),除了輸出信號的來源改變其它與開漏輸出功能相同。
2.8、復用推挽輸出:
GPIO復用為其它外設,輸出數(shù)據(jù)寄存器無效;輸出高低電平來源于其它外設,施密特觸發(fā)器打開,輸入可用,通過輸入數(shù)據(jù)存儲器可獲取I/O實際狀態(tài),除了輸出信號的來源改變其它與推挽輸出功能相同。