STM32 GPIO模式總結

GPIO的8種工作方式

4種輸入模式

浮空輸入

上拉輸入

下拉輸入

模擬輸入

4種輸出模式

開漏輸出

複用開漏輸出

推輓輸出

複用推輓輸出

3種最大輸出速度

2MHz

10MHz

50MHz


浮空輸入模式

 

1) 外部通過IO口輸入電平,外部電平通過上下拉部分(浮空模式下都關閉,既無

上拉也無下拉電阻)

2) 傳輸到施密特觸發器(此時施密特觸發器爲打開狀態)

施密特觸發器作用

1. 波形變換 可將三角波、正弦波等變成矩形波。

2. 脈衝波的整形 數字系統中,矩形脈衝在傳輸中經常發生波形畸變,出現上升沿和下降沿不理想的情況,可用施密特觸發器整形後,獲得較理想的矩形脈衝。

3. 脈衝鑑幅 幅度不同、不規則的脈衝信號施加到施密特觸發器的輸入端時,能選擇幅度大於欲設值的脈衝信號進行輸出。

3) 繼續傳輸到輸入數據寄存器IDR

4) CPU通過讀輸入數據寄存器IDR實現讀取外部輸入電平值

5) 在輸入浮空模式下可以讀取外部輸入電平

6) 由於浮空輸入一般多用於外部按鍵輸入,有的理解爲,浮空輸入狀態下,IO的電平狀態是不確定的,完全由外部輸入決定,如果在該引腳懸空的情況下,讀取該端口的電平是不確定的。

上拉輸入模式

 

   在沒有信號輸入的時候,上拉電阻能使讀取input值保持爲高,而下拉電阻正是相反。有些傳感器等元氣件,他們的信號輸出有效時候會輸出一個高電平(或者低電平),無效時候不輸出,爲開路。此時我們就必須用上拉電阻(或下拉電阻)。I2S時下拉輸入,其它都是上拉輸入。

  和輸入浮空模式相比較,不同之處在於內部有一個上拉電阻連接到VDD(輸入上拉模式下,上拉電阻開關接通,阻值約30-50K)。

外部輸入通過上拉電阻,施密特觸發器存入輸入數據寄存器IDR,被CPU讀取。


輸入下拉模式

 

 

和輸入浮空模式相比較,不同之處在於內部有一個下拉電阻連接到VSS(輸入下拉模式下,下拉電阻開關接通,阻值約30-50K)

外部輸入通過下拉電阻,施密特觸發器存入輸入數據寄存器IDR,被CPU讀取

輸入模擬模式

 

1.上拉和下拉部分均爲關閉狀態(AD轉換-模擬量轉換爲數字量)

2.施密特觸發器爲截止狀態

3.通過模擬輸入通道輸入到CPU

4.IO口外部電壓爲模擬量(電壓形式非電平形式),作爲模擬輸入範圍一般爲0~3.3V



開漏輸出模式

 

1,CPU寫入 位設置/清寄存器BSRR,映射到輸出數據寄存器ODR

2,通到輸出控制電路(也就是ODR的電平)

3,ODR電平通過輸出控制電路進入N-MOS管

ODR輸出1:

    N-MOS截止,IO端口電平不會由ODR輸出決定,而由外部上拉/下拉決定

在輸出狀態下,輸出的電平可以被讀取,數據存入輸入數據寄存器,由CPU讀取,實現CPU讀取輸出電平。

所以,當N-MOS截止時,如果讀取到輸出電平爲1,不一定是我們輸出的1,有可能是外部上拉產生的1。

ODR輸出0:

    N-MOS開啓,IO端口電平被N-MOS管拉倒VSS,使IO輸出低電平

此時輸出的低電平同樣可以被CPU讀取到。


開漏複用輸出模式

 

與開漏輸出模式唯一的區別在於輸出控制電路之前電平的來源

開漏輸出模式的輸出電平是由CPU寫入輸出數據寄存器控制的

開漏推輓輸出模式的輸出電平是由複用功能外設輸出決定的

