日本高清不卡中文字幕-一起草草视频在线观看-亚洲精品一区二区三区色-国产亚洲精品免费视频

你好!歡迎來(lái)到深圳市穎特新科技有限公司!
語(yǔ)言
當(dāng)前位置:首頁(yè) >> 技術(shù)中心 >> 單片機(jī)入門(mén) >> 單片機(jī)I/O口推挽輸出與開(kāi)漏輸出的區(qū)別

單片機(jī)I/O口推挽輸出與開(kāi)漏輸出的區(qū)別

關(guān)鍵字:單片機(jī) 開(kāi)漏輸出 作者:admin 來(lái)源:不詳 發(fā)布時(shí)間:2018-05-19  瀏覽:8

推挽(push-pull):推挽輸出的器件是指輸出腳內(nèi)部集成有一對(duì)互補(bǔ)的MOSFET,當(dāng)Q1導(dǎo)通、Q2截止時(shí)輸出高電平;而當(dāng)Q1截止導(dǎo)通、Q2導(dǎo)通時(shí)輸出低電平。一個(gè)導(dǎo)通另一個(gè)就截止。

集電極開(kāi)路:輸出端相當(dāng)于孤立三極管的集電極. 要得到高電平狀態(tài)需要上拉電阻才行. 適合于做電流型的驅(qū)動(dòng),其吸收電流的能力相對(duì)強(qiáng)(一般20ma以內(nèi))。

1集電極開(kāi)路輸出的結(jié)構(gòu)

1> 如圖1所示,右邊的那個(gè)三極管集電極什么都不接,所以叫做集電極開(kāi)路(左邊的三極管為反相之用,使輸入為“0”時(shí),輸出也為“0”)。對(duì)于圖1,當(dāng)左端的輸入為“0”時(shí),前面的三極管截止(即集電極C跟發(fā)射極E之間相當(dāng)于斷開(kāi)),所以5V電源通過(guò)1K電阻加到右邊的三極管上,右邊的三極管導(dǎo)通(即相當(dāng)于一個(gè)開(kāi)關(guān)閉合);當(dāng)左端的輸入為“1”時(shí),前面的三極管導(dǎo)通,而后面的三極管截止(相當(dāng)于開(kāi)關(guān)斷開(kāi))。

單片機(jī)IO口設(shè)置推挽和開(kāi)漏的區(qū)別 - 冷水泡茶 - 冷水泡茶

我們將圖1簡(jiǎn)化成圖2的樣子。圖2中的開(kāi)關(guān)受軟件控制,“1”時(shí)開(kāi)關(guān)閉合時(shí),輸出直接接地,所以輸出電平為0。"0"時(shí)當(dāng)開(kāi)關(guān)斷開(kāi)時(shí),則輸出端懸空了,即高阻態(tài)(順便了解下高阻態(tài))。這時(shí)電平狀態(tài)未知,如果后面一個(gè)電阻負(fù)載(即使很輕的負(fù)載)到地,那么輸出端的電平就被這個(gè)負(fù)載拉到低電平了,所以這個(gè)電路是不能輸出高電平的。

2> 圖三是集電極開(kāi)路加上拉電阻的情況。圖三中那個(gè)1k的電阻即是上拉電阻。如果開(kāi)關(guān)閉合,則有電流從1k電阻及開(kāi)關(guān)上流過(guò),但由于開(kāi)關(guān)閉和時(shí)電阻為0(方便我們的討論,實(shí)際情況中開(kāi)關(guān)電阻不為0,另外對(duì)于三極管還存在飽和壓降),所以在開(kāi)關(guān)上的電壓為0,即輸出電平為0。如果開(kāi)關(guān)斷開(kāi),則由于開(kāi)關(guān)電阻為無(wú)窮大(同上,不考慮實(shí)際中的漏電流),所以流過(guò)的電流為0,因此在1k電阻上的壓降也為0,所以輸出端的電壓就是5v了,這樣就能輸出高電平了。

關(guān)于上拉電阻的選擇問(wèn)題。我們從圖三知道,這個(gè)輸出的內(nèi)阻是比較大的(即1kω),如果接一個(gè)電阻為r的負(fù)載,通過(guò)分壓計(jì)算,就可以算得最后的輸出電壓為5*r/(r+1000)伏,即5/(1+1000/r)伏。所以,如果要達(dá)到一定的電壓的話,r就不能太小。如果r真的太小,而導(dǎo)致輸出電壓不夠的話,那我們只有通過(guò)減小那個(gè)1k的上拉電阻來(lái)增加驅(qū)動(dòng)能力。但是,上拉電阻又不能取得太小,因?yàn)楫?dāng)開(kāi)關(guān)閉合時(shí),將產(chǎn)生電流,由于開(kāi)關(guān)能流過(guò)的電流是有限的,因此限制了上拉電阻的取值,另外還需要考慮到,當(dāng)輸出低電平時(shí),負(fù)載可能還會(huì)給提供一部分電流從開(kāi)關(guān)流過(guò),因此要綜合這些電流考慮來(lái)選擇合適的上拉電阻。

