日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

GPIO推挽输出和开漏输出详解

發(fā)布時(shí)間:2023/12/13 综合教程 33 生活家
生活随笔 收集整理的這篇文章主要介紹了 GPIO推挽输出和开漏输出详解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

open-drain與push-pull】
GPIO的功能,簡(jiǎn)單說(shuō)就是可以根據(jù)自己的需要去配置為輸入或輸出。但是在配置GPIO管腳的時(shí)候,常會(huì)見(jiàn)到兩種模式:開(kāi)漏(open-drain,漏極開(kāi)路)和推挽(push-pull)。
對(duì)此兩種模式,有何區(qū)別和聯(lián)系,下面整理了一些資料,來(lái)詳細(xì)解釋一下:

圖表1 Push-Pull對(duì)比Open-Drain

Push-Pull推挽輸出 Open-Drain開(kāi)漏輸出
原理

輸出的器件是指輸出腳內(nèi)部集成有一對(duì)互補(bǔ)的MOSFET,當(dāng)Q1導(dǎo)通

、Q2截止時(shí)輸出高電平;而當(dāng)Q1截止導(dǎo)通、Q2導(dǎo)通時(shí)輸出低電平 .

25pt;border:solid #E3EDF5 1.0pt;mso-border-alt: solid

#E3EDF5 .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt'>

輸出的器件是指輸出腳內(nèi)部集成有一對(duì)互補(bǔ)的MOSFET,當(dāng)Q1導(dǎo)通、

Q2截止時(shí)輸出高電平;而當(dāng)Q1截止導(dǎo)通、Q2導(dǎo)通時(shí)輸出低電平

開(kāi)漏電路就是指以MOSFET的漏極為輸出的電路。指內(nèi)部輸出和地之間有個(gè)N溝道的MOSFET(Q1),

這些器件可以用于電平轉(zhuǎn)換的應(yīng)用。輸出電壓由Vcc'決定。Vcc'可以大于輸入高電平電壓VCC(up-translate)

也可以低于輸入高電平電壓VCC(down-translate)。

某老外的更加透徹的解釋

Push-pull輸出,實(shí)際上內(nèi)部是用了兩個(gè)晶體管(transistor),

此處分別稱為top transistor和bottom transistor。通過(guò)開(kāi)關(guān)對(duì)應(yīng)的晶體管,

輸出對(duì)應(yīng)的電平。top transistor打開(kāi)(bottom transistor關(guān)閉),

輸出為高電平;bottom transistor打開(kāi)(top transistor關(guān)閉),

輸出低電平。Push-pull即能夠漏電流(sink current),又可以集電流

(source current)。其也許有,也許沒(méi)有另外一個(gè)狀態(tài):高阻抗

(high impedance)狀態(tài)。除非Push-pull需要支持額外的高阻抗?fàn)顟B(tài)

,否則不需要額外的上拉電阻。

Open-drain輸出,則是比push-pull少了個(gè)top transistor,只有那個(gè)bottom transistor。(就像push-pull中的那樣)

當(dāng)bottom transistor關(guān)閉,則輸出為高電平。此處沒(méi)法輸出高電平,想要輸出高電平,

必須外部再接一個(gè)上拉電阻(pull-up resistor)。Open-drain只能夠漏電流(sink current),

如果想要集電流(source current),則需要加一個(gè)上拉電阻。 ??出低電平

常見(jiàn)的GPIO的模式可以配置為open-drain或push-pull,具體實(shí)現(xiàn)上,

常為通過(guò)配置對(duì)應(yīng)的寄存器的某些位來(lái)配置為open-drain或是push-pull。

當(dāng)我們通過(guò)CPU去設(shè)置那些GPIO的配置寄存器的某位(bit)的時(shí)候,其GPIO硬件IC內(nèi)部的實(shí)現(xiàn)是,

會(huì)去打開(kāi)或關(guān)閉對(duì)應(yīng)的top transistor。相應(yīng)地,如果設(shè)置為了open-d模式的話,

是需要上拉電阻才能實(shí)現(xiàn),也能夠輸出高電平的。因此,如果硬件內(nèi)部(internal)本身包含了對(duì)應(yīng)的上拉電阻的話,

此時(shí)會(huì)去關(guān)閉或打開(kāi)對(duì)應(yīng)的上拉電阻。

如果GPIO硬件IC內(nèi)部沒(méi)有對(duì)應(yīng)的上拉電阻的話,那么你的硬件電路中,

必須自己提供對(duì)應(yīng)的外部(external)的上拉電阻。而push-pull輸出的優(yōu)勢(shì)是速度快,

因?yàn)榫€路(line)是以兩種方式驅(qū)動(dòng)的。而帶了上拉電阻的線路,

即使以最快的速度去提升電壓,最快也要一個(gè)常量的R×C的時(shí)間。其中R是電阻,

C是寄生電容(parasitic capacitance),包括了pin腳的電容和板子的電容。

但是,push-pull相對(duì)的缺點(diǎn)是往往需要消耗更多的電流,即功耗相對(duì)大。

而open-drain所消耗的電流相對(duì)較小,由電阻R所限制,而R不能太小,因?yàn)楫?dāng)輸出為低電平的時(shí)候,

需要sink更低的transistor,這意味著更高的功耗。(此段原文:because the lower transistor has to sink that current when

the output is low; that means higher power consumption.)而open-drain的好處之一是,

允許你cshort(?)多個(gè)open-drain的電路,公用一個(gè)上拉電阻,此種做法稱為wired-OR連接,此時(shí)可以通過(guò)拉低任何一個(gè)IO

的pin腳使得輸出為低電平。為了輸出高電平,則所有的都輸出高電平。此種邏輯,就是“線與”的功能,可以不需要額外的門(mén)(gate)電路來(lái)實(shí)現(xiàn)此部分邏輯。

原理圖

圖表2 push-pull原理圖 須外部再接一個(gè)上拉電阻(pull-up resistor)。

Open-drain只能夠漏電流(sink current),如果想要集電流(source current),

則需要加一個(gè)上拉電阻。 ??出低電平

圖表3 open-drain原理圖 ??外部再接一個(gè)上拉電阻(pull-up resistor)。

Open-drain只能夠漏電流(sink current),如果想要集電流(source current),

則需要加一個(gè)上拉電阻。 ??出低電平

圖表4 open-drain“線與”功能 ?需要加一個(gè)上拉電阻。 ??出低電平

優(yōu)點(diǎn)

(1)可以吸電流,也可以貫電流;(2)和開(kāi)漏輸出相比,

push-pull的高低電平由IC的電源低定,不能簡(jiǎn)單的做邏輯操作等。

(1)
對(duì)于各種電壓節(jié)點(diǎn)間的電平轉(zhuǎn)換非常有用,可以用于各種電壓節(jié)點(diǎn)

的Up-translate和down-translate轉(zhuǎn)換
(2)可以將多個(gè)開(kāi)漏輸出的Pin腳,連接到一條線上,形成“與邏輯”關(guān)系,

即“線與”功能,任意一個(gè)變低后,開(kāi)漏線上的邏輯就為0了。這也是I2C,

SMBus等總線判斷總線占用狀態(tài)的原理。(3)利用 外部電路的驅(qū)動(dòng)能力,

減少IC內(nèi)部的驅(qū)動(dòng)。當(dāng)IC內(nèi)部MOSFET導(dǎo)通時(shí),驅(qū)動(dòng)電流是從外部的VCC流

經(jīng)R pull-up ,MOSFET到GND。IC內(nèi)部?jī)H需很下的柵極驅(qū)動(dòng)電流。

(4)可以利用改變上拉電源的電壓,改變傳輸電平:圖表5 open-drain輸出電平

的原理

lang=EN-US>R不能太小,因?yàn)楫?dāng)輸出為低電平的時(shí)候,需要sink

更低的transistor,這意味著更高的功耗。(此段原文:because the lower

transistor has to sink that current when the output is low; that

means higher
power consumption.)而open-drain的好處之一是,

允許你cshort(?)多個(gè)open-drain的電路,公用一個(gè)上拉電阻,此種做法

稱為wired-OR連接,此時(shí)可以通過(guò)拉低任何一個(gè)IO的pin腳使得輸出為低電平。

為了輸出高電平,則所有的都輸出高電平。此種邏輯,就是“線與”的功能

,可以不需要額外的門(mén)(gate)電路來(lái)實(shí)現(xiàn)此部分邏輯。

IC的邏輯電平由電源Vcc1決定,而輸出高電平則由Vcc2決定。

這樣我們就可以用低電平邏輯控制輸出高電平邏輯了。

缺點(diǎn)

一條總線上只能有一個(gè)push-pull輸出的器件; :"Times New Roman";

color:#444444;mso-ansi-language:EN-US; mso-fareast-language:

ZH-CN;mso-bidi-language:AR-SA'>的邏輯電平由電源Vcc1決定,

而輸出高電平則由Vcc2決定。這樣我們就可以用低電平邏輯控制輸出高電平邏輯了。

開(kāi)漏Pin不連接外部的上拉電阻,則只能輸出低電平。當(dāng)輸出電平為低時(shí),

N溝道三極管是導(dǎo)通的,這樣在Vcc'和GND之間有一個(gè)持續(xù)的電流流過(guò)上

拉電阻R和三極管Q1。這會(huì)影響整個(gè)系統(tǒng)的功耗。采用較大值的上拉電阻

可以減小電流。但是,但是大的阻值會(huì)使輸出信號(hào)的上升時(shí)間變慢。即上拉

電阻R pull-up的阻值 決定了邏輯電平轉(zhuǎn)換的沿的速度
。阻值越大,速度越低功耗越小。反之亦然。

