GPIO推挽输出和开漏输出模式区别详解

article/2025/10/10 18:18:08

以STM32参考手册中的GPIO输出配置图为例:
在这里插入图片描述
看到输出驱动器虚线框中的内容,输出驱动器中的P-MOS和N-MOS两个MOS管就是实现推挽输出和开漏输出的关键。推挽输出模式下,P-MOS和N-MOS都正常工作,开漏输出模式下,只有下面的N-MOS工作,上面的P-MOS不工作。
注意:GPIO在输出模式下没有上拉下拉配置。

推挽输出(Push-Pull Output)

推挽输出的结构是由两个三极管或者MOS管受到互补信号的控制,两个管子始终保持一个处于截止,另一个处于导通的状态。电路工作时,两只对称的开关管每次只有一个导通,所以导通损耗小、效率高、既提高电路的负载能力,又提高开关速度。如图1所示:
在这里插入图片描述
图1 推挽输出结构

推挽输出的最大特点是可以真正能真正的输出高电平和低电平,在两种电平下都具有驱动能力。
补充说明:所谓的驱动能力,就是指输出电流的能力。对于驱动大负载(即负载内阻越小,负载越大)时,例如IO输出为5V,驱动的负载内阻为10ohm,于是根据欧姆定律可以正常情况下负载上的电流为0.5A(推算出功率为2.5W)。显然一般的IO不可能有这么大的驱动能力,也就是没有办法输出这么大的电流。于是造成的结果就是输出电压会被拉下来,达不到标称的5V。当然如果只是数字信号的传递,下一级的输入阻抗理论上最好是高阻,也就是只需要传电压,基本没有电流,也就没有功率,于是就不需要很大的驱动能力。

对于推挽输出,输出高、低电平时电流的流向如图 2所示。所以相比于后面介绍的开漏输出,输出高电平时的驱动能力强很多。
在这里插入图片描述
图2 灌电流与拉电流
但推挽输出的一个缺点是,如果当两个或多个推挽输出结构的GPIO相连在一起,一个输出高电平,即上面的MOS导通,下面的MOS闭合时;同时另一个输出低电平,即上面的MOS闭合,下面的MOS导通时。电流会从第一个引脚的VCC通过上端MOS再经过第二个引脚的下端MOS直接流向GND。整个通路上电阻很小,相当于发生短路,进而可能造成端口的损害。这也是为什么推挽输出不能实现" 线与"的原因。

开漏输出(Open Drain Output)

常说的与推挽输出相对的就是开漏输出,对于开漏输出和推挽输出的区别最普遍的说法就是开漏输出无法真正输出高电平,即高电平时没有驱动能力,需要借助外部上拉电阻完成对外驱动。下面就从内部结构和原理上说明为什么开漏输出输出高电平时没有驱动能力,以及进一步比较与推挽输出的区别。

首先需要介绍一些开漏输出和开集输出。这两种输出的原理和特性基本是类似的,区别在于一个是使用MOS管,其中的"漏"指的就是MOS管的漏极;另一个使用三极管,其中的"集"指的就是MOS三极管的集电极。这两者其实都是和推挽输出相对应的输出模式,由于使用MOS管的情况较多,很多时候就用"开漏输出"这个词代替了开漏输出和开集输出。

介绍就先从开集输出开始,其原理电路结如图 3所示。

在这里插入图片描述
图3 OC开集

图 3左边的电路是开集(OC)输出最基本的电路,当输入为高电平时,NPN三极管导通,Output被拉到GND,输出为低电平;当输入为低电平时,NPN三极管闭合,Output相当于开路(输出高阻)。高电平时输出高阻(高阻、三态以及floating说的都是一个意思),此时对外没有任何的驱动能力。这就是开漏和开集输出最大的特点,如何利用该特点完成各种功能稍后介绍。这个电路虽然完成了开集输出的功能,但是会出现input为高,输出为低;input为低,输出为高的情况。

图 3右边的电路中多使用了一个三极管完成了"反相"。当输入为高电平时,第一个三极管导通,此时第二个三极管的输入端会被拉到GND,于是第二个三极管闭合,输出高阻;当输入为低电平时,第一个三极管闭合,此时第二个三极管的输入端会被上拉电阻拉到高电平,于是第二个三极管导通,输出被拉到GND。这样,这个电路的输入与输出是同相的了。

接下来介绍开漏输出的电路,如图 4所示。原理与开集输出基本相同,只是将三极管换成了MOS而已。**图4的开漏输出电路相当于图3中的右图。**MOS管不会导致电平反相。
在这里插入图片描述
图4 OD开漏
接着说说开漏、开集输出的特点以及应用,由于两者相似,后文中若无特殊说明,则用开漏表示开漏和开集输出电路。

开漏输出最主要的特性就是高电平没有驱动能力,需要借助外部上拉电阻才能真正输出高电平,其电路如图 5所示。
在这里插入图片描述
图5 OD门上拉
当MOS管闭合时,开漏输出电路输出高电平,且连接着负载时,电流流向是从外部电源,流经上拉电阻RPU,流进负载,最后进入GND。

