到底什么是弱上下拉和強(qiáng)上下拉?

2023/4/17 18:06:03??????點(diǎn)擊:
    我們經(jīng)常會(huì)聽到弱上拉、弱下拉,還有與之相對(duì)應(yīng)的強(qiáng)上拉、強(qiáng)下拉。那么,強(qiáng)、弱到底是什么概念?阻值多大算是強(qiáng)和弱? 


    要搞清楚這個(gè)問題,首先要先理解一下上拉電阻、下拉電阻的概念。假設(shè)有下面這么一個(gè)電路,MCU需要檢測(cè)開關(guān)的通斷。


      


    當(dāng)開關(guān)閉合時(shí),MCU IO檢測(cè)到0,但是當(dāng)時(shí)開關(guān)開啟時(shí),IO引腳處于floating狀態(tài),容易受干擾而處于未知狀態(tài)。


    這時(shí)可以在IO口上加一個(gè)電阻到Vdd,這樣開關(guān)斷開時(shí)就能保證電平是固定的高電平1,這個(gè)電阻就叫做上拉電阻


    


    下拉電阻類似,它的作用是開關(guān)斷開時(shí),保證電平是固定的低電平0。


    


    那么,這個(gè)阻值該用多大呢?


    首先,阻值不能太小,因?yàn)樘。_關(guān)閉合時(shí)會(huì)產(chǎn)生較大的電流,會(huì)引起一來功耗大,二來也不安全。試想一下電阻為0是什么后果。


    另外,阻值也不能太大,阻值太大,上拉/下拉的作用就變?nèi)酰酱笤浇咏陂_路,開關(guān)斷開時(shí)IO就越接近于浮空狀態(tài),就越容易受干擾。試想一下阻值無窮大是什么效果。


    所以,這個(gè)電阻既不太大,也不太小,一般是幾K到幾十K大小,兼顧了功耗和上下拉作用。


    這里就引入了強(qiáng)弱的概念,弱就是阻值大,強(qiáng)就是阻值小。 

上拉 下拉
              電阻大,電流小,上拉效果弱
電阻大,電流小,下拉效果弱
強(qiáng) 電阻小,電流大,上拉效果強(qiáng)
電阻小,電流大,下拉效果強(qiáng)



    注意,這只是個(gè)相對(duì)概念。


    MCU一般內(nèi)部也帶上下拉電阻,可以配置是否開啟,以STM32F103為例,從下圖可以看出 內(nèi)部有上下來on/off開關(guān)。


    


    手冊(cè)上寫的是弱上拉/下拉,阻值大小典型值為40kΩ


   


    補(bǔ)充說明,上面介紹的上下拉電阻是對(duì)MCU IO輸入來說的,輸出也可能會(huì)用到,比如對(duì)于開漏輸出的IO,就必須加上上拉電阻,否則輸出不了高電平。原因是開漏輸出結(jié)構(gòu)如下,漏極是開路的


   


    它只有一個(gè)NMOS,當(dāng)控制輸出0時(shí),NMOS導(dǎo)通,Output Pin輸出0,但是當(dāng)控制輸出1時(shí),NMOS截止,輸出的是高阻態(tài)。要能輸出1,必須外面接一個(gè)上拉電阻。


   


    這種結(jié)構(gòu)的好處可以用在電平不匹配的場(chǎng)合,可以靈活的輸出1.8V/3.3V/5V等高電平,只要把Vdd接到不同的電壓上即可。另外它還具有”線與”的特性,即多個(gè)開漏引腳連接在一起,只有當(dāng)每個(gè)都輸出1時(shí)它才能輸出高電平,只要有一個(gè)輸出0,所有的引腳電壓都被拉低。


常見的IIC總線,就是用這種結(jié)構(gòu):


   


    這個(gè)上拉電阻的阻值選取也是有講究的,也是既不能太小,也不能太大。因?yàn)樘〉脑?,IO口上就會(huì)承受較大的輸入電流,而IO的輸入電流是有限制的。太大的話,會(huì)影響IIC的通信速度,因?yàn)榭偩€上還有負(fù)載電容,電阻太大,電容充放電時(shí)間就會(huì)久,影響上升沿、下降沿時(shí)間。


    關(guān)于這個(gè)具體計(jì)算,大家可以參考TI的一篇文檔:

    https://www.ti.com/lit/ml/slva689/slva689.pdf?ts=1679814584051



    該文檔詳細(xì)描述了計(jì)算方法: