Open-Drain与Push-Pull

open-drainpush-pull的上拉速度 一般IOopen-drainpush-pull两种结构,两种IO结构不同,上拉速度也不一样,有时在选择IO口采用哪种方式时要考虑上拉速度能不能满足IO口的传输速率要求。open-drainpush-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输出电平的原理
OD输出电平的原理

缺点:开漏Pin不连接外部的上拉电阻,则只能输出低电平。当输出电平为低时,N沟道三极管是导通的,这样在Vcc'和GND之间有一个持续的电流流过上拉电阻R和三极管Q1。这会影响整个系统的功耗。采用较大值的上拉电阻可以减小电流。但是,但是大的阻值会使输出信号的上升时间变慢。即上拉电阻R pull-up的阻值 决定了逻辑电平转换的沿的速度。阻值越大,速度越低功耗越小。反之亦然。

==================================

常见的GPIO的模式可以配置为open-drain或push-pull,具体实现上,常为通过配置对应的寄存器的某些位来配置为open-drain或是push-pull。当我们通过CPU去设置那些GPIO的配置寄存器的某位的时候,其GPIO硬件IC内部的实现是,会去打开或关闭对应的top transistor。相应地,如果设置为了Open-D模式的话,是需要上拉电阻才能实现,也能够输出高电平的。因此,如果硬件内部(internal)本身包含了对应的上拉电阻的话,此时会去关闭或打开对应的上拉电阻。如果GPIO硬件IC内部没有对应的上拉电阻的话,那么你的硬件电路中,必须自己提供对应的外部(external)的上拉电阻。而push-pull输出的优势是速度快,因为线路是以两种方式驱动的。而带了上拉电阻的线路,即使以最快的速度去提升电压,最快也要一个常量的R×C的时间。其中R是电阻,C是寄生电容(parasitic capacitance),包括了pin脚的电容和板子的电容。但是,push-pull相对的缺点是往往需要消耗更多的电流,即功耗相对大。而open-drain所消耗的电流相对较小,由电阻R所限制,而R不能太小,因为当输出为低电平的时候,需要sink更低的transistor,这意味着更高的功耗。而open-drain的好处之一是,允许你short多个open-drain的电路,共用一个上拉电阻,此种做法称为wired-OR连接,此时可以通过拉低任何一个IO的pin脚使得输出为低电平。为了输出高电平,则所有的都输出高电平。此种逻辑,就是“线与”的功能,可以不需要额外的门电路来实现此部分逻辑。

"open drain push pull
The push-pull output actually uses two transistors. Each will be on to drive the output to the appropriate level: the top transistor will be on when the output has to be driven high and the bottom transistor will turn on when the output has to go low.

The open-drain output lacks the top transistor. When the output has to go high you simply turn off the bottom transistor, but the line is now pulled high only by the pullup resistor.

Your micro allows you to select between the two types, which means that by setting some bits in some register you actually enable/ disable the top transistor and enable/disable the pullup (if internal, otherwise you just disable the top transistor and have to use an external pullup)

The advantage of the push-pull output is the higher speed, because the line is driven both ways. With the pullup the line can only rise as fast as the RC time constant allows. The R is the pullup, the C is the parasitic capacitance, including the pin capacitance and the board capacitance.
The push-pull can typically source more current. With the open-drain the current is limited by the R and R cannot be made very small, because the lower transistor has to sink that current when the output is low; that means higher power consumption.

However, the open-drain allows you to cshort several outputs together, with a common pullup. This is called an wired-OR connection. Now you can drive the output low with any of the IO pins. To drive it high all ouputs have to be high. This is advantageous in some situations, because it eliminates the external gates that would otherwise be required."
===================================

