输入或输出MCU引脚上的上拉和下拉电阻用法


18

MCU INPUT引脚仅需要上拉/下拉电阻(内部还是外部)吗?相比之下,配置为OUTPUT的MCU引脚“知道其电平”,因为它可以驱动-与另一电路的某些输入端相连的“浮动” MCU OUTPUT引脚没有意义,因为MCU引脚的状态只能是高或低...我有这个权利吗?现在,在MCU启动或发生故障时,将上拉/下拉线与此“ MCU输出至IC输入”线路相关联以确保某个IC的输入永不浮动可能是有益的。

也许我只是在这里回答了我自己的问题...根据应用的不同,上拉/下拉电阻可以在输入和输出引脚上使用吗?

Answers:


21

上拉和下拉通常用于确保在未主动驱动的情况下线路具有定义的状态。它们用于输入以防止浮线,从而在高低和中间“未定义”区域之间快速切换。输出通常不需要它们。

但是大多数MCU引脚是GPIO,有时在启动时被定义为输入而不是输出。如您所说,有时候您不希望IC引脚输入在启动时浮动,特别是像通常使用微控制器的GPIO驱动的复位引脚那样。

这是当您在线路上使用弱上拉或下拉时。因为它们很弱,并且您选择了默认状态,所以它们不会对电路造成干扰(如果假设输入始终一直为低电平,然后拉高,则选择弱下拉,反之亦然),但是它们确实消耗一点电流。这就是为什么您选择一个足以完成任务的电阻(值越高,电阻越弱)的原因。

使用上拉(或下拉,更罕见)的另一种常规输出设置是漏极开路漏极开路连接。这些只会将连接压低,或释放线路,使其悬空。上拉电阻使线路进入高逻辑状态。


您提到了漏极开路和集电极开路连接,这些不适用于微控制器吗?仅仅Mosfets被用来设置逻辑水平?我想澄清一下微控制器是否可以驱动下拉电阻为高的线路。
–genericpurpleturtle

9

你拥有正确的权利;通常,您不需要输出上拉,但是它们对于在启动期间保持安全很有用。

在输出上使用上拉电阻的另一个原因是:如果来自多个MPU的多个输出相互连接,则您实际上不希望在同一条线上同时驱动一个VCC和另一个驱动0V!因此,您可以在输出上驱动0V或关闭输出(也许通过将其配置为输入)。当所有输出均关闭时,导线被上拉电阻拉至'1'(Vcc)。这称为“有线与”信号。(您可以通过下拉R进行相同的驱动“ 1”或“ off”驱动,这称为有线或)。

这种模式有多种用途,包括允许任何一个MPU发出错误信号或打开LED,或者允许它们全部轮流在一条线上相互发送消息。


4

如您所述,可以在期望作为输出引脚的引脚上使用上拉/下拉电阻来保证输入状态。

这样做是为了减轻固件/ MCU的故障,但仅可用于防止出现高阻状态(基本上,该引脚被偶然配置为输入)。

我对大多数MCU熟悉的是默认IO引脚在启动时进入高阻抗输入状态(但不能保证,而且我在所有MCU系列产品附近都没有经验),这意味着代码初始化引脚可能要花费一些时间状态被执行。

有时,这无关紧要,而其他时候则如此。


感谢您的回答,也补充了其他答案!仅供参考,PIC24F系列在复位时会将GPIO引脚默认为高阻抗(输入)(I / O引脚数据表)。
The_Ders

3

答案是,这取决于微控制器系列,默认行为是上电复位。如果微控制器只能配置为引脚上的“输出”或“输入”,则通常意味着它使用图腾柱驱动器作为输出-也就是说,它实质上是CMOS门的输出,在这种情况下,输出始终被驱动到导轨,因此没有理由消极地影响它。只有在将输出配置为开放式集电极/漏极开路拓扑时,才需要在输出上使用上拉/下拉电路。看到内部上拉/下拉选项仅在将引脚配置为输入时才适用,这种情况更为普遍。如果可以保证系统中的输入始终由某种东西驱动,那么这会浪费一些功率。


在硬件级别上有很好的解释。谢谢!
The_Ders

2

有时可能会有一个引脚作为输出,例如用于I2C。


以后在使用I2C时,我会牢记这一点。我相信在PIC24F系列中,I2C模块承担了对引脚的完全控制,并且线路需要外部上拉。现在我知道为什么-I2C模块实际上是将数据引脚配置为漏极开路/集电极输出(需要上拉电阻)还是高阻抗输入,具体取决于数据是从/向/向/输出。 I2C模块...我有这个权利吗?我对I2C不太熟悉。
The_Ders

没错
pjc50

I2C是线与模式的一个实例。集电极开路使您可以像使用GPIO引脚一样简单。
Brian Drummond
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.