1. 程式人生 > >微控制器I/O口推輓與開漏輸出詳解(力薦)

微控制器I/O口推輓與開漏輸出詳解(力薦)

推輓輸出:可以輸出高,低電平,連線數字器件;推輓結構一般是指兩個三極體分別受兩互補訊號的控制,總是在一個三極體導通的時候另一個截止.

開漏輸出:輸出端相當於三極體的集電極. 要得到高電平狀態需要上拉電阻才行. 適合於做電流型的驅動,其吸收電流的能力相對強(一般20ma以內).

我們先來說說集電極開路輸出的結構。集電極開路輸出的結構如圖1所示,右邊的那個三極體集電極什麼都不接,所以叫做集電極開路(左邊的三極體為反相之用,使輸入為“0”時,輸出也為“0”)。對於圖1,當左端的輸入為“0”時,前面的三極體截止(即集電極C跟發射極E之間相當於斷開),所以5V電源通過1K電阻加到右邊的三極體上,右邊的三極體導通(即相當於一個開關閉合);當左端的輸入為“1”時,前面的三極體導通,而後面的三極體截止(相當於開關斷開)



     
我們將圖1簡化成圖2的樣子。圖2中的開關受軟體控制,“1”時斷開,“0”時閉合。很明顯可以看出,當開關閉合時,輸出直接接地,所以輸出電平為0。而當開關斷開時,則輸出端懸空了,即高阻態。這時電平狀態未知,如果後面一個電阻負載(即使很輕的負載)到地,那麼輸出端的電平就被這個負載拉到低電平了,所以這個電路是不能輸出高電平的。

再看圖三。圖三中那個1K的電阻即是上拉電阻。如果開關閉合,則有電流從1K電阻及開關上流過,但由於開關閉其它三個口帶內部上拉),當我們要使用輸入功能時,只要將輸出口設定為1即可,這樣就相當於那個開關斷開,而對於P0口來說,就是高阻態了。

對於漏極開路(OD)輸出,跟集電極開路輸出是十分類似的。將上面的三極體換成場效電晶體即可。這樣集電極就變成了漏極,OC就變成了OD,原理分析是一樣的。

另一種輸出結構是推輓輸出。推輓輸出的結構就是把上面的上拉電阻也換成一個開關,當要輸出高電平時,上面的開關通,下面的開關斷;而要輸出低電平時,則剛好相反。比起OC或者OD來說,這樣的推輓結構高、低電平驅動能力都很強。如果兩個輸出不同電平的輸出口接在一起的話,就會產生很大的電流,有可能將輸出口燒壞。而上面說的OC或OD輸出則不會有這樣的情況,因為上拉電阻提供的電流比較小。如果是推輓輸出的要設定為高阻態時,則兩個開關必須同時斷開(或者在輸出口上使用一個傳輸門),這樣可作為輸入狀態,AVR微控制器的一些IO口就是這種結構。

開漏電路特點及應用

在電路設計時我們常常遇到開漏(open drain)和開集(open collector)的概念。
所謂開漏電路概念中提到的“漏”就是指MOSFET的漏極。同理,開集電路中的“集”就是指三極體的集電極。開漏電路就是指以MOSFET的漏極為輸出的電路。一般的用法是會在漏極外部的電路新增上拉電阻。完整的開漏電路應該由開漏器件和開漏上拉電阻組成。如圖1所示: 



 
組成開漏形式的電路有以下幾個特點:
1. 利用外部電路的驅動能力,減少IC內部的驅動(或驅動比晶片電源電壓高的負載)。當IC內部MOSFET導通時,驅動電流是從外部的VCC流經R pull-up ,MOSFET到GND。IC內部僅需很下的柵極驅動電流。如圖1。
2. 可以將多個開漏輸出的Pin,連線到一條線上。形成 “與邏輯” 關係。如圖1,當PIN_A、PIN_B、PIN_C任意一個變低後,開漏線上的邏輯就為0了。這也是I2C,SMBus等匯流排判斷匯流排佔用狀態的原理。如果作為輸出必須接上拉電阻。接容性負載時,下降延是晶片內的電晶體,是有源驅動,速度較快;上升延是無源的外接電阻,速度慢。如果要求速度高電阻選擇要小,功耗會大。所以負載電阻的選擇要兼顧功耗和速度。
3. 可以利用改變上拉電源的電壓,改變傳輸電平。如圖2, IC的邏輯電平由電源Vcc1決定,而輸出高電平則由Vcc2(上拉電阻的電源電壓)決定。這樣我們就可以用低電平邏輯控制輸出高電平邏輯了(這樣你就可以進行任意電平的轉換)。(例如加上上拉電阻就可以提供TTL/CMOS電平輸出等。)


4. 開漏Pin不連線外部的上拉電阻,則只能輸出低電平(因此對於經典的51微控制器的P0口而言,要想做輸入輸出功能必須加外部上拉電阻,否則無法輸出高電平邏輯)。一般來說,開漏是用來連線不同電平的器件,匹配電平用的。
    5. 標準的開漏腳一般只有輸出的能力。新增其它的判斷電路,才能具備雙向輸入、輸出的能力。

6.正常的CMOS輸出級是上、下兩個管子,把上面的管子去掉就是OPEN-DRAIN了。這種輸出的主要目的有兩個:電平轉換、線與。

7.線與功能主要用於有多個電路對同一訊號進行拉低操作的場合,如果本電路不想拉低,就輸出高電平,因為OPEN-DRAIN上面的管子被拿掉,高電平是靠外接的上拉電阻實現的。(而正常的CMOS輸出級,如果出現一個輸出為高另外一個為低時,等於電源短路。)

8.OPEN-DRAIN提供了靈活的輸出方式,但是也有其弱點,就是帶來上升沿的延時。因為上升沿是通過外接上拉無源電阻對負載充電,所以當電阻選擇小時延時就小,但功耗大;反之延時大功耗小。所以如果對延時有要求,則建議用下降沿輸出。

應用中需注意:1.   開漏和開集的原理類似,在許多應用中我們利用開集電路代替開漏電路。例如,某輸入Pin要求由開漏電路驅動。則我們常見的驅動方式是利用一個三極體組成開集電路來驅動它,即方便又節省成本。如圖4。

 
 2. 上拉電阻R pull-up的阻值決定了邏輯電平轉換的沿的速度。阻值越大,速度越低功耗越小。反之亦然。
Push-Pull輸出就是一般所說的推輓輸出,在CMOS電路里面應該較CMOS輸出更合適,因為在CMOS裡面的push-pull輸出能力不可能做得雙極那麼大。輸出能力看IC內部輸出極N管P管的面積。和開漏輸出相比,push-pull的高低電平由IC的電源低定,不能簡單的做邏輯操作等。push-pull是現在CMOS電路里面用得最多的輸出級設計方式。
當然open drain也不是沒有代價,這就是輸出的驅動能力很差。輸出的驅動能力很差的說法不準確,驅動能力取決於IC中的末級電晶體功率。OD只是帶來上升沿的延時,因為上升沿是通過外接上拉無源電阻對負載充電的,當電阻選擇小時延時就小、但功耗大,反之延時大功耗小。OPEN DRAIN提供了靈活的輸出方式,但也是有代價的,如果對延時有要求,建議用下降沿輸出。
電阻小延時小的前提條件是電阻選擇的原則應在末級電晶體功耗允許範圍內,有經驗的設計者在使用邏輯晶片時,不會選擇1歐姆的電阻作為上拉電阻。在脈衝的上升沿電源通過上拉無源電阻對負載充電,顯然電阻越小上升時間越短,在脈衝的下降沿,除了負載通過有源電晶體放電外,電源也通過上拉電阻和導通的電晶體對地 形成通路,帶來的問題是晶片的功耗和耗電問題。電阻影響上升沿,不影響下降沿。如果使用中不關心上升沿,上拉電阻就可選擇儘可能的大點,以減少對地通路的 電流。如果對上升沿時間要求較高,電阻大小的選擇應以晶片功耗為參考。

