1. 程式人生 > 其它 >轉載——上拉電阻下拉電阻

轉載——上拉電阻下拉電阻

原文地址點選這裡:

上拉(Pull Up )或下拉(Pull Down)電阻(兩者統稱為“拉電阻”)最基本的作用是:將狀態不確定的訊號線通過一個電阻將其箝位至高電平(上拉)或低電平(下拉),無論它的具體用法如何,這個基本的作用都是相同的,只是在不同應用場合中會對電阻的阻值要求有所不同,從而也引出了諸多新的概念,本節我們就來小談一下這些內容。
如果拉電阻用於輸入訊號引腳,通常的作用是將訊號線強制箝位至某個電平,以防止訊號線因懸空而出現不確定的狀態,繼而導致系統出現不期望的狀態,如下圖所示:

在實際應用中,10K歐姆的電阻是使用數量最多的拉電阻。需要使用上拉電阻還是下拉電阻,主要取決於電路系統本身的需要,比如,對於高有效的使能控制訊號(EN), 我們希望電路系統在上電後應處於無效狀態,則會使用下拉電阻。
假設這個使能訊號是用來控制電機的,如果懸空的話,此訊號線可能在上電後(或在執行中)受到其它噪聲干擾而誤觸發為高電平,從而導致電機出現不期望的轉動,這肯定不是我們想要的,此時可以增加一個下拉電阻。
而相應的,對於低有效的復位控制訊號(RST#),我們希望上電覆位後處於無效狀態,則應使用上拉電阻。

大多數具備邏輯控制功能的晶片(如微控制器、FPGA等)都會整合上拉或下拉電阻,使用者可根據需要選擇是否開啟,STM32微控制器GPIO模式即包含上拉或下拉,如下圖所示(來自ST資料手冊):

根據拉電阻的阻值大小,我們還可以分為強拉或弱拉(weak pull-up/down),晶片內部整合的拉電阻通常都是弱拉(電阻比較大),拉電阻越小則表示電平能力越強(強拉),可以抵抗外部噪聲的能力也越強(也就是說,不期望出現的干擾噪聲如果要更改強拉的訊號電平,則需要的能量也必須相應加強),但是拉電阻越小則相應的功耗也越大,因為正常訊號要改變訊號線的狀態也需要更多的能量,在能量消耗這一方面,拉電阻是絕不會有所偏頗的,如下圖所示:

對於上拉電阻R1而言,控制訊號每次拉低L都會產生VCC/R1的電流消耗(沒有上拉電阻則電流為0),相應的,對於下拉電阻R2而言,控制訊號每次拉高H也會產生VCC/R2R 電流消耗(本文假設高電平即為VCC)。

強拉與弱拉之間沒有嚴格說多少歐姆是強弱的分界,一般我們使用的拉電阻都是弱拉,這樣我們仍然可以使用外部控制訊號將已經上/下拉的訊號線根據需要進行電平的更改。
強拉電阻的極端就是零歐姆電阻,亦即將訊號線直接與電源或地相連線,比如,對於EEPROM儲存晶片24C02應用電路,如下圖所示:

其中,E0,E1,E2(地址配置位)在應用中通常都是直接強上拉到電源VCC,或強下拉到GND,因為儲存晶片的地址在系統執行過程中是不會再發生變化的,同樣,晶片的寫控制引腳WC(Write Control)也被強下拉到GND。

拉電阻作為輸出(或輸入輸出)時牽涉到的知識點會更多一些,但本質的功能也是將電平箝位,最常見的輸出上拉電阻出現在開集(Open Collector,OC)或開漏(Open Drain,OD)結構的引腳。
我們有很多晶片的輸出引腳是推輓輸出結構(Output Push-Pull),如下圖所示(還有一種反相輸出的結構,本質也是一樣的):

推輓輸出結構引腳的特點是:無論引腳輸出高電平“H”還是低電平“L”,都有比較強的驅動能力(輸入或輸出電流能力)!

當推輓輸出結構的控制訊號為低電平“L”時,Q1截止Q2導通,電流I1由電源VCC經負載RL與三極體Q2流向公共地,我們稱此電流為灌電流(Sink Current),也就是外部電流灌入晶片內部,如下圖所示:

相應的,當推輓輸出結構的控制訊號為高電平“H”時,Q1導通Q2截止,電流I1由電源VCC經三極體Q1與負載RL流向公共地,我們稱此電流為拉電流(Source Current),也就是晶片內部可以向外提供的電流(所以稱之為“源電源”),從另一個角度講,也就是外電路可以從晶片中拉走多少電流,如下圖所示:

灌電流能力與拉電流能力也稱為晶片引腳的驅動能力。對於任何給定的晶片,引腳的驅動能力都是有限的,如下圖所示為STM32微控制器的IO引腳電流驅動能力(來自ST資料手冊):

由上表可知,STM32的IO引腳的驅動能力為25mA,負號“-”表示電流的方向,灌與拉的電流方向是相反的(表中SUNK為SINK的過去分詞)
由於晶片引腳的驅動能力都是有限的,如果引腳驅動的負載比較重,將可能導致輸出電平不正確(無法輸出預定的電平),如下圖所示:


假定晶片的供電電壓為3.3V(忽略電晶體飽和壓降),則輸出最大電流25mA時,負載RL的值約為132歐姆(3.3V/25mA),如果負載值小於132歐姆,則相應輸出電流會更大(超過25mA),但是晶片引腳只能提供最大25mA的電流,因此,輸出電平將會下降(老闆你只給我2500月薪,我就只能幹2500的活,你要我幹更多的活得開更多的工資,一個道理)

一般情況下,這種驅動重負載(小電阻)的電路連線是不會燒燬內部電晶體的,因為內部也是有限流電阻的,換句話講,就算輸出引腳對地短路,輸出電流也不會超過最大的驅動能力(除非是不正規的晶片),當然,在實際應用過程中儘量不要超出引腳的驅動能力。


而OC(OD)的引腳輸出結構有所不同(OC結構存在於三極體,而OD結構存在於場效管,下面以OC輸出結構為例,OD輸出結構的原理是一致的),如下圖所示:

當三極體Q1的驅動控制訊號為高電平“H”時,Q1飽和導通,將對應輸出引腳拉為低電平“L”,如下圖所示:

但是當控制驅動訊號為低電平“L”時,三極體Q1截止,如果沒有外部上拉電阻的話,該引腳相當於懸空(高阻態),無法輸出高電平,也就是說,OC/OD結構輸出的引腳沒有拉電流(向外部電路提供電流)能力。因此,我們通常都會將OC/OD引腳通過外接電阻上拉到電源電壓VCC,這樣引腳輸出高電平時的拉電流就直接由電源VCC提供,如下圖所示:

大多數比較器晶片的輸出都是OD/OC輸出結構,如下圖所示(來自TI比較器LM393資料手冊):

很多晶片或模組向外反饋系統狀態的訊號引腳也是這種結構,這樣使用者就可以根據電路系統實際需要將電平上拉到對應的電源電壓VCC,就可以省略電平轉換了,如下圖所示(來自東芝步進電機控制晶片TB6560資料手冊):

I2C(Inter Integrated Circuit,內部積體電路)匯流排也是典型的OD輸出結構的應用,如下圖所示:

其中,SCL與SDA都是OD輸出結構輸出,這樣的好處是可以作為雙向資料匯流排(也稱“線或Wire-OR”功能)。

如果晶片引腳使用之前描述的推輓結構,則兩個或多個晶片的引腳連線時將如下圖所示:

假設如上圖所示晶片的輸出分別為0與1,則兩者直接相互連線後,會有非常大的電流自電源VCC經Q1與Q4到公共地,雖然大多數情況下不至於燒晶片,但也會引起很大的功率消耗,同時也會導致資料衝突(晶片1總會試圖將資料線拉高,而晶片2則會試圖將資料線拉低,我們稱之為資料衝突或匯流排衝突,表示雙方都在搶佔匯流排)


如果使用OC/OD輸出結構,則相應的電路如下圖所示:

此時,無論兩個晶片的引腳輸出什麼狀態,都不會引起資料衝突,配合各自晶片內部的資料識別電路及仲裁系統,雙方都可以主動給另一方傳送資訊,也就是說,任何一方都可以將訊號線拉高或拉低,而不會影響起資料衝突。

我們所熟悉的51微控制器P0口也是OD結構,如下圖所示(來自ATMEL微控制器AT89C51資料手冊):


這樣我們可以使用同一個P0口,再配合多個片選訊號即可訪問多個外掛的儲存晶片。

前面所述上拉電阻的阻值對輸入引腳引起的功耗同樣適用於輸出拉電阻,因此拉電阻不宜太小,但在輸出訊號速度比較快的電路下,拉電阻也不宜太大,如下圖所示為I2C總線上拉電阻的參考最大值(來自ST儲存晶片 AT24C02資料手冊)。

在總線上總會有些雜散電容CBUS,這些電容與上拉電阻RL形成了一個RC充放電電路,上拉電阻越大則充放電常數越大,這樣會把原先比較陡峭的資料邊沿變得平緩,如下圖所示:

嚴重的情況下將導致資料無法正常識別,這樣我們只能進一步優化電路參路,或降低通訊的速率。

拉電阻還有其它作用,我們留待下一節再繼續講解。

原文連結:https://www.cnblogs.com/sunshine-jackie/p/8413901.html