1. 程式人生 > >Open-Drain與Push-Pull

Open-Drain與Push-Pull

GPIO的功能,簡單說就是可以根據自己的需要去配置為輸入或輸出。(General Purpose Input Output,簡稱為GPIO或匯流排擴充套件器,利用工業標準I2C、SMBus?或SPI?介面簡化了I/O口的擴充套件。當微控制器或晶片組沒有足夠的I/O埠,或當系統需要採用遠端序列通訊或控制時,GPIO產品能夠提供額外的控制和監視功能。)但是在配置GPIO管腳的時候,常會見到兩種模式:開漏(open-drain,漏極開路)和推輓(push-pull)。對此兩種模式,有何區別和聯絡,下面整理了一些資料,來詳細解釋一下:

【Push-Pull推輓輸出】

原理:

輸出的器件是指輸出腳內部整合有一對互補的MOSFET,當Q1導通、Q2截止時輸出高電平;而當Q1截止導通、Q2導通時輸出低電平。Push-Pull輸出,實際上內部是用了兩個電晶體(transistor),此處分別稱為Top-Transistor和Bottom-Transistor。通過開關對應的電晶體,輸出對應的電平。Top-Transistor開啟(Bottom-Transistor關閉),輸出為高電平;Bottom-Transistor開啟(Top-Transistor關閉),輸出低電平。

Push-pull即能夠漏電流(sink current),又可以集電流(source current)。其也許有,也許沒有另外一個狀態:高阻抗(high impedance)狀態。除非Push-pull需要支援額外的高阻抗狀態,否則不需要額外的上拉電阻。

特點:在CMOS電路里面應該叫CMOS輸出更合適,因為在CMOS裡面的push-pull輸出能力不可能做得雙極那麼大。輸出能力看IC內部輸出極N管P管的面積。push-pull是現在CMOS電路里面用得最多的輸出級設計方式。

優點:(1)可以吸電流,也可以貫電流;(2)和開漏輸出相比,push-pull的高低電平由IC的電源低定,不能簡單的做邏輯操作等。

缺點:一條總線上只能有一個push-pull輸出的器件;

【Open-Drain開漏輸出】

原理:

開漏電路就是指以MOSFET的漏極為輸出的電路。指內部輸出和地之間有個N溝道的MOSFET(Q1),這些器件可以用於電平轉換的應用。輸出電壓由Vcc決定。Vcc可以大於輸入高電平電壓VCC (call UP-Translate)也可以低於輸入高電平電壓VCC(call Down-Translate)
Open-Drain輸出,則是比push-pull少了個top transistor,只有那個bottom transistor。(就像push-pull中的那樣)當bottom transistor關閉,則輸出為高電平。此處沒法輸出高電平,想要輸出高電平,必須外部再接一個上拉電阻(pull-up resistor)。Open-drain只能夠漏電流(sink current),如果想要集電流(source current),則需要加一個上拉電阻。

優點:
(1)對於各種電壓節點間的電平轉換非常有用,可以用於各種電壓節點的Up-translate和Down-translate轉換
(2)可以將多個開漏輸出的Pin腳,連線到一條線上,形成“與邏輯”關係,即“線與”功能,任意一個變低後,開漏線上的邏輯就為0了。這也是I2C,SMBus等匯流排判斷匯流排佔用狀態的原理。
(3)利用 外部電路的驅動能力,減少IC內部的驅動。當IC內部MOSFET導通時,驅動電流是從外部的VCC流經R pull-up ,MOSFET到GND。IC內部僅需很小的柵極驅動電流。
(4)可以利用改變上拉電源的電壓,改變傳輸電平,如圖, IC的邏輯電平由電源Vcc1決定,而輸出高電平則由Vcc2決定。這樣我們就可以用低電平邏輯控制輸出高電平邏輯了。

OD輸出電平的原理

缺點:開漏Pin不連線外部的上拉電阻,則只能輸出低電平。當輸出電平為低時,N溝道三極體是導通的,這樣在Vcc'和GND之間有一個持續的電流流過上拉電阻R和三極體Q1。這會影響整個系統的功耗。採用較大值的上拉電阻可以減小電流。但是,但是大的阻值會使輸出訊號的上升時間變慢。即上拉電阻R pull-up的阻值 決定了邏輯電平轉換的沿的速度。阻值越大,速度越低功耗越小。反之亦然。

相關推薦