开漏输出的这一特性一个明显的优势就是可以很方便的调节输出的电平,因为输出电平完全由上拉电阻连接的电源电平决定。所以在需要进行电平转换的地方,非常适合使用开漏输出。
开漏输出的这一特性另一个好处在于可以实现"线与"功能,所谓的"线与"指的是多个信号线直接连接在一起,只有当所有信号全部为高电平时,合在一起的总线为高电平;只要有任意一个或者多个信号为低电平,则总线为低电平。而推挽输出就不行,如果高电平和低电平连在一起,会出现短路电流倒灌,损坏器件。

总结

在这里插入图片描述

开漏形式的电路有以下几个特点:

1、利用外部电路的驱动能力,减少IC内部的驱动。当IC内部MOSFET导通时,驱动电流是从外部的VCC流经R pull-up ,MOSFET到GND。IC内部仅需很下的栅极驱动电流。

2、一般来说,开漏是用来连接不同电平的器件,匹配电平用的,因为开漏引脚不连接外部的上拉电阻时,只能输出低电平,如果需要同时具备输出高电平的功能,则需要接上拉电阻,很好的一个优点是通过改变上拉电源的电压,便可以改变传输电平。比如加上上拉电阻就可以提供TTL/CMOS电平输出等。(上拉电阻的阻值决定了逻辑电平转换的沿的速度 。阻值越大,速度越低功耗越小,所以负载电阻的选择要兼顾功耗和速度。)
比如STM32用3.3V供电,将GPIO设置为开漏输出模式,同时引脚外部接上拉电阻到5V,则高电平时可以拉到5V,不需要接特殊的电平转换电路或芯片,即用一个电阻实现了3.3V转5V,当然上升沿速度受电阻大小影响。(理论成立,没有进行验证)

3、OPEN-DRAIN提供了灵活的输出方式,但是也有其弱点,就是带来上升沿的延时。因为上升沿是通过外接上拉无源电阻对负载充电,所以当电阻选择小时延时就小,但功耗大;反之延时大功耗小。所以如果对延时有要求,则建议用下降沿输出。

4、可以将多个开漏输出的Pin,连接到一条线上。通过一只上拉电阻,在不增加任何器件的情况下,形成“与逻辑”关系。这也是I2C,SMBus等总线判断总线占用状态的原理。
补充:什么是“线与”?:
在一个结点(线)上, 连接一个上拉电阻到电源 VCC 或 VDD 和 n 个 NPN 或 NMOS 晶体管的集电极 C 或漏极 D, 这些晶体管的发射极 E 或源极 S 都接到地线上, 只要有一个晶体管饱和, 这个结点(线)就被拉到地线电平上。 因为这些晶体管的基极注入电流(NPN)或栅极加上高电平(NMOS),晶体管就会饱和, 所以这些基极或栅极对这个结点(线)的关系是或非 NOR 逻辑。 如果这个结点后面加一个反相器, 就是或 OR 逻辑。

其实可以简单的理解为:在所有引脚连在一起时,外接一上拉电阻,如果有一个引脚输出为逻辑0,相当于接地,与之并联的回路“相当于被一根导线短路”,所以外电路逻辑电平便为0,只有都为高电平时,与的结果才为逻辑1。

关于准双向IO,实际上结构类似于开漏输出,只不过是把上拉电阻集成到了单片机内部。(跟开漏输出有点关系,顺带放这)
如51单片机的P1 ~ P3端口
在这里插入图片描述

参考:
https://blog.csdn.net/techexchangeischeap/article/details/72569999
http://www.360doc.com/content/15/0113/16/20337528_440450286.shtml
https://zhuanlan.zhihu.com/p/41942876
https://blog.csdn.net/xiaoweiboy/article/details/6714199


http://chatgpt.dhexx.cn/article/OwRokIs8.shtml

相关文章

一文了解推挽输出结构Output_push_pull

拉电阻作为输出(或输入输出)时牵涉到的知识点会更多一些,但本质的功能也是将电平箝位,最常见的输出上拉电阻出现在开集(Open Collector,OC)或开漏(Open Drain,OD)结构的引脚。 我们有…

推挽与开漏输出详解(转)

来源-http://www.51hei.com/mcu/3988.html 建议读者阅读原文,确保获得完整的信息,侵权请联系删除。 推挽输出:可以输出高,低电平,连接数字器件;推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止. 开漏输出:输出…

深刻理解GPIO(上拉输入、下拉输入、模拟输入、浮空输入,开漏输出,推挽输出的区别,以STM32为例)

目录 前言GPIO是什么GPIO的八大模式输入模式浮空输入上拉输入下拉输入模拟输入 输出模式开漏输出推挽输出复用开漏输出复用推挽输出 GPIO的输出速率 前言 学习了这么久的单片机,说来羞愧,直到写这篇文章之前,我都没有仔细去理解GPIO的八种使…

从硬件分析推挽输出和开漏输出详细区别

