`对于常规MCU,通用输入输出(GPIO)是其最基本、最常用的功能,`
`用于实现最基本的数字量输入和输出。`
信号一般为:
- 以3.3VDC为高电平的LTTL电平
- 以5.0VDC为高电平的TTL电平。
一般情况下,GPIO能够实现两种输出模式:
开漏输出
-
推挽输出。
`其中最常用的是推挽输出模式。`
原理图如下:
开漏输出与推挽输出在外部链接上的区别
开漏输出需要外接一个上拉电阻才能得到输出电压,否则就不会有电压输出,而推挽输出可以直接得到输出信号。
下面举例一些需要使用开漏输出的情况:
- 在使用IIC(TWI)总线进行信号传输的时候,由于协议的设计,必须使用开漏模式来输出信号,这样可以避免总线上多个设备传输信号产生冲突。
- 在LTTL(3.3VDC)电平电路中,当需要输出TTL(5VDC)电平的时候,由于5VDC电压高于LTTL电平所在电路的电源电压,所以即便是LTTL电平电路中的I\O引脚可以承受TTL电平,但LTTL电平电路也无法提供足够高的电压来输出TTL电平信号。此时可以利用外部上拉电阻将输出引脚连接到5.0VDC电源上,使这些引脚向以TTL电平工作的芯片传输数据。
推挽输出电路
来看一个典型的推挽输出电路:
上面的三极管是NPN型三极管,下面的三极管是PNP型三极管,注意控制端、输入端和输出端。
当Vin电压为V+时,上面的N型三极管控制端有电流输入,Q3导通,于是电流从上往下通过,提供电流给负载。
经过上面的N型三极管提供电流给负载(Rload),这就叫「推」。
当Vin电压为V-时,下面的三极管有电流流出,Q4导通,有电流从上往下流过。
经过下面的P型三极管提供电流给负载(Rload),这就叫「挽」。
以上便是推挽(push-pull)电路。
一些总结
1) 推挽输出能够输出高或者低,而开漏输出只能输出低,或者关闭输出,因此开漏输出总是要配一个上拉电阻使用。
2) 开漏输出的上拉电阻不能太小,太小的话,当开漏输出的下管导通时,电源到地的电压在电阻上会造成很大的功耗,因此这个电阻阻值通常在10k以上,这样开漏输出在从输出低电平切换到高电平时,速度很慢。
3) 推挽输出任意时刻的输出要么是高,要么是低,所以不能将多个输出短接;而开漏输出可以将多个输出短接,共用一个上拉,此时这些开漏输出的驱动其实是或非的关系。
4) 推挽输出输出高时,其电压等于推挽电路的电源,通常为一个定值,而开漏输出的高取决于上拉电阻接的电压,不取决于前级电压,所以经常用来做电平转换,用低电压逻辑驱动高电压逻辑。
感谢一直关注着禾灮成长进步的朋友们。你们的信任、支持和鼓励,鞭策着我们一路走到了今天。
感谢所有的合作伙伴,我们相互促进,共同见证了彼此的成长。
感谢所有曾经在禾灮彼此倚靠、相互鼓励、携手同心、砥砺同行的兄弟姐妹。这里承载了我们的青春与热血。
禾灮,感谢有你。
未来,我们将一如既往,砥砺前行。
禾灮·小楊
2018.08.07