單片機的IO結構以及上下拉


(一) IO結構

單片機 IO 口的其中一種“準雙向 IO”的內部結構,實際上我們的單片機 IO 口還有另外三種狀態,分別是開漏、推輓、高阻態,我們通過圖 9-1 來分析下另外這三種狀態。

前邊我們簡單介紹“準雙向 IO”的時候,我們是用三極管來說明的,出於嚴謹的態度,我們這裏按照實際情況用 MOS 管畫圖示意。實際上三極管是靠電流導通的,而 MOS 管是靠電壓導通的,具體緣由和它們的內部構造有關係,在這裏我們暫且不必關心,如果今後有必要了解可以直接查找模擬電子書或者百度相關資料進行細緻學習。在單片機 IO 口狀態這一塊內容上,我們可以把 MOS 管當三極管來理解。在圖 9-1 中,T1 相當於一個 PNP 三極管,T2 相當於一個 NPN 三極管。

其中準雙向 IO 口原理已經講過了,開漏輸出和準雙向 IO 的唯一區別,就是開漏輸出把內部的上拉電阻去掉了。開漏輸出如果要輸出高電平時,T2 關斷,IO 電平要靠外部的上拉電阻才能拉成高電平,如果沒有外部上拉電阻 IO 電平就是一個不確定態。標準 51 單片機的P0 口默認就是開漏輸出,如果要用的時候外部需要加上拉電阻。而強推輓輸出就是有比較強的驅動能力,如圖 9-1 中第三張小圖,當內部輸出一個高電平時,通過 MOS 管直接輸出電流,沒有電阻的限流,電流輸出能力也比較大;如果內部輸出一個低電平,那反向電流也可以很大,強推輓的一個特點就是驅動能力強。

單片機 IO 還有一種狀態叫高阻態。通常我們用來做輸入引腳的時候,可以將 IO 口設置成高阻態,高阻態引腳本身如果懸空,用萬用表測量的時候可能是高可能是低,它的狀態完全取決於外部輸入信號的電平,高阻態引腳對 GND 的等效電阻很大(理論上相當於無窮大,但實際上總是有限值而非無窮大),所以稱之爲高阻。

(二)上拉下拉電阻

前邊似乎我們很多次提到了上拉電阻,下拉電阻,具體到底什麼樣的電阻算是上下拉電阻,上下拉電阻都有何作用呢?

上拉電阻就是將不確定的信號通過一個電阻拉到高電平,同時此電阻也起到一個限流作用,下拉就是下拉到低電平。

比如我們的 IO 設置爲開漏輸出高電平或者是高阻態時,默認的電平就是不確定的,外部經一個電阻接到 VCC,也就是上拉電阻,那麼相應的引腳就是高電平;經一個電阻到 GND,也就是下拉電阻,那麼相應的引腳就是一個低電平。

上拉電阻應用很多,都可以起到什麼作用呢?我們現在主要先了解最常用的以下 4 點:

  1. OC 門要輸出高電平,必須外部加上拉電阻才能正常使用,其實 OC 門就相當於單片機 IO 的開漏輸出,其原理可參照圖 9-1 中的開漏電路。
  2. 加大普通 IO 口的驅動能力。標準 51 單片機的內部 IO 口的上拉電阻,一般都是在幾十 K 歐,比如 STC89C52 內部是 20K 的上拉電阻,所以最大輸出電流是 250uA,因此外部加個上拉電阻,可以形成和內部上拉電阻的並聯結構,增大高電平時電流的輸出能力。
  3. 在電平轉換電路中,比如我們前邊講的 5V 轉 12V 的電路中,上拉電阻其實起到的是限流電阻的作用,可以回顧一下圖 3-8。
  4. 單片機中未使用的引腳,比如總線引腳,引腳懸空時,容易受到電磁干擾而處於紊亂狀態,雖然不會對程序造成什麼影響,但通常會增加單片機的功耗,加上一個對 VCC 的上拉電阻或者一個對 GND 的下拉電阻後,可以有效的抵抗電磁干擾。

那麼我們在進行電路設計的時候,又該如何選擇合適的上下拉電阻的阻值呢?
  1. 從降低功耗的方面考慮應當足夠大,因爲電阻越大,電流越小。
  2. 從確保足夠的引腳驅動能力考慮應當足夠小,電阻小了,電流才能大。
  3. 在開漏輸出時,過大的上拉電阻會導致信號上升沿變緩。我們來解釋一下:實際電平的變化都是需要時間的,雖然很小,但永遠都達不到零,而開漏輸出時上拉電阻的大小就直接影響了這個上升過程所需要的時間,如圖 9-2 所示。想一下,如果電阻很大,而信號頻率又很快的話,最終將導致信號還沒等上升到高電平就又變爲低了,於是信號就無法正確傳送了。
圖 9-2  上拉電阻阻值對波形的影響
圖 9-2  上拉電阻阻值對波形的影響

綜合考慮各種情況,我們常用的上下拉電阻值大多選取在 1K 到 10K 之間,具體到底多大通常要根據實際需求來選,通常情況下在標準範圍內就可以了,不一定是一個固定的值。

發佈了7 篇原創文章 · 獲贊 24 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章