GPIO开漏与推挽模式的区别和应用

GPIO的开漏和推挽

简单来说推挽输出可以自由输出高低电平。
开漏输出只能在关闭时配合上拉提高高电平,打开时漏掉电流形成低电平。

操作单片机点亮一个LED的时候我们需要操作GPIO输出一个高电平来点亮一个LED。

当我们打开用户手册时会发现GPIO可以配置成多种模式:

什么是推挽?

这是一个GPIO配置为输出时的内部示意图,我们要关注的其实就是这两个MOS管的开关状态,排列组合一下一共就只有四种状态,当上面的MOS管打开,下面的MOS管关闭时,就输出高电平,当上面的MOS管关闭,下面的MOS管打开时,就输出低电平,两个MOS管都关闭时,输出处于一个浮空状态,此时它对其他点的电阻是无穷大的,所以这个状态也被称为高阻态。最后,当两个MOS管都打开时,这边电源直接对地转入MOS管就烧毁了,所以这种状态并不存在。对于一个GPIO来说,配置为输出时,它其实就只能处于这三种状态了。

那么这三种状态和推挽还有开漏是什么关系呢?

首先我们把这两种状态拿出来组成一个组合,这就是对GPIO输出最基本的认知,要么输出高电平,要么输出低电平,我们用它去控制一个MOS管,当输出高电平时,电流这样流出去,给外面的这颗MOS管的栅级充电。所以这个过程称为推,把电流推出去。

然后当GPIO口输出低电平,平时电流这样流进来,给外面的这mos管的栅级放电,那这就是挽,把电流挽回来所以。所谓的推挽,其实就是描述了mos管输出高低电平平时,电流的一个动作而已。

什么是开漏?


那接下去我们再把的这两种状态拿出来组成一组合,你会发现在这个组合里,上面的MOS永远是关闭的,所以可以认为它就是不存在的,那这个时候下面的MOS的漏级就等于啥也没接,处于一个开漏状态,所以这个模式被称为开漏模式。

开漏有什么用?

那么这个开漏模式到底有什么用?

第一个是改变高电平的电压。比如说我们现在想用这个GPIO去控制一个芯片的enable引脚,但是,这个GPIO的输出的高电平是5v,后面这个芯片的enable只支持3.3V输入,如果用推挽模式的话,高电平时输出5v就有可能把后面的芯片给烧毁了,所以我们就需要使用开漏模式,同时需要在外面接一个上拉电阻,这样当这个Q2MOS关闭,也就是GPIO处于高阻态时,ENABLE这边就被这个上拉电阻拉到了3.3伏V,当Q2打开,也就是输出低电平,enable拉到低电平。实现了5v单片机对3.3芯片的控制。

开漏模式的第二个作用就是可以支持几个GPIO同时控制一个输入。

首先,如果这两个GPIO都配成推挽模式,当上面一个控制器为高电平,下面一个控制器为低电平时,这里就短路了。所以需要配置成开漏模式。然后再外接一个上高电阻,这样只要有任意一个GPIO输出低电,平时这边enable就是低电平,如果都处于高阻态,那么这边enable就是高电平。

作者:熟练的魔法师

物联沃分享整理
物联沃-IOTWORD物联网 » GPIO开漏与推挽模式的区别和应用

发表评论