IO输出,上拉下拉电阻,图腾柱,线与
在讲上拉下拉之前先,先讲讲什么是强1强0,高阻态,弱1弱0;
图一
如图可见:所谓强1,就是output直接接到vcc上,这样可以保证output后的器件的高电平识别门限,输出电平逻辑可以保证为1;同理,强0,就是直接接地,这样可以保证输出电平逻辑可以保证为0;高阻态即处于断开状态;(如果两个开关同时闭合,output到底是1还是0?理想的vcc接哪哪里就是vcc,理想的vss接哪哪里就是0v,vss也是电源,vcc是相对于vss而言的,没有vss就没有vcc,所以同时闭合两个开关的结果就是看vcc先坏掉,还是vss先坏掉)
图二
图三
图二(a)即为弱0输出,即vcc和output之间有个电阻,为什么说是弱0呢,因为当出现图二(3)的情况时,output的值很可能会大于缓冲器的识别门限的上限,从而造成逻辑电平错误,当然,vcc和output之间的电阻值越小,出错的可能就越小,但这是以牺牲功耗为代价的;弱1输出同理;
单片机的IO输出分为三种:图腾柱,上拉电阻输出,下拉电阻输出
1、图腾柱,又叫推挽、推拉、push and pull ,totem pole。
就是图一所示,它的输出都是强1强0;图腾柱的配置如下:
图四
两个IO口相连接,输入寄存器PmDIR.1设为输出方向,PmDIR.2设为输入方向(高阻态),因为输出方向只有两个值0或1,所以图腾柱要么接vcc,要么接vss,如果都设 为输出方向,如果输出有翻转,势必会出现(b)的情况,烧坏设备。
2、下拉电阻:就是图二所示情况,属于强1弱0输出,在vcc等电位情况下,两IO相连接永远不会出现短路;
3、上拉电阻:就是图三所示情况,属于弱1强0输出,在vcc等电位情况下,两IO相连接永远不会出现短路;
上拉电阻的应用:
a、两种供电电压器件之间的匹配;
b、实现线与;
如果器件1的输出接到器件2的输入,但是vcc1不等于vcc2,此时器件1高电平一般是不能直接送给器件2的(vss可以,因为都是0v),按图方式连接,等价于图三(c),相当于器件2自己使用自己的两个IO口进行数据传输,这种方式也称为集电极开路输出(oc输出)或者漏极开路输出(OD输出),区别在于使用的是三极管还是场效应管;
所谓线与,就是用线实现与的功能。如图所示连接,任一器件接地,公共总线端都为0,只有所有器件都不接地时,公共总线端才为1,这不就是实现了
公共总线 = 器件1&&器件2&&器件3 么?
线与逻辑可以查看是否有其他器件在与本器件争夺总线资源,广泛应用于多机总线通信。
最后来看msp430g2553的IO输出方式;
msp430g2553的IO输出方式为:图腾柱型;
但它是可以设置上拉下拉电阻的,如下图:
请注意,如图上下拉电阻是并联在图腾柱上的,所以它的输出只有强1强0。请不要觉得上下拉电阻并没有什么卵用?
PXREN是上下拉电阻使能寄存器,PXREN.m=1时,上图开关闭合,PXOUT.m=1,连接到vcc,即设为上拉电阻。PXOUT.m=0,连接到vss,即设为下拉电阻;
好,我们来看看,上下拉电阻有什么卵用——消除电平浮动。
如图即为不设置下拉和设置下拉电阻的情况;不设置下拉电阻,在开关不闭合时,电平是浮动的;设置下拉后,即使开关不闭合,输入端依旧可以获得稳定的低电平;