浮空輸入
首先,讓我們來看看雙向(單刀雙擲)開關的情況:
當開關打開時,微控制器輸入端將連接到 +3.3V 電壓,即高電平。當開關關閉時,微控制器的輸入將連接至 0V,即低電平。如果只有一個按鈕,會是什么情況呢?
按下按鈕時,微控制器輸入端將連接至 0V,即低電平。然而,當按鈕未被按下時,微控制器輸入端并沒有真正連接到任何設備:
這就跟什么都沒連接一樣:
在這種情況下,輸入電平是多少?高還是低?因為它沒有真正連接到任何東西,所以輸入可能是任何水平的值,這取決于環境中的靜電或電磁輻射。它可能只是接收無線電波(就像天線一樣),并在高電平和低電平這兩種定義較弱的狀態之間來回擺動。這種微控制器輸入沒有明確定義,可能是任何(隨機)狀態被稱為浮空狀態。
上拉和下拉電阻
為了解決這個問題,要做的是在輸入端添加一個上拉電阻或下拉電阻(下圖所示的上拉電阻):
當按鈕未按下時,上拉電阻會將微控制器輸入拉高至 +3.3V,提供一個定義明確的高電平。當按下按鈕時,微控制器輸入將直接連接(短路)到地(0V),提供一個定義明確的低電平。在這種情況下,會有一些電流流過上拉電阻,但由于電阻值相對較高,所以電流很小。
您可能會注意到電阻符號看起來像一個小彈簧,而這正是它在這種情況下的工作方式。我們都使用過自動關閉的門,例如公共設施中常見的門,除非您主動將門打開,否則有一種機制會再次將其關閉。如果沒有自動關閉機制(可以想象一下門沒有閂鎖機制),門會被風吹來吹去或被進出的人移動,并且它不會默認到任何特定位置。上拉(或下拉)電阻類似于這些門上的自動關閉機制,因為它在未主動驅動時將輸入保持在特定電平。因此,上拉電阻就像自動關閉門上的彈簧,除非有人足夠強壯并推開門,否則門將默認為關閉位置。
這種情況顯然可以反過來,即按鈕可以連接到 +3.3V(高電平),而下拉電阻可以用來保持低電平輸入:
不過,上拉電阻配置更為常用
開漏輸出
某些微控制器輸出可設置為開漏(或僅提供為開漏)。開漏輸出是一種只能驅動低電平而不能驅動高電平的輸出;輸出為低電平或浮動輸出。從本質上講,輸出只是連接到晶體管的漏極引腳(因此稱為開漏)。
當控制線被驅動為高電平時,晶體管會將輸出短路至接地(0V),從而將輸出拉低。當控制線為低電平時,晶體管為高阻抗(高阻),輸出為浮空。
一些通信方案如 I2C 和 CAN使用這種安排,允許多個設備通過相同的通信線路進行通信,而不會出現短路(碰撞,即一個設備試圖將線路驅動為高電平,而另一個設備試圖將線路驅動為低電平);在這種情況下,當線路未被主動驅動為低電平時,使用上拉電阻器將線路保持為高電平。
本文章版權歸英國Labcenter公司所有,由廣州風標電子提供翻譯,原文鏈接如下:
https://www.labcenter.com/blog/sim-inputs-outputs/