【open-drain和push-pull的总结】
对于GPIO的模式的设置,在不考虑是否需要额外的上拉电阻的情况下,是设置为open-drain还是push-pull,说到底,还是个权衡的问题:
如果你想要电平转换速度快的话,那么就选push-pull,但是缺点是功耗相对会大些。
如果你想要功耗低,且同时具有“线与”的功能,那么就用open-drain的模式。(同时注意GPIO硬件模块内部是否有上拉电阻,如果没有,需要硬件电路上添加额外的上拉电阻)
正所谓,转换速度与功耗,是鱼与熊掌,二则不可兼得焉。
GPIO输入输出各种模式(推挽、开漏、准双向端口)详解 技术交流是便宜的博客地址:http://blog.csdn.net/techexchangeischeap 概述 能将处理器的GPIO(General Purpose Input and Output)内部结构和各种模式彻底弄清楚的人并不多,最近在百度上搜索了大量关于这部分的资料,对于其中很多问题的说法并不统一。本文尽可能的将IO涉及到的所有问题罗列出来,对于有明确答案的问题解释清楚,对于还存 阅读详情

相关推荐

什么是GPIO的推挽输出和开漏输出

开漏输出最大的优点就是可以实现线,两个开漏输出的IO口可以接在一起,当有一个IO为低电平时,其输出就为低电平,只有当两个IO全部为高电平时,输出才为高电平。推挽输出两个IO如果接在一起可能一个IO上面的MOS导通,另一个IO下面的MOS管导通,这样会损坏芯片。所以为了使开漏输出有高电平的输出能力,我们一般需要在外围加上拉电阻。当上面的MOS管导通时,GPIO输出高电平1,称为“推”当下面MOS管导通时,GPIO输出低电平0,称为“挽”1.可实现电平转换,输出电平取决于上拉电阻电源;4.电平切换速度快。

谢谢关注“小鱼教你模数电”,各平台同号 7154

整理笔记——推挽输出、开漏输出

在使用MCU时,常看到配置IO口为推挽输出、开漏输出,以STM32为例,IO口有一下集中模式,单片机的内部电路简化图如下:1.推挽输出2.开漏输出3.复用推挽输出4.复用开漏输出。

#include 4万+

Open-DrainPush-Pull、floating input

Open-DrainPush-Pull、floating input 根据网上搜集的资料进行了整理! 在配置GPIO(General Purpose Input Output)管脚的时候,常会见到两种模式:开漏(open-drain,漏极开路)和推挽(push-pull)。对此两种模式,有何区别和联系,下面整理了一些资料,来详细解释一下: 一、Push-Pull推挽输出 1、原理 输出

sygdp21的专栏 7588

