
STM32中的GPIO
以STM32中的GPIO為例,如上圖是GPIO的結(jié)構(gòu)圖。另外關(guān)于GPIO工作原理,請(qǐng)移步此文:STM32中GPIO工作原理詳解。
【資料圖】
從上圖中標(biāo)號(hào)2處可以看到,上拉和下拉電阻上都有一個(gè)開關(guān),通過配置上下拉電阻開關(guān),可以控制引腳的默認(rèn)電平,這里有三種狀態(tài):
開啟上拉時(shí),引腳默認(rèn)電壓為高電平
開啟下拉時(shí),引腳默認(rèn)電壓為低電平
上拉和下拉不開啟時(shí),這種狀態(tài)我們稱為浮空模式
STM32上下拉及浮空模式的配置是通過GPIOx_CRL和GPIOx_CRH寄存器控制的,可以通過《STM32F1xx 中文參考手冊(cè)》查閱。
開啟上拉電阻或下拉電阻的作用
STM32內(nèi)部的上拉其實(shí)是一個(gè)弱上拉,也就是說通過此上拉電阻輸出的電流很小,如果想要輸出一個(gè)大電流。那么就需要外接上拉電阻了,其實(shí)就是增加導(dǎo)線的輸出電流。相關(guān)文章:為什么單片機(jī)的I/O口需要驅(qū)動(dòng)?
下拉電阻情況相反,讓STM32的CPU引腳輸出低電平,結(jié)果由于后續(xù)電路影響輸出的低電平達(dá)不到GND。所以接個(gè)下拉電阻,其實(shí)就是為了降低導(dǎo)線的輸出電流。
另外當(dāng)上下拉電阻都不開啟,此時(shí)是浮空模式,引腳的電壓是不確定的,此模式下的管腳電壓會(huì)時(shí)不時(shí)改變。
所以為了防止引腳懸空,產(chǎn)生積累電荷、靜電荷,造成電路不穩(wěn)定。一般情況下,我們都會(huì)給引腳設(shè)置成上拉或者下拉模式,使它有一個(gè)確定的默認(rèn)電平狀態(tài)。
以上拉電阻舉例,在STM32剛上電的時(shí)候,芯片引腳電平是不確定的。特別引腳是接按鍵的時(shí)候,必須給他個(gè)確定的電平。下拉電阻的作用就是,強(qiáng)制讓電平保持在低電平。
上下拉電阻阻值的大小
根據(jù)拉電阻的阻值大小,可以分為強(qiáng)拉或弱拉(weak pull-up/down)。拉電阻阻值越小則表示電平能力越強(qiáng),為強(qiáng)拉,可以抵抗外部噪聲的能力也越強(qiáng),相應(yīng)的功耗也越大。
舉個(gè)例子:
按鍵的上拉電阻可以選擇3.3k、4.7k、5.1k、10k等,但是電阻越小,電流越大,功耗也越大。10k的上拉電阻帶來的電流,是大多數(shù)芯片所能識(shí)別到的引腳電流,如果電阻太大,電流太小,引腳識(shí)別不了,所以10k是個(gè)折中的方案。這里的電流,簡(jiǎn)單來說是根據(jù)公式VDD/R拉電阻計(jì)算出來的。
審核編輯:湯梓紅
標(biāo)簽: