详解开漏输出和推挽输出

发布于:2025-06-04 ⋅ 阅读:(25) ⋅ 点赞:(0)

开漏输出和推挽输出

在这里插入图片描述
以上是 GPIO 配置为输出时的内部示意图,我们要关注的其实就是这两个 MOS 管的开关状态,可以组合出四种状态:
在这里插入图片描述
两个 MOS 管都关闭时,输出处于一个浮空状态,此时他对其他点的电阻是无穷大的,所以这个状态也被称为高阻态;当两个 MOS 管都打开时,电源直接对地短路,MOS 管就烧毁了,所以这种状态不存在。对于一个 GPIO 来说,配置为输出时,就只能有这三种状态。

推挽输出

把 GPIO 输出的高电平和低电平拿出来,组成一个组合。
在这里插入图片描述
当我们外接一个 MOS 管时,输出高电平,电流流出去给外面的 MOS 管的栅极充电,所以这个过程称为。把电流推出去。

在这里插入图片描述
当 IO 口输出低电平时,电路流进来给外面的 MOS 管的栅极放电,这个过程就是,把电流挽回来。

所以所谓的推挽就是描述了 MOS 管输出高低电平时,电流的一个动作而已。

开漏输出

把 GPIO 输出的低电平和浮空/高阻态拿出来,组成一个组合。
在这里插入图片描述

这种组合下,上面的 MOS 管永远是关闭的,所以这个时候可以把上面当作不存在的。

在这里插入图片描述
下面的 MOS 管的漏极就等于什么都没接,属于一个开路状态,所以这个模式被称为开漏模式。
开漏模式的作用:

  1. 改变高电平的电压;
    举个例子,现在想用这个 GPIO 去控制一个芯片的 enable 引脚,但是这个 GPIO 输出的高电平是 5V。而芯片只支持 3.3V 输入,如果使用推挽模式输出高电平的话,是 5V,可能会把后面的芯片烧毁。
    在这里插入图片描述

    所以需要使用开漏模式,同时需要在外面接一个上拉电阻,这样当 MOS 关闭,也就是 GPIO 处于高阻态时,enable 就会被上拉电阻拉到 3.3V,也就是高电平;当 MOS 管打开时,enable就被 MOS 管拉到了低电平。以上实现了 5V 单片机对 3.3V 芯片的控制。

    在这里插入图片描述

  2. 支持多个 GPIO 来控制一个输入;
    在这里插入图片描述
    上面是使用两个 GPIO 来控制右边芯片的 enable。如果使用的是推挽模式,如果上面的 GPIO 输出的是高电平,下面输出的是低电平,那么左边的通路就会短路,两个 MOS 管会烧毁一个。所以需要把这两个 GPIO 都配置为开漏模式,然后再外接一个上拉电阻。这样只要有任意一个 GPIO 输出低电平时,enable 就是低电平。如果都处于高阻态,enable 就是高电平。

    上面的现象就是“线与”,只要有任意一个或多个 GPIO 输出了低电平,输出的就都是低电平;只有所有 GPIO 都输出高电平,总线才处于高电平。

总结

一个 GPIO 根据内部 MOS 管的开关情况,存在三种输出状态,分别是高电平、低电平和高阻态。
在这里插入图片描述
推挽输出,是通过开关管直接接到正极和负极的,所以是强上拉和强下拉的模式。
开漏输出是去掉强上拉的开关管,输出低电平时,下管导通,是强下拉。输出高电平时,下管断开,但是没有上管了,此时引脚处于浮空状态,也就是高阻态。
开漏输出一般都会配置一颗外部的上拉电阻。通过一个电阻拉到高电平的,属于弱上拉。弱上拉的好处:

  1. 完全杜绝了电源短路现象,保证电路的安全;
  2. 避免了引脚模式的频繁切换;开漏加弱上拉的模式,同时兼具了输入和输出的功能;想要输出,就操作 MOS 管的打开和关闭;想要输入的话,就让 MOS 管处于关闭状态,然后观察电路中的电流就可以。

网站公告

今日签到

点亮在社区的每一天
去签到