开漏输出(open drain推挽输出(push pull)学习详解及某个踩到的坑分享

推挽输出和开漏输出是单片机的两种基本状态,实际的性质有所区别,下面是个人的分析,若有不对之处敬请指正。 (1)推挽输出:有确定的输出状态(非0即1) (2)开漏输出(OD):不附加上拉电阻时没有高电平输出能力,线逻辑实现方案 当多个OD共享一个上拉电阻Rp时,只要有任意一个输出为0,其他所有的输出也都会被拉到地,因此假定逻辑输入为A、B,一般为了控制逻辑和实际输出的电平逻辑一致,会在控制端附加反相器,因此会出现图片里逻辑功能函数L = ~B · ~A的情况。 (3)踩到的坑 算是SPI的不规范用法吧,

qianzilu的博客 3万+

Open drain & push pull 原理(转)

最近在写GPIO的driver, 在配置GPIO管脚时,看见了感觉熟悉的两个名词:Open Drain and Push Pull。可是一时对它们的原理及区别有感觉很模糊,故上网收集了一些资料复习一下。 所谓开漏电路概念中提到的“漏”就是指MOSFET的漏极。同理,开集电路中的“集”就是指三极管的集电极。开漏电路就是指以MOSFET的漏极为输出的电路。一般的用法是会在漏极外部的电路添加上...

pan0755的博客 2万+

open-drainpush-pull】图表对比

open-drainpush-pull】 GPIO的功能,简单说就是可以根据自己的需要去配置为输入或输出。但是在配置GPIO管脚的时候,常会见到两种模式:开漏(open-drain,漏极开路)和推挽(push-pull)。 对此两种模式,有何区别和联系,下面整理了一些资料,来详细解释一下: 图表 1 Push-Pull对比Open-Drain Push-Pull推挽输出

tidavery的专栏 7409

MCU的GPIO输出模式Open Drain & Push/Pull的理解

** MCU的GPIO输出模式Open Drain & Push/Pull的理解 ** 【Push-Pull推挽输出】 原理: 输出的器件是指输出脚内部集成有一对互补的MOSFET,当Q1导通、Q2截止时输出高电平;而当Q1截止导通、Q2导通时输出低电平。Push-Pull输出,实际上内部是用了两个晶体管(transistor),此处分别称为Top-Transistor和Bottom-Transistor。通过开关对应的晶体管,输出对应的电平。Top-Transistor打开(Bottom-Tran

qq_44764418的博客 4154

【转】open-drainpush-pull

【转】open-drainpush-pull open-drainpush-pull GPIO的功能,简单说就是可以根据自己的需要去配置为输入或输出。但是在配置GPIO管脚的时候,常会见到两种模式:开漏(open-drain,漏极开路)和推挽(push-pull)。 对此两种模式,有何区别和联系,下面整理了一些资料,来详细解释一下: 图表 1 Push-Pull对比Open-Drain Pus...

qq_43021446的博客 629

drain open 线_【转】open-drainpush-pull

Push-Pull推挽输出Open-Drain开漏输出原理输出的器件是指输出脚内部集成有一对互补的MOSFET,当Q1导通、Q2截止时输出高电平;而当Q1截止导通、Q2导通时输出低电平开漏电路就是指以MOSFET的漏极为输出的电路。指内部输出和地之间有个N沟道的MOSFET(Q1),这些器件可以用于电平转换的应用。输出电压由Vcc'决定。Vcc'可以大于输入高电平电压VCC(up-translat...

weixin_40005542的博客 443

Open drain & push pull 原理

      最近在写GPIO的driver, 在配置GPIO管脚时,看见了感觉熟悉的两个名词:Open Drain and Push Pull。可是一时对它们的原理及区别有感觉很模糊,故上网收集了一些资料复习一下。      所谓开漏电路概念中提到的“漏”就是指MOSFET的漏极。同理,开集电路中的“集”就是指三极管的集电极。开漏电路就是指以MOSFET的漏极为输出的电路。一般的用法是会在漏极

tjuchenzj的技术资料收藏 2252

推挽(Push-Pull) vs 开漏(Open-Drain)

作者:crifan (http://bbs.chinaunix.net) 邮箱:green-waste@163.com 【Open-DrainPush-Pull】 GPIO的功能,简单说就是可以根据自己的需要去配置为输入或输出。(General Purpose Input Output,简称为GPIO或总线扩展器,利用工业标准I2C、SMBus™或SPI™接口简化了I/O口的扩展。当微

cfy_phonex的专栏 1万+

drain open 线_Open-DrainPush-Pull

GPIO的功能,简单说就是可以根据自己的需要去配置为输入或输出。(General Purpose Input Output,简称为GPIO或总线扩展器,利用工业标准I2C、SMBus?或SPI?接口简化了I/O口的扩展。当微控制器或芯片组没有足够的I/O端口,或当系统需要采用远端串行通信或控制时,GPIO产品能够提供额外的控制和监视功能。)但是在配置GPIO管脚的时候,常会见到两种模式:开漏(op...

weixin_39923157的博客 211

open drainpush pull

GPIO常常可以设置为输出和输入;在配置GPIO管脚的时候,常会见到两种模式:开漏(open-drain,漏极开路)和推挽(push-pull)这里先熟悉下什么是mos管:MOS管,即绝缘性场效应管。MOS英文全称为Metal-Oxide-Semiconductor即金属-氧化物-半导体,常用做开关元件;

ForDream321的专栏 6700
上一篇: Android Study -- pmem driver代码分析
下一篇: uksm
ryder001
博客等级 码龄14年 24粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值