Open Drain与push/pull

在大部分的单片机的GPIO的设置中,都会有两种不同的输出方式提供选择,一种是开漏极(open drain)输出,另外一种是推挽(push/pull)的输出方式,那么这两种输出方式到底有什么不同以及在使用过程中又应该如何选择?

(ps:图片是网上找的,感觉很能说明问题)

开漏极(open drain)输出
首先需要当使用开漏级输出的时候,需要使用上拉电阻
1:图1中,当输入为0的时候,Q1工作在截至状态,Q2工作做导通,当没有上拉电阻的时候,此时输出管脚处于悬空状态,没有办法控制输出电压。
2:图1中,当输入为1的时候,Q1工作在导通状态,此时Q2的基极与发射极无法导通,所以Q2工作在截至状态,可以把Q2想象成一个断路了,当没有上拉电阻的时候,输出管脚依然是悬空的状态。
当加上上拉电阻的时候,一切都不一样了。
3:在图1中,输入为0的时候,Q1截至,Q2导通,此时可以想象Q2是一根导线直接接地,此时的输出当然为0了,电流都会通过Q2流向接地端
4:在图1中,输入为1的时候,Q1导通,Q2截至,此时想象Q2为断路状态,此时的电流通过上拉电阻继续流向外部的负载了,此时的输出电压需要根据负载电阻的大小来计算了,但所有的一切都是可控的了。
图3就是所有的简化版,当开关断开的时候,电流通过上拉电阻流向输出端。当开关导通时候,输出为0。

推挽(push/pull)输出:
推挽输出可以将图三的电阻换成一个开关即可。两个开关永远有一个导通。
当然想象成开关是为了方便分析,事实上内部依然是MOS管来完成的,受限于内部半导体器件的输出电流,所以推挽输出方式的输出电流也是有很大的限制。



Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