其他與開漏輸出模式相似:

    控制電路輸出爲1:N-MOS截止,IO口電平由外部上拉/下拉決定

    控制電路輸出爲0:N-MOS開啓,IO口輸出低電平

推輓輸出模式


與開漏輸出相比較:

輸出控制寄存器部分相同

輸出驅動器部分加入了P-MOS管部分

當輸出控制電路輸出1時:

P-MOS管導通N-MOS管截止,被上拉到高電平,IO口輸出爲高電平1

當輸出控制電路輸出0時:

P-MOS管截止N-MOS管導通,被下拉到低電平,IO口輸出爲低電平0

同時IO口輸出的電平可以通過輸入電路讀取

複用推輓輸出模式

 

與推輓輸出模式唯一的區別在於輸出控制電路之前電平的來源

開漏輸出模式的輸出電平是由CPU寫入輸出數據寄存器控制的

開漏推輓輸出模式的輸出電平是由複用功能外設輸出決定的

推輓輸出:

     可以輸出高,低電平,連接數字器件; 推輓結構一般是指兩個三極管分別受兩互補信號的控制,總是在一個三極管導通的時候另一個截止。高低電平由IC的電源低定。

  推輓電路是兩個參數相同的三極管或MOSFET,以推輓方式存在於電路中,各負責正負半周的波形放大任務,電路工作時,兩隻對稱的功率開關管每次只有一個導通,所以導通損耗小、效率高。輸出既可以向負載灌電流,也可以從負載抽取電流。推拉式輸出級既提高電路的負載能力,又提高開關速度。

詳細理解:

  推輓放大器的輸出級有兩個“臂”(兩組放大元件),一個“臂”的電流增加時,另一個“臂”的電流則減小,二者的狀態輪流轉換。對負載而言,好像是一個“臂”在推,一個“臂”在拉,共同完成電流輸出任務。當輸出高電平時,也就是下級負載門輸入高電平時,輸出端的電流將是下級門從本級電源經VT3拉出。這樣一來,輸出高低電平時,VT3 一路和 VT5 一路將交替工作,從而減低了功耗,提高了每個管的承受能力。又由於不論走哪一路,管子導通電阻都很小,使RC常數很小,轉變速度很快。因此,推拉式輸出級既提高電路的負載能力,又提高開關速度。

推輓輸出和開漏輸出的區別:

推輓輸出:可以輸出強高/強低電平,可以連接數字器件

開漏輸出:只能輸出強低電平(高電平需要依靠外部上拉電子拉高),適合做電流型驅動,吸收電流能力較強(20ma之內)STM32中選用IO模式設置推輓模式,只能是輸出模式,而輸出高低電平的驅動電流都很大。即可作爲輸出,也可作爲輸入。作輸出時,要輸出高電平,需要外加上拉電阻。作輸入時,要求處理高電平狀態,才能讀外部引腳。


GPIO配置情況

1) 浮空輸入_IN_FLOATING ——浮空輸入,可以做KEY識別,RX1

2) 帶上拉輸入_IPU——IO內部上拉電阻輸入

3) 帶下拉輸入_IPD—— IO內部下拉電阻輸入

4) 模擬輸入_AIN ——應用ADC模擬輸入,或者低功耗下省電

5) 開漏輸出_OUT_OD ——IO輸出0接GND,IO輸出1,懸空,需要外接上拉電阻,才能實現輸出高電平。當輸出爲1時,IO口的狀態由上拉電阻拉高電平,但由於是開漏輸出模式,這樣IO口也就可以由外部電路改變爲低電平或不變。可以讀IO輸入電平變化,實現C51的IO雙向功能

6)推輓輸出_OUT_PP ——IO輸出0-接GND, IO輸出1 -接VCC,讀輸入值是未知的

7)複用功能的推輓輸出_AF_PP ——片內外設功能(I2C的SCL,SDA)

8)複用功能的開漏輸出_AF_OD——片內外設功能(TX1,MOSI,MISO.SCK.SS)


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