微控制器I/O口推輓輸出開漏輸出的區別(open-drainpush-pull

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

Open-DrainPush-Pull

GPIO的功能,簡單說就是可以根據自己的需要去配置為輸入或輸出。(General Purpose Input Output,簡稱為GPIO或匯流排擴充套件器,利用工業標準I2C、SMBus?或SPI?介面簡化了I/O口的擴充套件。當微控制器或晶片組沒有足夠的I/O埠,或當系統需要採用遠端序列通訊或控制時,G

Open-DrainPush-Pull【轉】

集成 有一個 外部 利用 內部 res cal 通過 zha 轉自:https://www.cnblogs.com/zhangpengshou/p/3643546.html GPIO的功能,簡單說就是可以根據自己的需要去配置為輸入或輸出。(General Purpose

STM32之GPIO開漏(Push-pull)和推輓(open-drain)輸出

STM32GPIO介紹: 每一個GPIO包括4個32bit的控制暫存器(GPIOx_MODER,GPIOx_OTYPER,GPIOx_OSPEEDRandGPIOx_PUPDR);2個32bit的資

訊息佇列的pullpush模式理解

錯誤理解 之所以將這個標題,定義為錯誤理解,原因就是無法真正的說服自己; 訊息佇列的模式有兩種pull與push.先說說我之前的理解: pull模式指,客戶端連線上broker之後,主動發起方法呼叫獲取遠端的結果,說的直白一點就是一次RPC呼叫,即同步方

Git 遠端分支的pullpush

遠端分支資訊檢視 git branch -r #檢視遠端分支 git branch -a #檢視所有分支,本地和遠端 git remote show [remote-name] #檢視遠端倉庫資訊 其中git remote show [remote-name]展示的資

ZeroMQ-Push/Pull

zeromqPush and Pull sockets let you distribute messages to multiple workers, arranged in a pipeline. A Push socket will distribute sent messages to its Pul

解決git push/pull 每次都要輸入密碼、ssh-keygen

mage 打開終端 utf div span 中文亂碼 bubuko XA lob 一、問題描述 以github為例 每次在向github服務器 推送代碼(git push),都會提示輸入用戶名密碼 二、問題原因 在clone 代碼時使用的是HTTS協議 三、

C/S模式,發布/訂閱模式和PUSH/PULL模式(上)

沒有 入庫 即使 分時 流程 https 分享圖片 內容 怎麽 CS模式(客戶端/服務器模式) 最場景的信息傳遞模式,也稱為Request/Response模式,或者調用模式。http/https協議即此模式。因為最常用所以大家一般都比較熟悉,這裏不重點講了,大家請看圖下圖

IIC中的open drain

漏極開路(Open Drain)即高阻狀態,適用於輸入/輸出,其可獨立輸入/輸出低電平和高阻狀態,若需要產生高電平,則需使用外部上拉電阻。 ———高阻狀態:高阻狀態是三態閘電路的一種狀態。邏輯閘的輸出除有高、低電平兩種狀態外,還有第三種狀態——高阻狀態的閘電路。電路分析時高阻態可做開路理解。可以

Nativescript Android Keyboard Open Overlay OR Push View(鍵盤開啟覆蓋檢視或推出可視區域)

App_Resources/Android/src/main/AndroidManifest.xml <activity android:name="com.tns.NativeScriptActivity" android:windowSoftInputMode="adjus

docker push/pull hub.docker.com

1.註冊賬號: hub.docker.com      2.在虛擬機器中登入賬號 docker login 輸入賬號和密碼    3.上傳映象 3-1 首先要tag 映象      doc

git clone, push, pull, fetch 的用法

其他人 方法 eba hub 表示 remote 掌握 let del   Git是目前最流行的版本管理系統,學會Git幾乎成了開發者的必備技能。    Git有很多優勢,其中之一就是遠程操作非常簡便。本文詳細介紹5個Git命令,它們的概念和用法,理解了這些內容,你就會完全

Git本地initpush到遠端倉庫

1、先進行git配置項檢視與修改初始化 .git刪除:rm -rf .git 檢視資訊:git config --list $ git config --list core.symlinks=false core.autocrlf=true core.fscache=t

git fetchgit pull的區別

git fetch和git pull都可以將遠端倉庫更新至本地那麼他們之間有何區別?想要弄清楚這個問題有有幾個概念不得不提。 FETCH_HEAD: 是一個版本連結,記錄在本地的一個檔案中,指向著目前已經從遠端倉庫取下來的分支的末端版本。 commit-id:在

利用樹莓派漏極輸出控制電機 Using Raspberry Pi open drain output GPIO to control a moter

Keyword關鍵字 Raspberry Pi樹莓派, GPIO 通用IO, open drain output漏極輸出 Motivation動機 專案中有一個pwm控制的電機,需要漏極開路[8]( An open collector i

docker 建立本地倉庫詳解(push/pull)

除了使用Docker Hub,還可以根據自己的需求建立似有倉庫。下面就介紹在centos7 下建立似有倉庫。本文內容基於 docker-registry v2.x 版本。 執行倉庫映象 通過獲取官方 registry 映象來執行 $ docker run -d -p

MongoDB之 $關鍵字 及 $修改器 $set $inc $push $pull $pop MongoDB - 4

MongoDB中類似$set 這樣的關鍵字有很多, $lt $gt $lte $gte 等等,這麼多我們也不方便記,這裡我們說說幾個比較常見的 一.查詢中常見的 等於 大於 小於 大於等於 小於等於 等於 : 在MongoDB中什麼欄位等於什麼值其實就是 " : " 來搞定 比如 "name" : "路飛

MongoDB之$關鍵字及$修改器$set $inc $push $pull $pop

一.查詢中常見的  等於   大於  小於  大於等於  小於等於 等於:用':' 大於:用'$gt' 小於:用'$lt' 大於等於:用'$gte' 小於等於:用'$lte' MongoDB的操作就是很類似ORM的操作

GIT PUSH/PULL時總需要輸入使用者名稱密碼的解決方案

在提交專案程式碼或者拉程式碼的時候,git會讓你輸入使用者名稱密碼,解決方案:(我們公司用的是gitlab) 執行git config --global credential.helper store命令 然後git push origin your-branc