如果我們將一個(gè)讀數(shù)據(jù)用的輸入端接在輸出端,這樣就是一個(gè)io口了(51的io口就是這樣的結(jié)構(gòu),其中p0口內(nèi)部不帶上拉,而其它三個(gè)口帶內(nèi)部上拉),當(dāng)我們要使用輸入功能時(shí),只要將輸出口設(shè)置為1即可,這樣就相當(dāng)于那個(gè)開(kāi)關(guān)斷開(kāi),而對(duì)于p0口來(lái)說(shuō),就是高阻態(tài)了。

3> 對(duì)于漏極開(kāi)路(OD)輸出,跟集電極開(kāi)路輸出是十分類(lèi)似的。將上面的三極管換成場(chǎng)效應(yīng)管即可。這樣集電極就變成了漏極,OC就變成了OD,原理分析是一樣的。

2 推挽輸出

推挽輸出的結(jié)構(gòu)就是把上面的上拉電阻也換成一個(gè)開(kāi)關(guān),當(dāng)要輸出高電平時(shí),上面的開(kāi)關(guān)通,下面的開(kāi)關(guān)斷;而要輸出低電平時(shí),則剛好相反。比起OC或者OD來(lái)說(shuō),這樣的推挽結(jié)構(gòu)高、低電平驅(qū)動(dòng)能力都很強(qiáng)。如果兩個(gè)輸出不同電平的輸出口接在一起的話,就會(huì)產(chǎn)生很大的電流,有可能將輸出口燒壞。而上面說(shuō)的OC或OD輸出則不會(huì)有這樣的情況,因?yàn)樯侠娮杼峁┑碾娏鞅容^小。如果是推挽輸出的要設(shè)置為高阻態(tài)時(shí),則兩個(gè)開(kāi)關(guān)必須同時(shí)斷開(kāi)(或者在輸出口上使用一個(gè)傳輸門(mén)),這樣可作為輸入狀態(tài),AVR單片機(jī)的一些IO口就是這種結(jié)構(gòu)。

一般情況下我們?cè)陔娐吩O(shè)計(jì)編程過(guò)程中設(shè)置單片機(jī),大多是按照固有的模式去做的,做了幾年這一行了,也沒(méi)碰到過(guò)什么問(wèn)題。昨天就遇到了這樣一個(gè)問(wèn)題,電路結(jié)構(gòu)如圖一,在這種情況下STC單片機(jī)與410單片機(jī)通訊是沒(méi)問(wèn)題的但是與PC就無(wú)法通訊了,STC收不到PC的命令,以前410的位置是用的STC的片子一直沒(méi)問(wèn)題,我想也許是驅(qū)動(dòng)能力不夠,在410TX端加了上拉,不過(guò)沒(méi)起作用。用示波器監(jiān)視串口得到面的波形如圖二:

這說(shuō)明sp3232下拉得不夠,于是加了下拉,還是沒(méi)起作用。又把410端口內(nèi)部的上拉去掉,結(jié)果還是一樣。最后請(qǐng)教老師,在410程序里將TX的工作方式由推挽式改為開(kāi)漏式,一切ok~!

附另外一篇文章:http://www.9mcu.com/9mcubbs/forum.php?mod=viewthread&tid=1353講的也挺好

GPIO的推挽輸出和開(kāi)漏輸出(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í)輸出低電平開(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),此處分別稱(chēng)為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è)上拉電阻,此種做法稱(chēng)為wired-OR連接,此時(shí)可以通過(guò)拉低任何一個(gè)IO的pin腳使得輸出為低電平。為了輸出高電平,則所有的都輸出高電平。此種邏輯,就是“線與”的功能,可以不需要額外的門(mén)(gate)電路來(lái)實(shí)現(xiàn)此部分邏輯。
原理圖圖表 2 push-pull原理圖#FormatImgID_2#圖表 3 open-drain原理圖
#FormatImgID_3#  

圖表 4 open-drain“線與”功能
#FormatImgID_4#
優(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)能力,減少I(mǎi)C內(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輸出電平的原理
#FormatImgID_5# IC的邏輯電平由電源Vcc1決定,而輸出高電平則由Vcc2決定。這樣我們就可以用低電平邏輯控制輸出高電平邏輯了。
缺點(diǎn)一條總線上只能有一個(gè)push-pull輸出的器件;
開(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)換的沿的速度
。阻值越大,速度越低功耗越小。反之亦然。
特點(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ú)與熊掌,二則不可兼得焉。

擴(kuò)展閱讀:PIC單片機(jī)的抗干擾能力強(qiáng)還是AVR單片機(jī)的強(qiáng)?

編輯:admin  最后修改時(shí)間:2018-05-22

聯(lián)系方式

0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬(wàn)眾潤(rùn)豐創(chuàng)業(yè)園A棟2樓A08

Copyright © 2014-2023 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號(hào)-4

榕江县| 竹山县| 贵州省| 新津县| 江都市| 神木县| 临高县| 临高县| 如东县| 焉耆| 旬阳县| 景宁| 梓潼县| 玉山县| 彭阳县| 库车县| 嘉兴市| 米林县| 页游| 黄梅县| 淳化县| 厦门市| 万宁市| 军事| 鸡西市| 巨野县| 武鸣县| 定日县| 富民县| 区。| 酒泉市| 包头市| 嘉善县| 垣曲县| 呼玛县| 闻喜县| 苏尼特左旗| 高要市| 来宾市| 阿尔山市| 黄山市|