【问题标题】:Can I Configure GPIO pins after disabling high-impedance mode?我可以在禁用高阻抗模式后配置 GPIO 引脚吗?
【发布时间】:2014-07-24 10:30:03
【问题描述】:

我有以下 MSP430 示例程序,我希望重新排列它,使 PM5CTL0 &= ~LOCKLPM5; 行位于 P2SEL1 |= BIT0 | BIT1; 之前。如果我这样做会有问题吗? IE。如果我禁用高阻抗模式后配置 GPIO 引脚会有问题吗?

我的应用程序/电路方面没有任何问题。我只是对可能产生意外的任何瞬态电流或其他不稳定性感到好奇?还是在配置 GPIO 后禁用高阻抗模式只是一种仪式/惯例?

#include "msp430.h"

int main(void)
{
  WDTCTL = WDTPW | WDTHOLD;                 // Stop Watchdog

  // Configure GPIO
  P2SEL1 |= BIT0 | BIT1;                    // USCI_A0 UART operation
  P2SEL0 &= ~(BIT0 | BIT1);

  // Disable the GPIO power-on default high-impedance mode to activate
  // previously configured port settings
  PM5CTL0 &= ~LOCKLPM5;

  // rest of program
}

【问题讨论】:

    标签: embedded hardware msp430 texas-instruments


    【解决方案1】:

    我发现这段代码缺少两件事

    1. RX 引脚未配置为输入(而 TX 未配置为输出)
    2. 并且尚未为 RX 引脚启用上拉(假设您没有外部上拉)

    MSP430 遵循的“拇指”规则之一 :) 也许您已经在其他地方处理过。

    关于 LOCKLPM5 看一下用户指南的内容

    进入 LPMx.5 后,驻留在 PMM 模块的 PM5CTL0 中的 LOCKLPM5 会自动置位。 I/O 引脚状态根据进入 LPMx.5 之前的设置进行保持和锁定。 请注意,仅保留 pin 条件。所有其他端口配置寄存器设置,例如 PxDIR、PxREN、PxOUT、PxDS、PxIES 和 PxIE 内容都将丢失。

    “仪式”背后有一些逻辑!

    假设您正在处理唤醒事件:从 LPMx.5 状态唤醒后,您的外围设备处于默认状态。如果您要在不配置外设的情况下清除 LOCKLPM5 位,那么您的引脚将处于默认状态,即没有上拉,全部配置为输入等。让门打开以防意外故障。由于喜欢避免这种不确定性,因此首先配置外设,然后清除 LOCKLPM5。

    瞬态“默认”状态的影响,还取决于您如何回答以下问题 ->

    • 当 TX 引脚为输入时,您的电路是否能够处理这种情况? (很可能是的,否则你会在问题上与权力抗衡)
    • RX 引脚没有内部上拉,所以 RX 线会下降到“0”,即启动条件吗?这会导致电路中其他地方的中断吗?

    【讨论】:

      【解决方案2】:

      在我看来,在完成引脚重新配置后禁用高阻抗比以前好一点。这是因为处于高阻抗状态时,触点就像与外部电路断开一样,这保证了不会出现任何可能的噪声、失真或短峰曲折反弹。

      您的外部电路很可能不会做出反应,但理论上可能会有一个电路通过这样的“信号”改变其行为,换句话说,电线的另一端可能有一些敏感的东西会受到影响通过这样的反弹。

      【讨论】:

        猜你喜欢
        • 2011-10-18
        • 2021-07-19
        • 1970-01-01
        • 1970-01-01
        • 2013-05-26
        • 2014-12-26
        • 1970-01-01
        • 1970-01-01
        • 2017-03-15
        相关资源
        最近更新 更多