相關推薦

微控制器I/O輸出

推輓輸出:可以輸出高,低電平,連線數字器件;推輓結構一般是指兩個三極體分別受兩互補訊號的控制,總是在一個三極體導通的時候另一個截止. 開漏輸出:輸出端相當於三極體的集電極. 要得到高電平狀態需要上拉電阻才行. 適合於做電流型的驅動,其吸收電流的能力相對強(一般20ma以

單片機I/O輸出

多應用 外部 電路 20M 占用 當我 常見 經典的 pull 推挽輸出:可以輸出高,低電平,連接數字器件;推挽結構一般是指兩個三極管分別受兩互補信號的控制,總是在一個三極管導通的時候另一個截止. 開漏輸出:輸出端相當於三極管的集電極. 要得到高電平狀態需要上拉電阻才行.

微控制器I/O輸出輸出的區別open-drainpush-pull

推輓(push-pull):推輓輸出的器件是指輸出腳內部整合有一對互補的MOSFET,當Q1導通、Q2截止時輸出高電平;而當Q1截止導通、Q2導通時輸出低電平。一個導通另一個就截止。 集電極開路:輸出端相當於孤立三極體的集電極. 要得到高電平狀態需要上拉電阻才行. 適合於做電流型的驅動,其吸收電

UML類圖類的關係基礎知識

在畫類圖的時候,理清類和類之間的關係是重點。類的關係有泛化(Generalization)、實現(Realization)、依賴(Dependency)和關聯(Association)。其中關聯又分為一般關聯關係和聚合關係(Aggregation),合成關係(Composi

C/C++ 程式編譯連結的過程靜態連結

我們知道一個程式的執行需要經過編譯和連結兩個階段,其過程究竟是怎樣的呢? 程式的編譯階段分為以下幾個步驟,分別是預編譯、編譯、彙編、生成二進位制可重定向檔案(.o)。 預編譯: 首先是原始碼檔案xxx.c和相關的標頭檔案被預編譯器編譯成一個.i檔案。

MCU引腳輸出模式中輸出輸出電路原理區別

推輓輸出:可以輸出高,低電平,連線數字器件; 開漏輸出:輸出端相當於三極體的集電極. 要得到高電平狀態需要上拉電阻才行. 適合於做電流型的驅動,其吸收電流的能力相對強(一般20ma以內). 推輓結構一般是指兩個三極體分別受兩互補訊號的控制,總是在一個三極體導通的時候另一個截止. 我們先來

微控制器I/O管腳內部結構鎖存器,輸出驅動器,三態緩衝器,多路開關

學習ARM嵌入式的時候,發現自己對以前學過的數模器件的知識遺忘了不少,按照我的進度本來應該繼續學習ARM微處理器控制的課程,但想著後來勢必還會遇到相同的問題所以就準備中斷一下,殺回來把彙編和一些電路知識再總結一下,查漏補缺。如果有寫的不合理的地方,還請多多指教。

微控制器I/O使用

I/O口總體介紹 51微控制器總共有P0、P1、P2、P3四個8位雙向輸入輸出埠,每個埠都有鎖存器、輸出驅動器和輸入緩衝器。 其中P0和P2通常用於對外部儲存器的訪問,在具有片外擴充套件儲存器的系統中,P2口作為高8位地址線,P0口分時作為低8位地址線和

一種提高微控制器i/o驅動能力的方法

一、簡述問題 當你用單片驅動發光二極體的時,你還感覺不到P0、P1口的區別。(10-20mA之間,其中P0驅動能力最強,但對於驅動直流電機依然很弱,其結果就是電機不轉)。那麼有什麼辦法提高驅動能力嗎?下面就來介紹本文的一種簡單方法。 二、實驗元件 NPN三極體:s8050

微控制器I/O控制實驗

實驗內容:利用P1口做輸出口,接八隻發光二極體,編寫程式是發光二極體迴圈點亮或者具有一定的花樣。1.第一個發光二極體以間隔200ms閃爍;2.8個發光二極體由上至下間隔,1s流動,其中每個管亮500ms,滅500ms,亮時蜂鳴器響,滅時關閉蜂鳴器,一直重複下去;3.8個發光二

STM32埠模式配置——上拉、下拉、模擬、浮空輸入;、複用輸出

1、上拉輸入:上拉就是把電位拉高,比如拉到Vcc。上拉就是將不確定的訊號通過一個電阻嵌位在高電平!電阻同時起限流作用!強弱只是上拉電阻的阻值不同,沒有什麼嚴格區分。 2、下拉輸入:就是把電壓拉低,拉到GND。與上拉原理相似。 3、浮空輸入:浮空(floating)就是

、強上拉、弱上拉、強下拉、弱下拉輸出

推輓輸出:可以輸出高,低電平,連線數字器件;推輓結構一般是指兩個三極體分別受兩互補訊號的控制,總是在一個三極體導通的時候另一個截止 開漏輸出:輸出端相當於三極體的集電極. 要得到高電平狀態需要上拉電阻才行. 適合於做電流型的驅動,其吸收電流的能力相對強(一般20ma以內)

深入探討Linux靜態庫動態庫的

share 分享 命名 one .com 過程 程序 簡單介紹 mage 2.生成動態庫並使用 linux下編譯時通過 -shared 參數可以生成動態庫(.so)文件,如下 庫從本質上來說是一種可執行代碼的二進制格式,可以被載入內存中執行。庫分靜態庫和動態庫兩種。

最詳盡的 JS 原型原型鏈終極

小編推薦:Fundebug專注於JavaScript、微信小程式、微信小遊戲,Node.js和Java實時BUG監控。真的是一個很好用的bug監控費服務,眾多大佬公司都在使用。   七. 函式物件 (複習一下前面的知識點) 所有函式物件的proto都指向Funct

最詳盡的 JS 原型原型鏈終極

小編推薦:Fundebug專注於JavaScript、微信小程式、微信小遊戲,Node.js和Java實時BUG監控。真的是一個很好用的bug監控費服務,眾多大佬公司都在使用。 四. __proto__ JS 在建立物件(不論是普通物件還是函式物件)的時候,都有一個叫做__pr

在MFC中繪製地圖以及地理座標螢幕座標轉換附工程原始碼

在MFC中繪圖時,因為都是以畫素為單位的,所以我們只能以整數作為引數。如果我們想要把一幅地圖資料繪製在MFC視窗中,地圖的座標資料肯定的含有小數位的,這樣我們就不能直接在MFC中繪製地圖了,這就涉及到地理座標向螢幕座標的轉換。 1、地理座標轉螢幕座標 首先我們看一張圖(圖

最詳盡的 JS 原型原型鏈終極

小編推薦:Fundebug專注於JavaScript、微信小程式、微信小遊戲,Node.js和Java實時BUG監控。真的是一個很好用的bug監控費服務,眾多大佬公司都在使用。 一. 普通物件與函式物件 JavaScript 中,萬物皆物件!但物件也是有區別的。分為普通物件和函

元資料資料治理|Apache Atlas安裝過程初步版本

                                  Apache Atlas安裝過程詳解 一 

網易雲信即時通訊送保障及網路優化:如何在弱網環境下優化大資料傳輸

對於移動 APP 來說,IM 功能正變得越來越重要,它能夠建立起人與人之間的連線。社交類產品中,使用者與使用者之間的溝通可以產生出更好的使用者粘性。在複雜的 Android 生態環境下,多種因素都會造成訊息推送不能及時達到客戶端。另外,不穩定的行動網路也給資料傳輸的速率和可靠

Date.parse()Date.getTime()方法js獲取時間戳的幾種方式

這兩個方法的返回值都是 1970/1/1 午夜距離該日期時間的毫秒數 實際中如何使用 下面的例子中,我們將取得從 1970/01/01 到 2017/03/19 的毫秒數 1、Date.parse()的 使用 var d = Date.pa