第4节 进一步讨论
推荐给好友
打印
加入收藏
更新于2008-07-25 09:43:31

4.4.1 I/O口的输入和输出电流

前面介绍了通用I/O口的基本使用方法,在使用I/O口驱动外围设备时,要特别关注其输入和输出电流的能力。不同的芯片、不同的I/O口其驱动能力都有所差别,在芯片手册的“直流电气特性”中对于这些参数有详细描述。

1.输出电流
输出电流是由芯片提供给外围设备,驱动外围设备,电流通过芯片引脚从芯片内‘流出’,也称为拉电流,是外部设备从芯片“拉”出电流。

如果输出电流大于驱动设备的工作电流,就需要串联一个限流电阻;相反地,输出电流小于驱动设备的工作电流,需要增加放大电路,提高驱动电流。

例如参照图4-2用I/O口驱动发光二极管,假如发光二极管工作电压5V,典型工作电流为10mA,正向压降值大约为2V,此时限流电阻阻值不低于300欧姆,R=(5-2)/0.01=300(Ω)。
同样,参照图4-2,用I/O口驱动蜂鸣器,蜂鸣器工作电压5V,典型工作电流为25mA,I/O口驱动电流通常会在10~15mA。此时就需要如图4-2那样增加三极管,I/O口仅仅起到开关作用,使三极管处于导通或截止状态,这时蜂鸣器的驱动电流由电源Vcc提供,从而解决了I/O口驱动能力不足的问题。

2.输入电流
外部电流通过芯片引脚向芯片内‘流入’称为输入电流。如果芯片主动接纳外部电流,这种输入电流称为吸收电流;芯片被动接纳外部电流,这种输入电流也称为灌电流。在实际使用I/O口时,如果有输入电流要特别注意芯片I/O口所能承受的最大值。

例如:用I/O口驱动四位一体数码管(数码管的具体介绍参见第9章)如图4-6所示

如果引脚分配是:a~h接PTA0~PTA7口,CS0~CS3接PTC0~PTC3口,如果希望第0位显示数字时,CS0置低,即PTC0为低,PTA口为相应的数,则PTA口输出电流,芯片通过PTC0口吸收电流,假如数码管上某段亮所需的驱动电流是10mA,1段亮时,PTC0的吸收电流是10mA,但是如果8段都亮,PTC0的吸收电流将会是80mA,而微控制器的I/O口通常只有10~20mA的吸纳电流能力(如GP32的PTC0口的吸纳电流上限为15mA)。基于这种情况,实际通过PTC0的电流是15mA,也就是数码管每段上通过的电流只有2mA左右,远远小于其工作电流,最终数码管显示的亮度很低。同时,如果使用这种连接方法,工作时间长,很容易损坏芯片。

对于图4-6所示的电路的改进方法是:MCU的I/O端仅仅作为控制作用,将输入电流流向吸纳电流大的器件。如由NPN达林顿晶体管构成的MC1413芯片。

MC1413采用NPN达林顿复合晶体管的结构,因此有很高的电流增益和很高的输入阻抗,可直接接受MOS或CMOS集成电路的输出信号,并把电压信号转换成足够大的电流信号驱动各种负载。该电路内含有7个集电极开路反相器(也称OC门)。MC1413电路结构和引脚排列如图4-7所示,它采用16引脚的双列直插式封装。每一驱动器输出端均接有一释放电感负载能量的抑制二极管,每一路的驱动电流最高可达500mA。图4-8是MC1413的一路工作原理图,当Vin为高时,Vout输出低电平;Vin为低时,Vout输出高电平。



4.4.2 端口上拉问题

1.端口需要上拉的情况

4.2节简要说明了I/O口作为输入口时需要上拉,在实际电路中有很多地方都需要通过上拉电阻将端口上拉。
① 当TTL电路驱动COMS电路时,如果TTL电路输出的高电平低于COMS电路的最低高电平(一般为3.5V),这时就需要在TTL的输出端接上拉电阻,以提高输出高电平的值。
② OC门电路必须加上拉电阻,才能使用。
③ 为加大输出引脚的驱动能力,有的单片机管脚上也常使用上拉电阻。
④ 在COMS芯片上,为了防止静电造成损坏,不用的管脚不能悬空,一般接上拉电阻产生降低输入阻抗,提供泄荷通路。
⑤ 芯片的管脚加上拉电阻来提高输出电平,从而提高芯片输入信号的噪声容限增强抗干扰能力。
⑥ 提高总线的抗电磁干扰能力。管脚悬空就比较容易接受外界的电磁干扰。
⑦ 长线传输中电阻不匹配容易引起反射波干扰,加上下拉电阻是电阻匹配,有效的抑制反射波干扰。

