GPIO开漏输出和推挽输出有什么区别
摘要:推挽输出和开漏输出是两种常见的数字输出模式。推挽输出由互补MOSFET组成,具有高速切换和强驱动能力,适用于SPI、PWM等应用,但不能并联使用。开漏输出仅包含下拉MOSFET,需外接上拉电阻,支持电平转换和多机"线与"连接,适用于I2C总线等场景。推挽输出在高低电平切换时功耗低,而开漏输出在高电平时存在上拉电阻功耗。两种模式各有特点:推挽适合高速驱动应用,开漏则更适合需要电平兼容和多机通信的场合。
目录
一. 推挽输出 (Push-Pull)
(1)工作原理:
(2)优点:
(3)缺点:
(4)输出电压:
二. 开漏输出 (Open-Drain)
三、开漏和推挽对比图
四、开漏和推挽输出分别应用场景
1. 推挽输出 (Push-Pull) 的典型应用
2. 开漏输出 (Open-Drain) 的典型应用
一. 推挽输出 (Push-Pull)
它的输出级由两个互补的晶体管(通常是 MOSFET)组成,一个连接到电源(VCC),一个连接到地(GND)。
(1)工作原理:
当输出高电平时,上面的管子导通,把电压“推”向高位;当输出低电平时,下面的管子导通,把电流“拉”向地。
(2)优点:
a.速度快: 电平切换迅速。
b.驱动能力强: 可以直接驱动 LED 等负载。
(3)缺点:
不可并联。 如果两个推挽输出接在一起,一个输出高,一个输出低,会造成电源短路(烧毁芯片)。
(4)输出电压:
只有3V3,没办法输出5V
如果 I2C 使用推挽输出,不仅会导致通信失败,还极有可能物理损坏MCU(烧毁引脚)。
假设主设备想要发送“高电平(1)”,其内部的上管导通,将 SDA 拉向 VCC;与此同时,从设备想要应答“低电平(0)”,其内部的下管导通,将 SDA 拉向 GND。
后果: 此时 VCC 和 GND 通过两个 MOSFET 直接连通。由于 MOSFET 的导通电阻极小,电路中会产生巨大的电流。
二. 开漏输出 (Open-Drain)
在这种模式下,内部晶体管只负责“接地”。
-
工作原理: 内部只有一个连接到 GND 的管子。当输出“低”时,管子闭合,输出接地;当输出“高”时,管子断开,输出端处于高阻态(悬空)。
-
核心要求: 必须外接一个上拉电阻连接到电源,才能输出高电平。
-
优点: 电平转换: 可以通过调节上拉电阻的电压,实现 3.3V 芯片驱动 5V 设备。
线与(Wired-AND): 多个开漏引脚可以接在一起。只要有一个引脚输出低,整个线路就是低。这在 I2C 总线中非常关键。 -
缺点: * 上升沿慢: 依靠电阻充电,电平由低变高的速度比推挽慢。
-
输出电压:可以输出3V3和5V
开漏输出没法靠自己(推电流)点亮 LED,但它却是最适合“吸电流”点亮 LED 的模式。
-
推挽模式下: 引脚输出高电平时,内部 MOSFET 把电流“推”给 LED,LED 亮。
-
开漏模式下: 引脚输出高电平时,内部是**断开(高阻态)**的,没有任何电流流出
原理图

三、开漏和推挽对比图
| 特性 | 推挽输出 (Push-Pull) | 开漏输出 (Open-Drain) |
| 高电平驱动 | 内部 MOSFET 直接驱动 | 依靠外部上拉电阻 |
| 输出速度 | 快 | 较慢(受限于上拉电阻) |
| 功耗 | 低电平切换时功耗低 | 高电平时在上拉电阻上有功耗 |
| 多机连接 | 不允许(会短路) | 允许(线与逻辑) |
| 典型应用 | SPI 总线、PWM、通用 LED 驱动 | I2C 总线、电平转换、多机通信 |
四、开漏和推挽输出分别应用场景
1. 推挽输出 (Push-Pull) 的典型应用
推挽输出的主要特点是速度快、波形方正、驱动能力强。
-
高速数据总线(SPI, UART): SPI 通信频率通常很高(可达几十 MHz)。推挽输出能让电平在极短时间内完成 0 到 1 的跳变,保证了信号的边缘非常锐利。
-
PWM 驱动(电机、亮度调节): 在控制电机或 LED 调光时,需要高频切换。推挽输出能够快速充放电,减少在开关切换瞬间的功耗(因为切换过程越慢,发热越多)。
-
推喇叭/蜂鸣器: 直接驱动音频元件需要电流在正负方向上都有较好的表现,推挽输出结构天然适合这种推拉动作。
2. 开漏输出 (Open-Drain) 的典型应用
开漏输出的核心优势在于“电平兼容”和“多机共连”**。
-
多机通信与仲裁(I2C, SMBus):利用“线与”特性,多个设备挂在同一根线上。如果两个设备同时说话,谁输出“0”谁就占主导,系统不会损坏。
-
电平转换(Level Shifting): 当你有一个 3.3V 的 MCU,但需要向 5V 的传感器发送信号时,使用开漏输出,外接一个上拉到 5V 的电阻。这样高电平就是 5V,低电平是 0V,完美兼容。
-
热插拔与中断请求(IRQ): 许多外设的中断引脚(Interrupt Pin)是开漏的。多个外设的中断线可以全部连在一起,通过一个上拉电阻接到 MCU。只要有一个外设发出中断(拉低总线),MCU 就能感知到。
-
电池管理与复位电路(Reset): 许多芯片的复位引脚(RESET)是开漏的,这样多个复位源(按键、看门狗、上电检测)都能独立地拉低复位线,而互不干扰。
本文地址:https://www.yitenyun.com/5764.html