推挽输出:可以输出高,低电平,连接数字器件。 输出 0 时,N-MOS 导通,P-MOS 高阻,输出0。 输出 1 时,N-MOS 高阻,P-MOS 导通,输出1(不需要外部上拉电路)。 开漏输出:输出端相当于三…

推挽电路

作者:阏男秀 链接:https://www.zhihu.com/question/28512432/answer/41217074 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 我觉得下面这个「网上资料」还是很不错的。 单片机I/O口推挽输…

推挽电路 MOS管、推挽输出和开漏输出

【专题5:硬件设计】 之 【48.推挽电路驱动MOS管】_嵌入式工程师成长之路的博客-CSDN博客_推挽驱动 【专题2:电子工程师 之 硬件】 之 【44.MOS管的功能特点】 【专题2:电子工程师 之 硬件】 之 【45.AON6244 MOS管数据手册分析】 【专题2&…

关于推挽输出和开漏输出的理解

原文链接: 【1】 如何正确理解开漏输出和推挽输出 (写的很棒,真的是很通俗易懂了~) 【2】 什么是开漏电路(推挽电路)?开漏形式的电路由何特点? 【3】 开漏、开集电路详解 下面是看…

开漏输出、推挽输出

摘自:http://www.cnblogs.com/ne-zha/p/7422302.html 1、开漏输出 开漏输出只能输出低电平,类似于三极管的集电极,要输出高电平需要上拉电阻才能输出 我们先来说说集电极开路输出的结构。集电极开路输出的结构如图1所示,右边的…

常用的推挽输出、开漏输出、上拉输入

转载  https://blog.csdn.net/hailin0716/article/details/24333951  一、推挽输出: 可以输出高,低电平,连接数字器件; 推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止。高低电平由IC…

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

关注、星标公众号,直达精彩内容 来源:网路素材 推挽输出:可以输出高,低电平,连接数字器件; 开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内). 推挽结构一般是指两个…

推挽输出

推挽输出是用两个晶体管或者场效应管构成的推挽电路(在模拟电路中应用很广泛如功放驱动电机驱动等等),这个电路的特点就是输出电阻小, 所以能够驱动大的负载,从而能够使得单片机管脚直接驱动发光二极管、蜂鸣器、甚至更…

Windows7安装教程

Windows7安装教程 硬盘分区教程:http://www.laomaotao.org/jiaocheng/92/cpfq.html 以下安装教程仅供参考 一、桌面安装 二、U盘安装 三、安装驱动 四、激活 用到的硬件: 电脑 U盘 用到的软件: Windows7旗舰版安装包 老毛桃U盘制作…

怎么安装w7计算机系统安装,图解如何安装win7系统

最近,小编发现很多小伙伴都想要知道u盘安装win7系统的方法呢,其实u盘安装win7的方法非常简单,大家如果想学习的话,那小编我肯定是会教你们的,所以废话不多说,现在我就来给你们演示一下怎样装系统win7系统的…

U盘安装win7系统 “详细” 教程

准备工具: 一个装有系统(iso镜像)的老毛桃U盘、一台电脑、一个人; 一、将U盘插入电脑 —— 开机过程中 “拼命” 狂按F2直到进入BIOS ,如下图: 二、选择右边第二个 “启动菜单” —— 选择你的U盘&#…

win7装xp(win7装xp双系统教程)

xp可以装win7?xp可以装win7吗 这是两个系统并且互相不冲突,win7是XP的升级,功能更强大,只要你的电脑配置够了就可以装,内存最低4G! Win7和XP的装法不一样吗? 一样,差不太多&#xff…

window7系统怎么给电脑安装

系统安装步骤: 1、用制作u启动盘,重启电脑等待出现开机画面按下启动快捷键,选择u盘启动进入到u深度主菜单,选取“win8Pe装机维护版(新机器)”选项 2、进入win8Pe系统,将会自行弹出安装工具&am…

怎么给电脑安装window7系统呢

系统安装步骤: 1、用制作u启动盘,重启电脑等待出现开机画面按下启动快捷键,选择u盘启动进入到u深度主菜单,选取“win8Pe装机维护版(新机器)”选项 2、进入win8Pe系统,将会自行弹出安装工具&am…

下载并安装Windows 7 系统的步骤

一、打开百度搜索 ‘系统之家官方’ 找到官方地址后打开 二、找到自己需要安装的系统镜像进行下载 (目前我需要的是Win 7镜像) 三、将下载完毕的镜像文件解压到非系统盘(即非U盘)外的其他盘根目录下(例如:D盘) 四…

Win7系统安装教程

安装准备工作 ● 提前下载好win7光盘映像文件 ● 解压工具 ● 做好重要文件的备份(数据无价) ● 提前准备好网卡驱动 安装步骤 1、使用解压工具把win7原版镜像文件解压到C盘之外的分区,比如D盘。然后打开文件夹点击setup.exe (或用pe制作…

客户端Git安装教程

首先打开Git官网https://git-scm.com/ 然后选择合适的版本去下载,我的电脑是64位的,查看自己电脑是什么操作系统,右击【我的电脑】—>属性 就看到了 接下来就是双击下载好的安装包,同意条款,选择安装路径 然后就是…