在嵌入式系统的开发过程中,我们在编写程序时常常会遇到 IO 口模式的端口配置问题。然而,很多人并没有深入探究这些配置的具体含义,这对于一名合格的嵌入式工程师来说是远远不够的。接下来,我们将重新梳理端口定义,重点探讨推挽电路输出和开漏输出。
一、NPN 和 PNP 区别
在
电子电路中,NPN 和 PNP
三极管是两种常见的半导体器件,它们的工作原理和应用场景有所不同。
三极管是用 B→E 的电流(IB)控制 C→E 的电流(IC),其 E 极电位,且在正常放大时通常 C 极电位,即 VC > VB > VE。而 PNP 三极管则是用 E→B 的电流(IB)控制 E→C 的电流(IC),E 极电位,正常放大时通常 C 极电位,即 VC < VB < VE。
如今流行的电路图画法遵循 “阳上阴下” 原则,也就是 “正电源在上负电源在下”。在 NPN 电路中,E 极终都会接到地板(直接或间接),C 极终都会接到天花板(直接或间接);PNP 电路则相反,C 极终接到地板,E 极终接到天花板。
对于共射组态,可以粗略地把 VE 当作 “固定” 参考点,通过控制 VB 来控制 VBE(VBE = VB - VE),从而控制 IB,并进一步控制 IC(电流从电位更高的地方流进 C 极,可将 C 极看作朝上的进水漏斗)。三极管导通一般取决于基极电位和射极电位的电压差,所以在使用时,NPN 三极管的射极通常接 GND,PNP 三极管的射极通常接 VCC,以保证射极电压状态的确定性。 以一个 PNP 应用电路为例,FM 是一个
蜂鸣器,8550 是一个 PNP 型的三极管,C 端接地,B 端由
单片机控制,E 端通过 FM 接 VCC。根据箭头方向,当 E 端为高电压时,若 B 端也是高电压,那么 E 和 C 之间断开;当 B 端是低电压时,E 和 C 直接导通,实现开关的作用。简单来说,三极管上箭头所在方向的
二极管,只要二极管正向导通,那么三极管上下就能导通。

图 1 PNP 应用电路
二、推挽电路详解
推挽电路是一种常见的功率放大电路,它由一个 N 型三极管和一个 P 型三极管组成。从网上找到的一张图片可以看到,上面的三极管是 N 型三极管,下面的三极管是 P 型三极管,需要留意控制端、输入端和输出端。 当 Vin 电压为 V + 时,上面的 N 型三极管控制端有电流输入,Q3 导通,于是电流从上往下通过,为负载提供电流,这就是 “推” 的过程。

图 2 推挽电路推的过程 当 Vin 电压为 V - 时,下面的三极管有电流流出,Q4 导通,电流从上往下流过,经过下面的 P 型三极管为负载(Rload)提供电流,这就是 “挽” 的过程。

图 3 推挽电路挽的过程
综上所述,推挽(push - pull)电路通过 N 型和 P 型三极管的交替导通,实现了对负载的双向驱动,能够提供较大的功率输出,常用于音频功率放大、电机驱动等领域。
三、开漏电路详解 要理解开漏电路,我们可以先从开集电路入手。开集的意思是集电极 C 一端什么都不接,直接作为输出端口。如果要用这种电路驱动一个负载,比如一个 LED,必须接一个上拉电阻。

图 4 开集电路
当 Vin 没有电流,Q5 断开时,LED 亮;当 Vin 流入电流,Q5 导通时,LED 灭。 开漏电路则是把开集电路中的三极管换成场效应管(MOSFET)。开漏输出的特点是可以实现线与功能,多个开漏输出端可以直接连接在一起,通过上拉电阻连接到电源,从而实现多个信号的逻辑与运算。此外,开漏输出还可以方便地实现电平转换,适用于不同电压等级的电路之间的信号传输。

图 5 开漏电路
推挽电路输出和开漏输出在电子电路中都有着重要的应用,了解它们的原理和特点,对于嵌入式工程师进行电路设计和调试具有重要意义。