一、这种准双向IO结构的特点是
1 输出结构类似 OC门,输出低电平时,内部NMOS导通,驱动能力较强(800uA);输出高电平靠内部上拉电阻,驱动能力弱(60uA)。
2 永远有内部电阻上拉(P0口除外),高电平输出电流能力很弱,所以即使IO口长时间短路到地也不会损坏IO口
(同理,IO口低电平输出能力较强,作低电平输出时不能长时间短路到VCC)
3 作输入时,因为OC门有"线与"特性,必须把IO口设为高电平(所以按键多为共地接法)
4 作输出时,输出低电平可以推动LED(也是很弱的),输出高电平通常需要外接缓冲电路(所以LED多为共阳接法)
5 软件模拟 OC结构的总线反而比较方便-----例如 IIC总线
* P0口比较特殊,做外部总线时,是推挽输出,做普通IO时没有内部上拉电阻,所以P0口做按键输入需要外接上拉电阻。
* OC门:三极管的叫集电极开路,场效应管的叫漏极开路,简称开漏输出。具备"线与"能力,有0得0。
* 为什么设计成输出时高电平弱,低电平强----是考虑了当年流行的TTL器件输入
-------------------------------------------分割线-------------------------------------------
二、IO不同模式的区别?
简单的说:
“准双向IO口”在读前必须先用写指令置"1",才能读入;写则无须此步.
“真正的双向IO口”可直接读写.
“三态IO口”有高,低电平,高阻状态,高阻本人理解:相当此脚与内部电路断开.
三、准双向IO口”在读前必须先用写指令置"1",WHY?
P0内部有一个2选1的开关,处于图中当前的位置,此时相当于一个“准双向IO口”,输入时须将口置1,是为了关断输出端的场效应管。否则就可能读入错误。如果不对端口置1,端口锁存器处原来状态可能为0,Q^为1,可场效应管导通,对地呈显低阻状态,此时即使引脚输入的信号为1,也会因端口的低阻而使信号变低,也就是说,外部的信号是1,而单片机读到的信号是0。这里,要注意区别读端口和读引脚的概念。
内部的模拟开关在另一方向,表示该IO口是做为数据线和地址线用的,这里不做讨论。
四、推挽输出与开漏输出的区别
推挽输出:可以输出高,低电平,连接数字器件;
开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内).
问题:
1.
准双向IO口应用工作场合及优势?
2.
推挽输出仅仅是为了增加驱动能力吗?如果是,那和开漏输出外接上接电阻驱动有何优势?还是区别如四描述?
3.
以前看到的电路,驱动外部继电器,LED什么的,都是外部单独接一个三极管驱动的,这样和单片机本身的区别能力不是没有什么关系了,一般应用来说,有必要纠结于单片机本身的驱动能力吗?
欢迎各位同鞋讨论,各路高手也指点一下,谢谢。 |