上拉、下拉以及对应上拉电阻和下拉电阻的作用原理
一、什么是上拉和下拉电路
上拉(Pull Up )或下拉(Pull Down)电阻两者统称为拉电阻
上拉就是单片机的IO口串联一个电阻到VDD;
下拉就是单片机的IO口串联一个电阻到GND;
如图所示:
单片机往往可以内部挂载一个电阻,通常io口呈现出高阻态,若不上拉或者下拉io口不能识别当前的状态是高电平还是低电平。
二、为什么需要上拉与下拉电路
上拉与下拉电路最基本的作用是:将状态不确定的IO口信号线通过一个电阻将其钳制为一个确定的高电平(上拉)或低电平(下拉),无论它的具体用法如何,这个基本的作用都是相同的,只是在不同应用场合中会对电路中上/下拉电阻的阻值要求有所不同。
对于三态门电路而言,通常我们认为:
输入管脚和VCC相接,那肯定是高电平;
输入管脚和GND相接,那肯定是低电平;
输入管脚悬空,那肯定是高阻态;(可能是高/低电平输入引脚开关处于断开状态,也可能本来就是规划为于悬空状态的引脚)
实际情况中当高/低电平输入引脚的开关断开,引脚处于悬空状态下时,由于电路中的电磁感应现象,悬空的管脚上可能会随机地感应出时高时低的电平,而单片机是要求其高/低管脚输入需要有明确的输入信号的,也就是要么高电平1,或者是低电平0。这时候就需要通过上拉或者下拉电路通过一个电阻将输入的IO信号钳制在一个固定的高电平或者低电平上。
上拉电路讲解:
原理图A:当轻触开关SW1按下时,端口A输入的是低电平,但由于A中没有接上/下拉电路,当轻触开关SW1没有按下时,端口A的输入电平未知。
原理图B:当轻触开关SW5按下时,输入端口B的是低电平,但由于B接了上拉电路,当轻触开关SW5没有按下时,上拉电阻R1决定了输入端口B是高电平,不会存在未知的电平。
下拉电路讲解:
原理图C:当轻触开关SW1按下时,端口C输入的是高电平,但由于C中没有接上/下拉电路,当轻触开关SW1没有按下时,端口C的输入电平未知。
原理图D:当轻触开关SW5按下时,输入端口D的是高电平,但由于D接了下拉电路,当轻触开关SW5没有按下时,上拉电阻R1决定了输入端口D是低电平,不会存在未知的电平。
三、上拉与下拉电路的实际作用讲解
1、提高电压准位:
当 TTL 电路驱动 COMS 电路时,如果 TTL 电路输出的高电平低于 COMS 电路的最低高电平(一般为 3.5V),这时就需要在TTL 的输出端接上拉电阻,以提高输出高电平的值。
OC 门电路必须加上拉电阻,以提高电平的输出值。
2、加大输出引脚的驱动能力,有的单片机管脚上也常使用上拉电阻。
3、N/A pin 防静电、防干扰:在COMS芯片上,为了防止静电造成损坏,不用的管脚不能悬空,一般接上拉电阻产生降低输入阻抗, 提供泄荷通路,而管脚悬空就比较容易接受外界的电磁干扰。
4、电阻匹配,抑制反射波干扰:长线传输中电阻不匹配容易引起反射波干扰,加上下拉电阻是电阻匹配,有效的抑制反射波干扰。
5、预设空间状态/缺省电位:在一些 CMOS 输入端接上或下拉电阻是为了预设缺省电位. 当你不用这些引脚的时候, 这些输入端下拉接 0 或上拉接 1。在I2C总线等总线上,空闲时的状态是由上下拉电阻获得。
6、提高芯片输入信号的噪声容限:输入端如果是高阻状态,或者高阻抗输入端处于悬空状态,此时需要加上拉或下拉,以免受到随机电平而影响电路工作。同样如果输出端处于被动状态,需要加上拉或下拉,如输出端仅仅是一个三极管的集电极。从而提高芯片输入信号的噪声容限增强抗干扰能力。
一般来说上拉或下拉电阻的作用是增大电流,加强电路的驱动能力 ,比如说51单片机中的p1口 ,p0口必须接上拉电阻才可以作为IO口使用 ,上拉和下拉的区别是一个为拉电流,一个为灌电流 一般来说灌电流比拉电流要大 ,也就是灌电流驱动能力强一些
四、为什么需要加上一个电阻,而不直接连接VDD或者GND?
参考第二节中提供的电路图:
A中上拉电路不接电阻:那么当SW1闭合时,VCC到GND这段电路中没有任何负载电阻,那么此时电路短路,电路电流无限大。很容易烧板子!!!!
同理,D中下拉电路不接电阻:那么无论SW5开关是否闭合,尤其是闭合状态下时,VCC会输入一个高电平,而VCC到GND这段电路中没有任何负载电阻,那么此时电路短路,电路电流无限大。很容易烧板子!!!!
上/下拉电阻阻值的选择原则:
从节约功耗及芯片的灌电流能力考虑应当足够大;电阻大,电流小。
从确保足够的驱动电流考虑应当足够小;电阻小,电流大。
对于高速电路,过大的上拉电阻可能边沿变平缓。
综合考虑以上三点,通常在1k到10k之间选取。
上/下拉电阻阻值的选择说明:
1、上拉电阻实际上是集电极输出的负载电阻。不管是在开关应用和模拟放大,此电阻的选则都不是拍脑袋的。工作在线性范围就不多说了,在这里是讨论的是晶体管是开关应用,所以只谈开关方式。找个TTL器件的资料单独看末级就可以了,内部都有负载电阻根据不同驱动能力和速度要求这个电阻值不同,低功耗的电阻值大,速度快的电阻值小。
2、芯片制造商很难满足应用的需要不可能同种功能芯片做许多种,因此干脆不做这个负载电阻,改由使用者自己自由选择外接,所以就出现OC、OD输出的芯片。由于数字应用时晶体管工作在饱和和截止区,对负载电阻要求不高,电阻值小到只要不小到损坏末级晶体管就可以,大到输出上升时间满足设计要求就可,随便选一个都可以正常工作。
3、一个电路设计是否优秀这些细节也是要考虑的,集电极输出的开关电路不管是开还是关对地始终是通的,晶体管导通时电流从负载电阻经导通的晶体管到地,截止时电流从负载电阻经负载的输入电阻到地,如果负载电阻选择小点功耗就会大,这在电池供电和要求功耗小的系统设计中是要尽量避免的,如果电阻选择大又会带来信号上升沿的延时,因为负载的输入电容在上升沿是通过无源的上拉电阻充电,电阻越大上升时间越长,下降沿是通过有源晶体管放电,时间取决于器件本身。因此设计者在选择上拉电阻值时,要根据系统实际情况在功耗和速度上兼顾。
五、从IC(MOS工艺)的角度,深入讲解输入/输出引脚上/下拉的作用机制
1、 对芯片输入管脚:
若在系统板上悬空(未与任何输出脚或驱动相接)是比较危险的.因为此时很有可能输入管脚内部电容电荷累积使之达到中间电平(比如1.5V),而使得输入缓冲器的PMOS管和NMOS管同时导通, 这样一来就在电源和地之间形成直接通路, 产生较大的漏电流, 时间一长就可能损坏芯片。并且因为处于中间电平会导致内部电路对其逻辑(0或1)判断混乱. 接上上拉或下拉电阻后, 内部点容相应被充(放)电至高(低)电平, 内部缓冲器也只有NMOS(PMOS)管导通, 不会形成电源到地的直流通路. (至于防止静电造成损坏, 因芯片管脚设计中一般会加保护电路,反而无此必要).
2、对于输出管脚:
对于正常的输出管脚(push-pull型), 一般没有必要接上拉或下拉电阻。
对于OD或OC(漏极开路或集电极开路)型管脚。通常需要外接上拉电阻完成功能实现,此时多个输出可直接相连.
典型应用是: 系统板上多个芯片的INT(中断信号)输出直接相连, 再接上一上拉电阻, 然后输入MCU的INT引脚, 实现中断报警功能。
工作原理讲解:
在正常工作情况下, OD型管脚内部的NMOS管关闭, 对外部而言其处于高阻状态, 外接上拉电阻使输出位于高电平(无效中断状态,当有中断需求时, OD型管脚内部的NMOS管接通, 因其导通电阻远远小于上拉电阻,使输出位于低电平(有效中断状态)。针对MOS电路上下拉电阻阻值以几十至几百K为宜。
(注: 此回答未涉及TTL工艺的芯片, 也未曾考虑高频PCB设计时需考虑的阻抗匹配, 电磁干扰等效应)
1、芯片引脚上注明的上拉或下拉电阻, 是指设计在芯片引脚内部的一个电阻或等效电阻. 设计这个电阻的目的, 是为了当用户不需要用这个引脚的功能时, 不用外加元件, 就可以置这个引脚到缺省的状态. 而不会使 CMOS 输入端悬空. 使用时要注意如果这个缺省值不是你所要的, 你应该把这个输入端直接连到你需要的状态。
2、这个引脚如果是上拉的话, 可以用于 “线或” 逻辑. 外接漏极开路或集电极开路输出的其他芯片. 组成负逻辑或输入. 如果是下拉的话, 可以组成正逻辑 “线或”, 但外接只能是 CMOS 的高电平漏极开路的芯片输出, 这是因为 CMOS 输出的高, 低电平分别由 PMOS 和 NMOS 的漏极给出电流, 可以作成 P 漏开路或 N 漏开路. 而 TTL 的高电平由源极跟随器输出电流, 不适合 “线或”。
3、TTL 到 CMOS 的驱动或反之, 原则上不建议用上下拉电阻来改变电平, 最好加电平转换电路。 如果两边的电源都是 5 伏, 可以直接连但影响性能和稳定, 尤其是 CMOS 驱动 TTL 时. 两边逻辑电平不同时, 一定要用电平转换. 电源电压 3 伏或以下时, 建议不要用直连更不能用电阻拉电平。
4、芯片外加电阻由应用情况决定, 但是在逻辑电路中用电阻拉电平或改善驱动能力都是不可行的. 需要改善驱动应加驱动电路.改变电平应加电平转换电路.包括长线接收都有专门的芯片。
注意事项:本文内容为参考书籍或者其它博主的文章所作的个人总结,不作为任何商业用途,如有冲突请私下联系。
主要参考链接:
https://mp.weixin.qq.com/s/OuOwLWp_s2b3ADeybT_7Dw
http://www.360doc.com/content/19/0725/20/42387867_851002315.shtml
http://www.elecfans.com/d/587459.html