IO引脚必须每个都有自己的上拉/下拉电阻吗?


13

一个非常基本的问题:

用作开关或跳线输入的微控制器的每个IO引脚是否必须具有自己的上拉/下拉电阻?

简单的3针IO原理图

在此示例中,每个引脚均被电阻下拉,然后被1P3T开关上拉至VCC。

看起来很简单,但是随着使用更多的IO引脚,是否绝对需要更多的电阻器?有什么聪明的方法可以减少电阻的数量吗?

相关问题:共享一个上拉电阻

Answers:


16

根据提供的原理图,如果所有3个输入均共享一个电阻,那么通过开关将任何一条线拉高,就会将所有3条线都升高到高电平,这违背了设计的目的-MCU将不知道哪个开关位置是已选择。

对于此类设计,减少零件数量而不是电阻器数量的常见方法是使用公共总线电阻器网络或阵列:(
通用总线电阻器阵列 此处开始


这些可以作为通孔SIP / DIP以及SMD来使用,根据您的需要,可以使用多种电阻器数量。总线引脚接地,其他引脚连接至相应的MCU输入,如原理图所示。 SIP电阻器阵列 (从这里开始

贴片电阻阵列 (从这里开始


8

大多数MCU在每个引脚上都内置有可选的上拉(非下拉)电阻器,因此通常通过开关将引脚下拉(并处理软件中的极性反转)。

因此-无需电阻。

至于上拉而不是下拉的原因,这是1970年的TTL逻辑电路遗留下来的一种习惯,在那里上拉输入的电流要比拉下的电流少得多,下拉电阻会浪费更多的功率。这不再适用于当今的CMOS逻辑,但是上拉的传统一直存在,因此早期的5V CMOS芯片与较旧的TTL逻辑兼容。


我以为上拉的原因是因为它们的通用用法是集电极开路输出,一旦习惯了采用一种方式,就没有充分的理由就继续采用这种方式。
dunkers 2012年

此外,TTL输出可以吸收16mA电流,但仅提供800uA的电流,因此可以使用上拉电阻为输出增加肌肉。如果您不连接TTL输入,它会自行上拉,因此出于输入原因的上拉对我来说有点奇怪。(对不起,编辑先前的评论等待太久了……)
dunkers 2012年

“ TTL输入会自行上升”……在某种程度上是肯定的,但并不可靠-橙色大书中指定40 µA的Ih以确保Vin> 2.4V(对于7400;对于74LS为20ua)肯定是使TTL输入保持打开状态不推荐在我工作过的任何地方...
Brian Drummond 2012年

1
上拉与上拉不只是历史性的。使用上拉电阻,开关的另一侧可以接地,这通常很方便。
Olin Lathrop

1
TI MSP430系列微控制器具有内部上拉和下拉。
路人2014年

0

您永远不会想假设逻辑输入会上拉或下拉来保持开放。如果输入保持开路,则该天线很小,并且还受逻辑器件内的电流的影响。因此,您可以上下拉动以确保输入干净且可预测。我在1980年代在Fairchild Semiconductor工作时学会了这一规则。


1
这不能回答所提出的问题。
Photon

我认为,原始问题的上下文是存在按钮和开关,它们是MCU的输入。如果未使用I / O引脚,则可以将其设为输出,然后从固件将其驱动为低电平(或高电平)。那应该解决潜伏的EMI问题,并且不需要外部电阻。
尼克Alexeev
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.