GPIO开漏输出和推挽输出有什么区别

摘要:推挽输出和开漏输出是两种常见的数字输出模式。推挽输出由互补MOSFET组成,具有高速切换和强驱动能力,适用于SPI、PWM等应用,但不能并联使用。开漏输出仅包含下拉MOSFET,需外接上拉电阻,支持电平转换和多机"线与"连接,适用于I2C总线等场景。推挽输出在高低电平切换时功耗低,而开漏输出在高电平时存在上拉电阻功耗。两种模式各有特点:推挽适合高速驱动应用,开漏则更适合需要电平兼容和多机通信的场合。

目录

[一. 推挽输出 (Push-Pull)](#一. 推挽输出 (Push-Pull))

(1)工作原理:

(2)优点:

(3)缺点:

(4)输出电压:

[二. 开漏输出 (Open-Drain)](#二. 开漏输出 (Open-Drain))

三、开漏和推挽对比图

四、开漏和推挽输出分别应用场景

[1. 推挽输出 (Push-Pull) 的典型应用](#1. 推挽输出 (Push-Pull) 的典型应用)

[2. 开漏输出 (Open-Drain) 的典型应用](#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)是开漏的,这样多个复位源(按键、看门狗、上电检测)都能独立地拉低复位线,而互不干扰。

相关推荐
不做无法实现的梦~9 小时前
ros2实现路径规划---nav2部分
linux·stm32·嵌入式硬件·机器人·自动驾驶
熊猫_豆豆13 小时前
同步整流 Buck 降压变换器
单片机·嵌入式硬件·matlab
chenchen0000000018 小时前
49元能否买到四核性能?HZ-RK3506G2_MiniEVM开发板评测:MCU+三核CPU带来的超高性价比
单片机·嵌入式硬件
孤芳剑影18 小时前
反馈环路设计总结
嵌入式硬件·学习
dump linux19 小时前
设备树子系统与驱动开发入门
linux·驱动开发·嵌入式硬件
专注VB编程开发20年19 小时前
简易虚拟 PLC 服务器-流水线自动化,上位机程序维护升级,西门子PLC仿真
服务器·单片机·自动化·上位机·plc·流水线·工控
LeoZY_20 小时前
CH347/339W开源项目:集SPI、I2C、JTAG、SWD、UART、GPIO多功能为一体(3)
stm32·单片机·嵌入式硬件·mcu·开源
chenchen0000000020 小时前
国产显示芯势力新篇章:内置DDR+四核A35!MY-SSD2351-MINI开发板深度评测
驱动开发·嵌入式硬件
BackCatK Chen20 小时前
第13篇:TMC2240 StallGuard4失速检测|寄存器配置+状态读取(保姆级)
单片机·嵌入式硬件·tmc2240·stm32实战·stallguard4·失速检测·电机故障识别
Hello_Embed20 小时前
libmodbus STM32 板载串口实验(双串口主从通信)
笔记·stm32·单片机·学习·modbus