在数字电路中,只有电压信号的“高”和“低”两种状态。在某些情况下,需要对输入信号进行状态的定义,这需要依靠另外一个信号进行定义,从而确定这个输入信号的状态。上拉电阻的一个最基本的作用就是在数字电路输入端,将输入信号的状态进行明确的定义。
当MCU在复位状态时,IO口即使未定义输入状态,但也会有一部分的电流通过IO电路,这样会使 IO 电平无法稳定,如果此时用万用表测量将会发现IO处于未知电平。因此将 IO 清零(由输出变为输入)并加上上拉电阻后,电流将被上拉电阻【1】流过,导致端口处于高电平,达到稳定状态。
在数字电路中,采用上拉电阻将输入信号拉至高电平的原因有如下两点:
首先,像传感器、按钮这样的外部设备通过线缆与 MCU 相连时,由于线缆本身具有电容特性,如果没有上拉电阻,那这条线上的电压就会受到一定的干扰,这会导致接收到的信号出现错误。而上拉电阻的引入可以避免这种情况的发生。
其次,尽管现代 MCU 的输入电路一般都是 CMOS 结构,输入阻值达到了微欧,甚至不需上拉阻,但上拉电阻的引入不仅能提高电路的噪声抑制能力,而且与大部分外设兼容性良好。
正确的上拉电阻的选型对于电路正常工作具有重要意义。选用过小的阻值会使电流过大,从而加大功耗、产生热量,甚至导致器件损坏;选用过大的阻值会导致电路的工作速率下降,也容易受到噪声的干扰,造成信号传输异常。
因此,正确的选型应该考虑电路工作电压范围、电路所需的电流和信号传输速率等因素。一般而言,上拉电阻的阻值在4.7KΩ-100KΩ之间,既可满足电路需要,又不会对电路带来太大的压力。
例如,对于一个独立按键的检测,当按键处于未按下的状态时,IO 口不通电,电平处于浮动状态;当按键按下时,IO 口接地,电平处于低电平。为避免浮动输入引起一些异常情况,可通过外部上拉电阻来保证输入口电平的稳定,从而达到更可靠的按键检测功能。