GPIO的8種輸入輸出工作模式

我們配合GPIO結構圖,來看看GPIO的8種模式及其應用場合:

圖的最右端爲I/O引腳,左端的器件位於芯片內部。I/O引腳並聯了兩個用於保護的二極管

1,四種輸入模式

        接下來就遇到了兩個開關和電阻,與VDD相連的爲上拉電阻,與VSS相連的爲下拉電阻。再連接到施密特觸發器就把電壓信號轉化爲0、1的數字信號存儲在輸入數據寄存器(IDR)。我們可以通過設置配置寄存器(CRL、CRH),控制這兩個開關,於是就可以得到GPIO的上拉輸入(GPIO_Mode_IPU ) 下拉輸入模式(GPIO_Mode_IPD )了。

        從它的結構我們就可以理解,若GPIO引腳配置爲上拉輸入模式,在默認狀態下(GPIO引腳無輸入),讀取得的GPIO引腳數據爲1,高電平。而下拉模式則相反,在默認狀態下其引腳數據爲0,低電平。
        而STM32的浮空輸入模式(GPIO_Mode_IN_FLOATING)在芯片內部既沒有接上拉,也沒有接下拉電阻,經由觸發器輸入。配置成這個模式直接用電壓表測量其引腳電壓爲1點幾伏,這是個不確定值。由於其輸入阻抗較大,一般把這種模式用於標準的通訊協議如I2C、USART的接收端。

        模擬輸入模式(GPIO_Mode_AIN )則關閉了施密特觸發器,不接上、下拉電阻,經由另一線路把電壓信號傳送到片上外設模塊。如傳送至給ADC模塊,由ADC採集電壓信號。所以使用ADC外設的時候,必須設置爲模擬輸入模式。

 

2,四種輸出模式

        結構圖的下半部分爲輸出模式結構。
        線路經過一個由P-MOS和N-MOS管組成的單元電路。而所謂推輓輸出模式,則是根據其工作方式來命名的。在輸出高電平時,P-MOS導通,低電平時,N-MOS管導通。兩個管子輪流導通,一個負責灌電流,一個負責拉電流,使其負載能力和開關速度都比普通的方式有很大的提高。推輓輸出的供電平爲0伏,高電平爲3.3伏。

        在開漏輸出模式時,如果我們控制輸出爲0,低電平,則使N-MOS管導通,使輸出接地,若控制輸出爲1 (無法直接輸出高電平),則既不輸出高電平,也不輸出低電平,爲高阻態。爲正常使用時必須在外部接上一個上拉電阻。它具“線與”特性,即很多個開漏模式 引腳連接到一起時,只有當所有引腳都輸出高阻態,才由上拉電阻提供高電平,此高電平的電壓爲外部上拉電阻所接的電源的電壓。若其中一個引腳爲低電平,那線路就相當於短路接地,使得整條線路都爲低電平,0伏。

        STM32的GPIO輸出模式就分爲普通推輓輸出(GPIO_Mode_Out_PP )普通開漏輸出 (GPIO_Mode_Out_OD)複用推輓輸出(GPIO_Mode_AF_PP )複用開漏輸出(GPIO_Mode_AF_OD )
        普通推輓輸出模式一般應用在輸出電平爲0和3.3伏的場合。而普通開漏輸出一般應用在電平不匹配的場合,如需要輸出5伏的高電平,就需要在外部接一個上拉電阻,電源爲5伏,把GPIO設置爲開漏模式,當輸出高阻態時,由上拉電阻和電源向外輸出5伏的電平。

        對於相應的複用模式,則是根據GPIO的複用功能來選擇的,如GPIO的引腳用作串口的輸出,則使用複用推輓輸出模式。如果用在IC、SMBUS這些需要線與功能的複用場合,就使用複用開漏模式。其它不同的複用場合的複用模式引腳配置將在具體的例子中講解。
注:在使用任何一種開漏模式,都需要接上拉電阻。

以下爲外設的GPIO配置,在 STM32參考手冊:

通用和複用功能I/O

 

 

 

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