GPIO的八種工作模式
GPIO是通用輸入/輸出端口的簡(jiǎn)稱,GPIO的引腳與外部設(shè)備連接,可實(shí)現(xiàn)與外部通訊、控制外部硬件或者采集外部硬件數(shù)據(jù)的功能。GPIO的8種輸入模式:包括4種輸入模式和4種輸出模式(2種普通輸出和2種復(fù)用輸出)。
GPIO基本結(jié)構(gòu)
每個(gè)GPIO內(nèi)部都有這樣的一個(gè)電路結(jié)構(gòu),下面就簡(jiǎn)單的介紹一下這個(gè)電路
保護(hù)二極管:I/O引腳上的二極管是為了防止引腳外部輸入過高、過低的電壓時(shí)對(duì)芯片造成損壞而設(shè)置的,起到保護(hù)電路的作用。當(dāng)引腳電壓>VDD時(shí),上方的二極管導(dǎo)通;當(dāng)引腳電壓
P-MOS管和N-MOS管:GPIO所具有的“推挽輸出”輸出和“開漏輸出”模式得益于由P-MOS管和N-MOS管組成的單元電路。
TTL肖特觸發(fā)器:可以理解為用肖特管構(gòu)成的施密特觸發(fā)器,模擬信號(hào)經(jīng)過觸發(fā)器后,就會(huì)轉(zhuǎn)化為0和1的數(shù)字信號(hào)。如果GPIO引腳作為輸入通道進(jìn)行ADC電壓采集時(shí),用其“模擬輸入”功能,信號(hào)就不會(huì)經(jīng)過觸發(fā)器進(jìn)行TTL轉(zhuǎn)換。
VDD_FT 對(duì)5V容忍I/O腳是特殊的,它與VDD不同。這句話的意思就是VDD_FT是兼容5V和3.3V的,而沒有FT的是不兼容5V的。
下面具體介紹GPIO的8種工作模式:
輸入模式—浮空輸入
在此模式下,上圖黃色陰影部分①—④的電路為通路,由①I/0端口輸入電平(高電平或低電平)→保護(hù)二極管→②TTL肖特基觸發(fā)器→③輸入數(shù)據(jù)寄存器→④CPU,這樣CPU就能讀取到I/O端口處的高低電平狀態(tài)。浮空輸入模式下,I/O端口的電平信號(hào)直接進(jìn)入輸入數(shù)據(jù)寄存器。也就是說,I/O的電平狀態(tài)是不確定的,完全由外部輸入決定;如果在該引腳懸空(無(wú)信號(hào)輸入)的情況下,讀取該端口的電平是不確定的。它的輸入阻抗較大,一般把這種模式用于標(biāo)準(zhǔn)的通信協(xié)議如I2C、USART。
輸入模式—輸入上拉
上拉電阻:把不確定的信號(hào)通過電阻連接到高電平,默認(rèn)情況下輸入引腳數(shù)據(jù)為1,高電平。在上拉輸入模式下,也是I/O端口的電平信號(hào)直接進(jìn)入輸入數(shù)據(jù)寄存器,但是它和浮空模式的主要區(qū)別在于,輸入上拉模式中上拉電阻(連接VDD)的開關(guān)閉合,上拉電阻的大小約為30—50kΩ。
輸入模式—輸入下拉
下拉電阻:把不確定的信號(hào)通過電阻連接到低電平,默認(rèn)情況下輸入引腳數(shù)據(jù)為0,低電平。在下拉輸入模式下,也是I/O端口的電平信號(hào)直接進(jìn)入輸入數(shù)據(jù)寄存器,同理,它和浮空模式的主要區(qū)別在于,輸入下拉模式中下拉電阻(連接VSS)的開關(guān)閉合。
輸入模式—模擬輸入
在此模式下,數(shù)據(jù)通道中上拉、下拉電阻和TTL肖特觸發(fā)器,這時(shí)均處于關(guān)斷的狀態(tài),在模擬輸入狀態(tài)下,CPU是無(wú)法通過“輸入數(shù)據(jù)寄存器”讀到IO端口變化的數(shù)據(jù)了,也就是說“輸入數(shù)據(jù)寄存器”就無(wú)法反映I/O端口上的電平變化的了。I/O端口的模擬信號(hào)(注意是電壓信號(hào),而非電平信號(hào))直接模擬輸入到片上外設(shè)模塊,比如ADC模塊。
輸出模式—開漏輸出
①
若②輸出控制電路接收到1(高電平),則③N-MOS管截止,那么此時(shí) ④I/O端口處的電平不是通過②輸出控制電路和③N-MOS管來控制的,而是取決于外部的“上拉”或“下拉”。
若②輸出控制電路接收到 0(低電平),③N-MOS管導(dǎo)通,此時(shí)④I/O端口處的電平就被③N-MOS管拉低。
同時(shí),在輸出的狀態(tài)下,I/O口的電平還可以通入輸入電路(④I/O端口→⑥輸入數(shù)據(jù)寄存器→⑦CPU讀取)來讀取。
輸出模式—開漏復(fù)用輸出
開漏復(fù)用輸出模式與開漏輸出模式很相似,區(qū)別在于輸出的高低電平的來源,不是讓CPU直接向位設(shè)置/清除寄存器寫1/0然后將其映射到輸出數(shù)據(jù)寄存器中,而是利用片上外設(shè)模塊的復(fù)用功能輸出來決定的。
輸出模式—推挽輸出
由圖可知,GPIO的推挽輸出模式是在開漏輸出模式的基礎(chǔ)上,在“輸出控制電路”之后,增加了一個(gè)P-MOS管。
當(dāng)CPU輸出邏輯“1 ”時(shí),③P-MOS管導(dǎo)通,N-MOS管截止,輸出高電平。
當(dāng)CPU輸出邏輯“0 ”時(shí),③P-MOS管截止,N-MOS管導(dǎo)通,輸出低電平。
同時(shí),I/O端口的電平也可以通過輸入電路(④I/O端口→⑥輸入數(shù)據(jù)寄存器→⑦CPU讀取)進(jìn)行讀取。
輸出模式—推挽復(fù)用輸出
推挽復(fù)用輸出模式與推挽輸出模式相似。只是輸出的高低電平的來源,不是讓CPU直接向位設(shè)置/清除寄存器寫1/0然后將其映射到輸出數(shù)據(jù)寄存器中,而是利用片上外設(shè)模塊的復(fù)用功能輸出來決定的。
-
二極管
+關(guān)注
關(guān)注
147文章
9706瀏覽量
167577 -
引腳
+關(guān)注
關(guān)注
16文章
1220瀏覽量
50909 -
觸發(fā)器
+關(guān)注
關(guān)注
14文章
2003瀏覽量
61349 -
GPIO
+關(guān)注
關(guān)注
16文章
1216瀏覽量
52383 -
VDD
+關(guān)注
關(guān)注
1文章
312瀏覽量
33545
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論