IO口常识
-
集电极开路、漏极开路、推挽、上拉电阻、
弱上拉、三态门、准双向口
集电极开
路输出的结构如图
1
所示,
右边的那个
三极管集电极什么都不接,
所以
叫做集电极开路;
左边的三极管为反相之用,
使输入为“0”时,
输出
也为“0”。
对于图
1
,当左端的输入为“0”时,前面的三极管截止,所以
5v
电源通过
1k
电阻加到右边的三极管上,右边的三极管
导通;当左端的输入为“1”时,前面
的三极管导通,而后面的三极管截止。
我们将图
1
简化成图
2
的样子,
很
明显可以看出,
当开关闭合时,
输出直接接地,
所以输出电平为
0
。而当开关断开时,则输出端悬空了
,即高阻态。这时电平状
态未知,如果后面一个电阻负载到地,那么输出端
的电平就被这个负载拉到低
电平了,所以这个电路
是不能输出高电平的。
图
3
中那个
1k
的电阻即是上拉电阻。
如果开关闭合,
则有电
流从
1k
电阻及开关
上流过,但由于开
关闭和时电阻为
0
(方便我们的讨论,实际情况中开关电阻不<
/p>
为
0
,另外对于三极管还存在饱和压降)
,所以在开关上的电压为
0
,即输出电
平为
0
。如果开关断开,则由于开关电阻为无穷大(同上,不考
虑实际中的
漏
电流),所以流过的电
流为
0
,因此在
1k
电阻上的压降也为
0
,所以输出端的
< br>电压就是
5v
了,这样就能输出高电平了。
但是这个输出的内阻是比较大的——即
1k
,如果接一个电阻为
r
的负载,通过
分压计算,就可以算得最后的输出电压为
5*r/(r+1000)
p>
伏,所以,如果要达到
一定的电压的话,
r
就不能太小。如果
r
真的太小,而导
致输出电压不够的话,
那我们只有通过减小那个
1k
的上拉电阻来增加驱动能力。但是,上拉电阻又不
能取得太小,
因为当开关闭合时,
将产生电流,
由于开关能流过
的电流是有限的,
因此限制了上拉电阻的取值。
另外还需要考虑
到,
当输出低电平时,
负载可能还
会给
提供一部分电流从开关流过,
因此要综合这些电流考虑来选择合适的上拉电
阻。
如果我们将一个读数据用的输入端接在输出端,
这样就是一个
IO
口了,
5
1
的
IO
口就是这样的结构,其中
p>
P0
口内部不带上拉,而其它三个口带内部上拉。
< br>当我
们要使用输入功能时,只要将输出口设置为
1
即可,这样就相当于那个开关断
开,而对于
P
0
口来说,就是高阻态了。
对于漏极开路(
OD
)输出,跟集电极开路输出是十分类似的。将上面的三极管换
成场效应管即可。
这样集电极就变成了漏极,
OC
就变成了
OD
,原理分析是一样
的。
OC
门主要用于
3
个
方面:实现与或非逻辑,用做电平转换,用做驱动器。
开漏形式的电路有以下几个特点:
1
.
利用外部电路的驱动能力,减少
IC
内部的驱动,或驱动比芯片电源电压高的
负载。
2.
可以将多个开漏输出的
Pin
< br>,连接到一条线上。通过一只上拉电阻,在不增加
任何器件的情况下,形成“与逻
辑”关系。这也是
I2C
,
SMBus
等总线判断总线
占用状态的原理。
<
/p>
3.
由于漏级开路,
所以后级电路必须接
一上拉电阻,
上拉电阻的电源电压就可以
决定输出电平。这样就
可以进行任意电平的转换了。
4.
源
极开路提供了灵活的输出方式,但是也有其弱点,就是带来上升沿的延时。
因为上升沿是
通过外接上拉无源电阻对负载充电,所以当电阻选择小时延时就
小,但功耗大;反之延时
大功耗小。
所以如果对延时有要求,则建议用下降沿输
出。
p>
另一种输出结构是推挽输出。
推挽输出的结构就是把上面的上拉电阻也换
成一个
开关,
当要输出高电平时,上面的开关通,下面的开关断
;而要输出低电平时,
则刚好相反。
比起
OC
或者
OD
来说,这样的推挽结构
高、低电平驱动能力都很
强。
如果两个输出不同电平的输出口接
在一起的话,
就会产生很大的电流,
有可
能将输出口烧坏。
而上面说的
OC
或
OD
输出则不会有这样的情况,
因为上
拉电阻
提供的电流比较小。
如果是推挽输出的要设置为高阻态时
,
则两个开关必须同时
断开(或者在输出口上使用一个传输门)
,这样可作为输入状态,
AVR
单片机的
一些
IO
口就是这种结构。
p>
*****************************************
***************************
单片机内部的逻辑经过内部的逻辑运算后需要输出到外面,
外面的器件可能需要
较大的电流才能推动,
因此在单片机的输出端口必须有一个驱动电路。<
/p>
这种驱动