首先我们来建立开漏输出与推挽输出的模型吧!
这两幅图是开漏输出的简化模型!
推挽输出实际上应是把图三的电阻也换成一个开关(即场效应管),当上面开关接通,下面关断时,输出高电平;当上面开关关断,下面开关接通时,输出低电平;当二者都关断时,呈高阻态,此时可以输入信号。当然不允许两者同时接通,所以才叫推挽,即同一时刻二者最多只能有一个工作。
为什么要有开漏输出?因为它有以下优点:
1.利用外部电路的驱动能力,减少IC内部的驱动;
2.可以将多个开漏输出的Pin,连接到一条线上。形成 “与逻辑” 关系。如果是推挽输出显然是不行的,因为假如你把要”与”的I/O口都挂到一条线上,那么在一些高一些低的情况下显然会烧掉场效应管(原因是两个场效应管直接连通了,联想上面的模型去想吧)
3.可以利用改变上拉电源的电压,改变传输电平。比如你想这个I/O口输出3.3V电平,那么只需要把上拉电平设为3.3V就OK了撒!这个5V的51单片机也可以输出3.3V电平了,呵呵!但前提是用P0口哈!
那开漏输出又有什么不足的呢?
1.输出电流低,因为上拉电阻一般取的比较大(为了减少静态功耗),所以驱动力不足,而推挽输出用的是场效应管,当然驱动能力强了.
2. 带来上升沿的延时,因为上升沿是通过外接上拉无源电阻对负载充电的,当电阻选择小时延时就小、但功耗大,反之延时大功耗小。
推挽输出的优点:
1.驱动能力强,因为用的是场效应管,当然驱动能力强了.
2.真正的双向口
推挽输出的缺点:
1.不能把两个都是推挽输出的CMOS门级相连,这样当一高一低时很容易因功耗过大烧管子,推挽输出一般用于驱动.
关于双向口与准双向口!
什么是准双向口?
首先我们要明白什么是双向口?
双向口是指输入输出口具有三态,即输出高,输出低,和输入高阻态
例如PO口作为地址/数据 复用口时就是完全意义上的双向口,它的上下两个场效应管交替工作,当上面的场效应管工作时,输出1,当下面的场效应管工作时,输出0,当两个都不工作时,为高阻输入态.此时实际上就和推挽输出没有两样。
而P1,P2,P3口和PO口作为普通I/O口时就只能称为准双向口,因这种情况下是没有高阻输入态的,为什么?因为它始终有个上拉电阻存在(开漏条件下加的嘛),输入0时,是靠外界把这个上拉电阻拉低得到输入的0的.