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

电器工程 微控制器 图片 GPIO 拉起 拉下
2022-01-01 15:37:00

MCU INPUT 引脚是否只需要上拉/下拉电阻(无论是内部还是外部)?相比之下,配置为 OUTPUT 的 MCU 引脚“知道它处于什么级别”,因为它进行驱动 - 连接到另一个电路的某个输入的“浮动”MCU OUTPUT 引脚没有意义,因为 MCU 引脚的状态只能高或低……我有这个权利吗?现在,在 MCU 启动或故障时,将上拉/下拉连接到“MCU 输出到 IC 输入”线可能是有益的,以确保某些 IC 的输入永远不会浮动。

也许我只是在这里回答了我自己的问题……上拉/下拉电阻器可用于输入和输出引脚,具体取决于应用?

4个回答

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

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

这是当您在线上使用上拉或下拉时。因为它们很弱,并且您选择默认状态,它们不会对您的电路产生干扰(如果输入应该始终为低电平,然后拉高,则选择弱下拉,反之亦然),但是它们确实会消耗一些电流。这就是为什么你选择一个足够弱的电阻(值越高,越弱)来完成这项工作。

另一种使用上拉(或下拉,较少见)的正常输出设置是漏极开路集电极开路连接。这些只会将连接驱动为低电平,或释放线路,使其悬空。上拉电阻用于使线路进入高逻辑状态。

你说得对;通常你不需要输出上拉,但它们对于在启动时保持安全等很有用。

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

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

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

这样做是为了减轻固件/MCU 故障,但只能用于防止高阻抗状态(基本上该引脚被意外配置为输入)。

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

有时这无关紧要,有时它确实如此。

答案是它取决于微控制器系列,它的默认行为是上电复位。如果微控制器只能在引脚上配置为“输出”或“输入”,这通常意味着它使用图腾柱驱动器进行输出——也就是说它本质上是 CMOS 门的输出,在这种情况下输出总是被驱动到一个轨道上,所以没有理由被动地影响它。在输出上使用上拉/下拉有意义的唯一情况是当它被配置为集电极开路/漏极开路拓扑时。更常见的是内部上拉/下拉选项仅在引脚配置为输入时适用。如果您可以保证在您的系统中输入总是由某些东西驱动,那么这会浪费一些功率。