2.上拉电阻阻值选择

上拉电阻阻值也需要根据实际情况进行选择,主要需要考虑以下几个因素:
① 驱动能力与功耗的平衡。一般地说,上拉电阻越小,驱动能力越强,但功耗越大,设计时应注意两者之间的均衡。
② 下级电路的驱动需求。当输出高电平时,开关管断开,上拉电阻应适当选择以能够向下级电路提供足够的电流。
③ 高低电平的设定。不同电路的高低电平的门槛电平会有不同,电阻应适当设定以确保能输出正确的电平。当输出低电平时,开关管导通,上拉电阻和开关管导通电阻分压值应确保在零电平门槛之下。
④ 频率特性。上拉电阻和开关管漏源级之间的电容和下级电路之间的输入电容会形成RC延迟,电阻越大,延迟越大。上拉电阻的设定应考虑电路在这方面的需求。

3.集电极开路输出和漏极开路输出

集电极开路(OC,open collector)输出的结构如图4-10所示,三极管D2的集电极什么都不接,所以叫做集电极开路(三极管D1为反相之用)。对于图4-10,当左端的输入为“0”时,D1截止(即集电极C跟发射极E之间相当于断开),所以Vcc电源通过电阻R2加到D2上,D2导通(即相当于一个开关闭合);当左端的输入为“1”时,D1导通,而D2截止(相当于开关断开)。

图4-10可以简化成图4-11。图4-11中的开关K受软件控制,“1”时断开,“0”时闭合。很明显可以看出,当开关闭合时,输出直接接地,所以输出电平为0;开关断开时,则输出端悬空了,即高阻态。这时电平状态未知,如果后面接一个电阻负载(即使很轻的负载)到地,那么输出端的电平就被这个负载拉到低电平了,所以这个电路是不能输出高电平的。

图4-12中电阻R3即是上拉电阻。如果开关闭合,则有电流从R3电阻及开关上流过,但由于开关闭合时电阻为0(方便我们的讨论,实际情况中开关电阻不为0,另外对于三极管还存在饱和压降),所以在开关上的电压为0,即输出电平为0;如果开关断开,则由于开关电阻为无穷大(同上,不考虑实际中的漏电流),所以流过的电流为0,因此在R3电阻上的压降也为0,所以输出端的电压就是5V了,这样就能输出高电平了。但是这个输出的内阻是比较大的(即1KΩ),如果接一个电阻为R的负载,通过分压计算,就可以算得最后的输出电压为5*R/(R+R3)伏。所以,如果要达到一定的电压的话,R就不能太小。如果R太小,而导致输出电压不够的话,那我们只有通过减小那个R3的上拉电阻来增加驱动能力。但是,上拉电阻又不能取得太小,因为当开关闭合时,将产生电流,由于开关能流过的电流是有限的,因此限制了上拉电阻的取值,另外还需要考虑到,当输出低电平时,负载可能还会给提供一部分电流从开关流过,因此要综合这些电流考虑来选择合适的上拉电阻。


对于漏极开路(OD,open drain)输出,跟集电极开路输出是十分类似的。将上面的三极管换成场效应管即可,这样集电极就变成了漏极,OC就变成了OD,原理分析是一样的。OC和OD输出的这种电路都可以提高驱动能力,输入端仅仅起到控制作用,真正的驱动来自电源Vcc。例如Freescale的MC908JB8芯片的PTD口就是OD输出,在实际使用时,一定要上拉。

练习题
【基础题】

1.解释什么叫通用I/O口?说明电路上如何实现I/O口的输入、输出控制?
2.什么叫上拉电阻?它的作用是什么?如何选择上拉电阻的阻值?在哪些情况下使用?
3.A口作为通用I/O时有几个寄存器?
4.方向寄存器的作用是什么?
5.让PTA.2输出“1”(高电平),需要进行哪些配置?
6.什么是OC输出?为什么OC输出的I/O口一定要上拉?

【综合题】
7.编程实现小灯闪烁,闪烁频率循环为:0.5秒闪烁1次、1秒闪烁1次、2秒闪烁1次、4秒闪烁1次、0.5秒闪烁1次……。给出该工程所含文件列表。
8.查阅MC908GP32和MC9S08GB60的芯片资料,了解I/O口的电气特性。

9.总结一下08汇编工程的组织方式,说明为什么需要这样组成文件,题图9给出了PrgFrame.prj的最小文件集的另一种理解,说明这样理解的优点。

<<上一节 下一节>>

相关链接


 
关于我们 | 诚邀加盟 | 客户服务 | 相关法律 | 网站地图 | 友情链接 | 服务信箱:service@eefocus.com
© 2006 与非门科技信息咨询(北京)有限公司 All Rights Reserved.