ine-height:115%;font-family:

"Verdana","sans-serif";
mso-fareast-font-family:"Times New

Roman";mso-bidi-font-family:"Times New Roman";
color:#444444;

mso-ansi-language:EN-US;mso-fareast-language:ZH-CN;

mso-bidi-language:
AR-SA'>“線與”功能,任意一個(gè)變低后,

開(kāi)漏線上的邏輯就為0了。這也是I2C,SMBus等總線判斷總線占用狀態(tài)的原理。

(3)利用 外部電路的驅(qū)動(dòng)能力,減少IC內(nèi)部的驅(qū)動(dòng)。當(dāng)IC內(nèi)部MOSFET導(dǎo)通時(shí),

驅(qū)動(dòng)電流是從外部的VCC流經(jīng)R pull-up ,MOSFET到GND。IC內(nèi)部?jī)H需很下的柵極驅(qū)動(dòng)電流。

(4)可以利用改變上拉電源的電壓,改變傳輸電平:圖表5 open-drain輸出電平的原理

lang=EN-US>R不能太小,因?yàn)楫?dāng)輸出為低電平的時(shí)候,需要sink更低的transistor,

這意味著更高的功耗。(此段原文:because the lower
transistor has to sink

that current when the output is low; that means higher
power consumption.)

而open-drain的好處之一是,允許你cshort(?)多個(gè)open-drain的電路,

公用一個(gè)上拉電阻,此種做法稱為wired-OR連接,此時(shí)可以通過(guò)拉低任何一個(gè)

IO的pin腳使得輸出為低電平。為了輸出高電平,則所有的都輸出高電平。此種邏輯,

就是“線與”的功能,可以不需要額外的門(mén)(gate)電路來(lái)實(shí)現(xiàn)此部分邏輯。

特點(diǎn)

在CMOS電路里面應(yīng)該叫CMOS輸出更合適,因?yàn)樵贑MOS里面的push-pull

輸出能力不可能做得雙極那么大。輸出能力看IC內(nèi)部輸出極N管P管的面積。

push-pull是現(xiàn)在CMOS電路里面用得最多的輸出級(jí)設(shè)計(jì)方式。

【open-drain和push-pull的總結(jié)】
對(duì)于GPIO的模式的設(shè)置,在不考慮是否需要額外的上拉電阻的情況下,

是設(shè)置為open-drain還是push-pull,說(shuō)到底,還是個(gè)權(quán)衡的問(wèn)題:
如果你想要電平轉(zhuǎn)換速度快的話,那么就選push-pull,但是缺點(diǎn)是功耗相對(duì)會(huì)大些。
如果你想要功耗低,且同時(shí)具有“線與”的功能,那么就用open-drain的模式。

(同時(shí)注意GPIO硬件模塊內(nèi)部是否有上拉電阻,如果沒(méi)有,需要硬件電路上

添加額外的上拉電阻)
正所謂,轉(zhuǎn)換速度與功耗,是魚(yú)與熊掌,二則不可兼得焉。

ze:9.0pt;line-height:115%;font-family:"微軟雅黑","sans-serif";
mso-bidi-font-family:"Times New

Roman";color:#444444;mso-ansi-language:EN-US;
mso-fareast-language:ZH-CN;mso-bidi-language:AR-SA'>功能,

任意一個(gè)變低后,開(kāi)漏線上的邏輯就為0了。這也是I2C,SMBus等總線判斷總線占用狀態(tài)的原理。

(3)利用 外部電路的驅(qū)動(dòng)能力,減少IC內(nèi)部的驅(qū)動(dòng)。當(dāng)IC內(nèi)部MOSFET導(dǎo)通時(shí),驅(qū)動(dòng)電流是從外部的VCC流經(jīng)R pull-up ,

MOSFET到GND。IC內(nèi)部?jī)H需很下的柵極驅(qū)動(dòng)電流。(4)可以利用改變上拉電源的電壓,

改變傳輸電平:圖表5 open-drain輸出電平的原理

lang=EN-US>R不能太小,因?yàn)楫?dāng)輸出為低電平的時(shí)候,

需要sink更低的transistor,這意味著更高的功耗。(此段原文:because the lower
transistor has to

sink that current when the output is low; that means higher
power consumption.)而open-drain的好處之一是,

允許你cshort(?)多個(gè)open-drain的電路,公用一個(gè)上拉電阻,此種做法稱為wired-OR連接,此時(shí)可以通過(guò)

拉低任何一個(gè)IO的pin腳使得輸出為低電平。為了輸出高電平,則所有的都輸出高電平。此種邏輯,就是“線與”的功能,

可以不需要額外的門(mén)(gate)電路來(lái)實(shí)現(xiàn)此部分邏輯。

總結(jié)

以上是生活随笔為你收集整理的GPIO推挽输出和开漏输出详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。