推挽开漏 & 上拉电阻
GPIO配置为输出模式时,两个MOS管的开关状态组合有四种
【PS】
-
当Q1、Q2均关闭时,输出点对于其他点来说,阻值为无穷大,故称为高阻态,高阻态时无法确定高低电平,处于不稳定状态
-
当Q1、Q2均打开时,VCC与GND短接,故一般不会出现这种状态
推挽模式
针对上表的前两种模式进行分析,一般GPIO输出会外接一个MOS管,下面对两种模式进行分析
-
当Q1打开,Q2关闭,输出高电平时,电流方向为由VCC到外部,给外部MOS管的栅极充电,该过程类似推动电流到MOS管,故该过程称为 “推”
-
当Q1关闭,Q2打开,输出低电平时,电流方向为由外部到GND,给外部MOS管的栅极放电,该过程类似推动电流被挽回到GPIO内部,故该过程称为 “挽”
-
综上,所谓的推挽模式实际描述的是MOS管输出高低电平时电流的流动方向
开漏模式
针对上表的后两种模式进行分析,一般GPIO输出会外接一个MOS管,下面对两种模式进行分析
-
无论Q2处于什么状态,Q1均为关闭状态,故可以认为Q1部分不存在,认为是开路,即图中淡化部分,此时只观察下面部分,Q2的漏极相当于什么都没有接,因此称为开漏模式
开漏模式作用
改变高电平电压
假设单片机内部VCC为为5V,而外部芯片的EN引脚仅支持3.3V输入,若使用推挽模式,高电平时,单片机的5V电压会直接输入到EN引脚,就可能将外部芯片烧毁。因此,为解决该问题,单片机此时应该使用开漏模式
开漏模式下,需要外接一个上拉电阻,实现5V单片机对3.3V芯片的控制
-
当Q2关闭时,输出端处于高阻态,电平极性不确定,因此外接上拉电阻将电平拉到3.3V,使EN引脚为高电平
-
当Q2打开时,输出端、EN引脚处于低电平
多个GPIO同时控制一个输入
该作用类似模拟一个或门电路,若使用推挽模式,当GPIO导通时,总会有一个MOS管烧坏,故只能使用开漏模式,开漏模式下具体每个MOS管开关状态组会如下图,实现了多个GPIO同时控制一个输入
上拉电阻
解决开漏模式下,Q2关闭时,输出端处于高阻态,其电平状态不确定,为了解决电平状态不确定问题,可在该点接入一个上拉电阻,同时由于外部芯片的等效输入电阻R2十分大,外接上拉电阻几乎可以忽略不记,因此外接上拉电阻能够使得输出端稳定在高电平状态。
问:为了使输出端电平稳定,为何不可直接接入3.3V电源 答:开漏模式下,当Q2打开时,若直接接入3.3V电源,则会导致短路问题,因此需要接入上拉电阻
上拉电阻如何取值
漏电流影响:导通时漏电流浪费了,且会因为经过电阻产生热量
驱动能力影响:一般电路会在图示处接入寄生电容,在低电平→高电平的过程中,实际需要一个对寄生电容充电的过程,因此电平转换并不是立刻跳变的,而是经过了一个缓慢的上升沿:电容⬆→充电越慢,驱动能力弱→PWM或I2C波形出现失真
综上,上拉电阻取值:(也可无脑取边界值10K)
-
控制开关:R1取10K-100K
-
PWM或者通讯:R1取1K-10K