GPIO的输出模式——开漏输出&推挽输出

本文详细解释了GPIO的两种主要输出模式——开漏输出和推挽输出在I2C和UART通信中的应用,强调了它们在防止短路、线与功能、兼容性和功耗节省等方面的优势。推挽模式用于增强驱动能力和信号完整性,而开漏模式则用于I2C的线与功能和低功耗设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GPIO的输出模式有四种,看到一篇文章,其中‘开漏输出’和‘推挽输出’的形象理解如下:

  • 推挽电路
    对于三极管而言,中间的基极相当于控制端。它是一个电流控制型元器件,意思就是说,只要基极B有输入(或输出)电流就可以对这个晶体管进行控制了。
    下图为NPN型三极管:在这里插入图片描述
    那PNP型三极管正好相反,当有电流从控制端(基极)流出时,就会有电流从输入端流到输出端。
    那么推挽电路:
    在这里插入图片描述
    经过上面的N型三极管提供电流给负载(Rload),这就叫「推」。
    在这里插入图片描述
    将三极管替换为场效应管:
    在这里插入图片描述
    场效应管是电压控制型元器件,只要对栅极施加电压,DS就会导通。
  • 开漏电路
    漏极那一端开路,直接作为输出端口。
    仍然用三极管举例,开漏电路带一个负载LED,外接一个上拉电阻。
    在这里插入图片描述
    当Vin没有电流,Q5断开时,LED亮。
    当Vin流入电流,Q5导通时,LED灭。
  • 用开关代替晶体管或MOS管,等效电路如下:
    在这里插入图片描述

下文参考 https://zhuanlan.zhihu.com/p/655515457
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

I2C通信时要求引脚配置为开漏输出模式,可能的原因如下:

  1. 防止短路:开漏输出模式允许多个设备同时连接到总线上而不会造成短路。因为开漏输出在高阻态时不提供电压,所以当多个设备尝试驱动总线到不同的电平时,只有接地(低电平)的设备会起作用,而试图输出高电平的设备由于是高阻态,不会对总线造成影响。
  2. 实现“线与”功能:I2C协议中的数据总线(SDA)和时钟总线(SCL)都需要实现“线与”功能,即多个设备可以共享同一条总线。开漏输出模式下,所有设备的输出都通过上拉电阻连接到电源,当没有设备拉低电平时,总线保持高电平;当有设备需要拉低电平时,总线随之变为低电平。这样的设计简化了总线的仲裁机制,使得多个主设备可以高效地共享总线资源。
  3. 兼容性:开漏输出模式可以通过外部上拉电阻来适配不同的电压水平,这使得I2C设备在不同的电源电压下能够正常工作。例如,如果外设的电压低于单片机的电压,使用开漏输出可以通过调整上拉电阻的值来确保信号的正确传输。
  4. 节省功耗:开漏输出模式在不输出高电平时呈现高阻态,这意味着在没有数据传输时,总线不会消耗额外的电流,有助于降低系统的功耗。
  5. 灵活性:开漏输出模式提供了更大的灵活性,因为它允许外部电路通过上拉电阻来定义输出高电平时的电平值。这对于设计具有不同电源要求的系统非常有用。

总之,开漏输出模式在I2C通信中的应用是为了确保通信的可靠性、灵活性和低功耗特性,同时也是为了满足I2C协议对于总线共享和多主设备通信的要求。

UART通信时要求引脚配置为复用推挽模式的原因可能有以下几点:

  1. 提高驱动能力:推挽输出模式可以提供较强的输出驱动能力,这对于长距离传输或者信号质量不佳的环境下尤为重要。它能够确保信号的稳定性,减少由于信号衰减导致的通信错误。
  2. 增强信号完整性:复用推挽模式下,输出信号具有更好的信号完整性,因为它可以提供明确的高电平和低电平状态,这有助于接收端更准确地识别逻辑水平。
  3. 兼容性:复用推挽模式使得UART通信更加灵活,可以适应不同的硬件设计需求。例如,某些外部设备可能需要一个明确的高电平信号来确保可靠的通信。
  4. 简化电路设计:在一些设计中,使用复用推挽输出可以减少外部元件的使用,如上拉电阻,这样可以简化电路板的设计,降低成本,并可能提高系统的可靠性。
  5. 适应不同的通信场景:尽管Rx引脚通常配置为浮空输入以允许外部设备驱动信号,但在某些特定的应用场景下,Tx引脚可能需要配置为上拉状态,以确保在没有数据传输时总线不会被悬空在不确定的状态。

此外,在一些情况下,为了避免信号反射或者确保信号在总线上的稳定性,可能会在Rx引脚上加上拉电阻。这个上拉电阻的值通常取决于具体的通信环境和总线的电气特性。

总的来说,UART通信时引脚配置为复用推挽模式是为了确保信号的稳定传输、提高系统的兼容性和简化电路设计等。

<think>好的,我现在要解决用户关于输出推挽输出的区别及应用场景的问题。首先,我需要回忆这两种输出模式的基本概念和工作原理。根据提供的引用资料,推挽输出使用两个晶体管(NPN和PNP)来分别控制高低电平的输出,而输出只有下拉晶体管,需要外接上拉电阻才能输出高电平。 接下来,我需要明确它们的区别。根据引用1和2,推挽输出的优势在于速度快,驱动能力强,但功耗较高。输出的优点则是可以实现“线与”逻辑,节省电流,适用于多设备总线的情况,比如I2C通信。此外,输出的高电平依赖于上拉电阻,因此在电平转换时更灵活,比如将3.3V转换为5V系统。 关于应用场景,推挽输出适合需要快速切换和高驱动能力的场合,如PWM、UART等。而输出常用于需要多个设备共享总线的系统,比如I2C、SMBus,以及需要电平转换的情况。引用3中提到,复用功能时,比如I2C必须使用输出,而UART或PWM则需要推挽输出以确保高速电平变化。 在电路设计上,推挽输出内置驱动电路,无需额外元件,而输出需要外接上拉电阻。这一点在引用2和3中都有提到,尤其是输出多个设备共享上拉电阻的情况,实现线与功能。 需要确保回答结构清晰,分点说明区别和应用场景,并引用提供的资料作为支持。同时,按照用户要求,使用中文回答,正确使用LaTeX格式,比如在提到电压转换时使用$3.3\text{V}$。最后生成相关问题,帮助用户进一步学习。 检查是否有遗点,比如推挽输出的双晶体管结构,输出的单晶体管加上拉电阻,以及两者的功耗对比。确保每个部分都有引用标注,例如[^1]、[^2]、[^3]。最后,验证所有技术细节是否正确,比如电平转换的例子是否符合实际应用。</think>### 输出推挽输出的区别及应用场景 #### 一、核心区别 1. **输出结构** - **推挽输出**:内部包含一对互补的晶体管(上拉和下拉),可主动输出高电平(通过上管)或低电平(通过下管),形成“推”和“挽”两种驱动方式[^1]。 - **输出**:仅包含下拉晶体管(如N-MOSFET),输出高电平时需依赖外接上拉电阻,自身只能主动拉低电平[^2]。 2. **电平特性** - 推挽输出可直接输出确定的高/低电平(例如$3.3\text{V}$和$0\text{V}$)。 - 输出的高电平由上拉电阻的电源决定,例如通过外部$5\text{V}$电源实现电平转换[^2]。 3. **功耗与速度** - 推挽输出切换速度快(双管驱动),但功耗较高; - 输出功耗较低(仅单管导通),但上升沿速度受上拉电阻影响[^2]。 4. **逻辑功能** - 输出支持“线与”逻辑:多个设备共享总线时,任一设备拉低电平即总线为低,无需额外逻辑门[^2]。 #### 二、应用场景 1. **推挽输出的典型场景** - **高速信号**:如PWM波、UART通信,需快速切换电平的场合[^3]。 - **驱动大电流负载**:如LED、继电器,利用其强驱动能力。 - **单设备输出**:无需多设备共享总线时,优先使用推挽以提高性能。 2. **输出的典型场景** - **多设备总线**:如I²C、SMBus,利用“线与”特性简化总线仲裁。 - **电平转换**:通过外接不同电压的上拉电阻,实现$3.3\text{V}$与$5\text{V}$系统兼容。 - **安全关键场景**:避免多个输出冲突(如多个输出连接时,不会因同时输出高/低电平而短路)。 #### 三、电路设计要点 - **推挽电路**:无需外部元件,直接连接负载。 - **电路**:必须外接上拉电阻(阻值需平衡速度和功耗),例如I²C总线常用$4.7\text{k}\Omega$电阻。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值