单片机IO口科普:推挽输出、开漏输出详解

💡 原文中文,约3200字,阅读约需8分钟。
📝

内容提要

推挽输出和开漏输出是数字器件的两种输出结构,推挽输出适用于电流型驱动,可以输出高低电平,驱动能力强;开漏输出适用于电流吸收能力较强的情况,需要外部上拉电阻来得到高电平状态,可以连接多个输出形成与逻辑关系。开漏输出和开集输出原理类似,可以互相替代,但开漏输出的驱动能力较差。推挽输出在CMOS电路中应用更广泛。

🔎

延伸解读

推挽与开漏的核心差异:驱动能力与电平来源

推挽输出用上下两个开关管分别驱动高、低电平,因此高低电平驱动能力都强;开漏输出去掉了上管,高电平只能靠外部上拉电阻提供,低电平由内部晶体管拉低。这意味着开漏的高电平边沿速度受上拉电阻和负载电容影响,电阻越小速度越快但功耗越大,电阻越大则相反。推挽输出则不存在这个上升沿延时问题,但两个推挽输出直接对接可能因电平不同产生大电流而损坏端口。

开漏输出的典型用途:电平转换与线与逻辑

开漏输出允许上拉电阻接到不同于芯片电源的电压,因此可实现电平转换,例如用低电平逻辑控制较高电压的逻辑输出。多个开漏引脚连到同一根线时,任意一个拉低整条线即为低,形成“与逻辑”,这也是I2C等总线判断占用状态的原理。但开漏引脚不接上拉电阻时只能输出低电平,经典51单片机P0口作输入输出时就必须外加上拉电阻。

上拉电阻的选择:速度与功耗的权衡

开漏输出的上升沿靠外接无源电阻对负载充电,下降沿则由内部晶体管有源驱动,因此上拉电阻只影响上升沿、不影响下降沿。电阻越小上升时间越短,但脉冲下降沿时电源通过上拉电阻和导通的晶体管对地形成通路,带来额外功耗。实际选择时应在末级晶体管功耗允许范围内取值,若对上升沿要求不高可尽量取大电阻以减小对地电流;若对延时敏感,可优先利用下降沿输出。

开漏与开集:可互换但需注意驱动能力

开漏基于MOSFET漏极,开集基于三极管集电极,两者原理类似,许多应用中可用开集电路代替开漏电路来驱动要求开漏输入的引脚,既方便又节省成本。不过文章也指出,开漏输出驱动能力较差的说法并不准确,驱动能力实际取决于IC末级晶体管的功率;开漏的主要代价是上升沿延时,而非绝对驱动能力弱。推挽输出则在CMOS电路中应用更广泛,输出级设计最常见。

❓

Q&A

推挽输出和开漏输出在驱动能力上有什么区别?

推挽输出可以输出高电平和低电平,高低电平驱动能力都很强;开漏输出需要外部上拉电阻才能得到高电平,驱动能力较差,但电流吸收能力较强(通常在20mA以内)。

开漏输出为什么需要外接上拉电阻?

开漏输出的输出端相当于三极管的集电极(或MOSFET的漏极),当内部开关断开时输出端悬空(高阻态),无法输出高电平,因此需要外接上拉电阻来提供高电平状态。

开漏输出如何实现线与功能?

多个开漏输出引脚可以连接到同一条线上,当任意一个引脚输出低电平时,整条线被拉低;只有所有引脚都输出高电平时,线才为高电平,从而形成“与逻辑”关系。

推挽输出为什么不能将两个输出口直接接在一起?

推挽输出结构上下两个开关管,当两个输出口输出不同电平时,会形成电源到地的低阻通路,产生很大的电流,可能烧坏输出口。

开漏输出中上拉电阻的阻值如何影响电路性能?

上拉电阻的阻值影响上升沿时间:阻值小,上升沿延时小但功耗大;阻值大,延时大但功耗小。选择时需在芯片功耗允许范围内兼顾速度与功耗。

开漏输出如何实现电平转换?

开漏输出的高电平由外部上拉电阻所接的电源电压决定,而输入逻辑电平由芯片内部电源决定,因此可以通过改变上拉电源电压来实现不同逻辑电平的转换。

🏷️

标签

➡️

继续阅读