溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何理解stm32 GPIO

發(fā)布時間:2021-11-23 10:43:09 來源:億速云 閱讀:132 作者:柒染 欄目:互聯(lián)網(wǎng)科技

這篇文章將為大家詳細(xì)講解有關(guān)如何理解stm32 GPIO,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

一、GPIO口簡介

1、  GPIO口輸入輸出模式 

STM32的輸入輸出管腳有以下8種配置方式:

輸入

① 浮空輸入_IN_FLOATING    ——浮空輸入,可以做KEY識別

② 帶上拉輸入_IPU         ——IO內(nèi)部上拉電阻輸入  

③ 帶下拉輸入_IPD         ——IO內(nèi)部下拉電阻輸入

④ 模擬輸入_AIN           ——應(yīng)用ADC模擬輸入,或者低功耗下省電

輸出
⑤ 開漏輸出_OUT_OD      ——IO輸出0接GND,IO輸出1,懸空,需要外接上拉電阻,才能實(shí)現(xiàn)輸出高電平。

⑥ 推挽輸出_OUT_PP       ——IO輸出0-接GND, IO輸出1 -接VCC,讀輸入值是未知的。

⑦ 復(fù)用功能的推挽輸出_AF_PP   ——片內(nèi)外設(shè)功能(I2C的SCL,SDA)

⑧ 復(fù)用功能的開漏輸出_AF_OD    — — 片內(nèi)外設(shè)功能(TX1,MOSI,MISO,SCK,SS)

2、輸入輸出模式詳解

1推挽輸出:

如何理解stm32 GPIO

      可以輸出高,低電平,連接數(shù)字器件; 推挽結(jié)構(gòu)一般是指兩個三極管分別受兩互補(bǔ)信號的控制,總是在一個三極管導(dǎo)通的時候另一個截止。高低電平由IC的電源低定。  

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


 




2開漏輸出:

如何理解stm32 GPIO       輸出端相當(dāng)于三極管的集電極。 要得到高電平狀態(tài)需要上拉電阻才行。 適合于做電流型的驅(qū)動,其吸收電流的能力相對強(qiáng)(一般20mA以內(nèi))

開漏形式的電路有以下幾個特點(diǎn):

1、 利用外部電路的驅(qū)動能力,減少IC內(nèi)部的驅(qū)動。當(dāng)IC內(nèi)部MOSFET導(dǎo)通時,驅(qū)動電流是從外部的VCC流經(jīng)R pull-up ,MOSFET到GND。IC內(nèi)部僅需很小的柵極驅(qū)動電流。

2、 一般來說,開漏是用來連接不同電平的器件,匹配電平用的,因?yàn)殚_漏引腳不連接外部的上拉電阻時,只能輸出低電平,如果需要同時具備輸出高電平的功能,則需 要接上拉電阻,很好的一個優(yōu)點(diǎn)是通過改變上拉電源的電壓,便可以改變傳輸電平。

3、 OPEN-DRAIN提供了靈活的輸出方式,但是也有其弱點(diǎn),就是帶來上升沿的延時。因?yàn)樯仙厥峭ㄟ^外接上拉無源電阻對負(fù)載充電,所以當(dāng)電阻選擇小時延時就小,但功耗大;反之延時大功耗小。所以如果對延時有要求,則建議用下降沿輸出。

4、可以將多個開漏輸出的Pin,連接到一條線上。通過一只上拉電阻,在不增加任何器件的情況下,形成“與邏輯”關(guān)系。這也是I2C,SMBus等總線判斷總線占用狀態(tài)的原理。



二、GPIO口配置

1、根據(jù)具體應(yīng)用配置為輸入或輸出

① 作為普通GPIO輸入:

根據(jù)需要配置該引腳為浮空輸入、帶弱上拉輸入或帶弱下拉輸入,同時不要使能該引腳對應(yīng)的所有復(fù)用功能模塊。

② 作為普通GPIO輸出:

根據(jù)需要配置該引腳為推挽輸出或開漏輸出,同時不要使能該引腳對應(yīng)的所有復(fù)用功能模塊。

③ 作為普通模擬輸入:

配置該引腳為模擬輸入模式,同時不要使能該引腳對應(yīng)的所有復(fù)用功能模塊。

④ 作為內(nèi)置外設(shè)的輸入:

根據(jù)需要配置該引腳為浮空輸入、帶弱上拉輸入或帶弱下拉輸入,同時使能該引腳對應(yīng)的某個復(fù)用功能模塊。

⑤ 作為內(nèi)置外設(shè)的輸出:

根據(jù)需要配置該引腳為復(fù)用推挽輸出或復(fù)用開漏輸出,同時使能該引腳對應(yīng)的所有復(fù)用功能模塊。

2、輸出模式下,配置速度

I/O口輸出模式下,有3種輸出速度可選(2MHz、10MHz和50MHz),這個速度是指I/O口驅(qū)動電路的響應(yīng)速度而不是輸出信號的速度,輸出信號 的速度與程序有關(guān)(芯片內(nèi)部在I/O口的輸出部分安排了多個響應(yīng)速度不同的輸出驅(qū)動電路,用戶可以根據(jù)自己的需要選擇合適的驅(qū)動電路)。通過選擇速度來選 擇不同的輸出驅(qū)動模塊,達(dá)到最佳的噪聲控制和降低功耗的目的。高頻的驅(qū)動電路,噪聲也高,當(dāng)不需要高的輸出頻率時,請選用低頻驅(qū)動電路,這樣非常有利于提 高系統(tǒng)的EMI性能。當(dāng)然如果要輸出較高頻率的信號,但卻選用了較低頻率的驅(qū)動模塊,很可能會得到失真的輸出信號。關(guān)鍵是GPIO的引腳速度跟應(yīng)用匹配。

2.1     對于串口,假如最大波特率只需115.2k,那么用2M的GPIO的引腳速就夠

了,既省電也噪聲小。

2.2    對于I2C接口,假如使用400k波特率,若想把余量留大些,那么用2M的

GPIO的引腳速度或許不夠,這時可以選用10M的GPIO引腳速度。

2.3 

  對于SPI接口,假如使用18M或9M波特率,用10M的GPIO的引腳速度顯然不夠了,需要選用50M的GPIO的引腳速度。

關(guān)于如何理解stm32 GPIO就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI