详解开漏输出和推挽输出

开漏输出和推挽输出

以上是 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 管处于关闭状态,然后观察电路中的电流就可以。
相关推荐
FreakStudio3 小时前
lvgl-micropython、lv_micropython和lv_binding_micropython到底啥关系?一文读懂
python·单片机·嵌入式·面向对象·电子diy
风逸尘_lz6 小时前
STM32标准工程目录文件解释
stm32·单片机·嵌入式硬件
小白学电子_6 小时前
51 单片机 拖尾流水灯
单片机·嵌入式硬件
酸奶乳酪8 小时前
IIC学习笔记
笔记·单片机·学习
进击的横打8 小时前
【车载开发系列】系统时钟与定时器
stm32·单片机·fpga开发
LCG元8 小时前
STM32实战案例:基于STM32F103的智能插座(电量计量+远程控制)
stm32·单片机·嵌入式硬件
至为芯8 小时前
PY32F005至为芯支持32位ARM内核的高主频MCU微控制器
单片机·集成电路·芯片
somi79 小时前
ARM-06-时钟系统配置
arm开发·单片机·嵌入式硬件·时钟配置
爱喝纯牛奶的柠檬9 小时前
基于STM32和HAL库的大夏龙雀BT311-10C02S蓝牙模块驱动
stm32·单片机·嵌入式硬件
小谦32519 小时前
NTC热敏电阻分压测量电路的数学特性与应用选择研究
stm32·嵌入式硬件