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