This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430FR5872:LPM4.5唤醒

Guru**** 2511985 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/695402/msp430fr5872-lpm4-5-wakeup

器件型号:MSP430FR5872

各位专家:

我在我的应用中使用 LPM4.5,并且能够获得正确的 LPM4.5唤醒。

根据 TI 手册、在从 LPM4.5唤醒后、I/O 的状态被锁定并保持不变、直到应用程序清除 PM5CTL0寄存器中的 LOCKLPM5位。 但问题是、当我通过 PM5CTL0和=~LOCKLPM5清除该位时; 我在示波器上看到我的 GPIO 引脚之一出现毛刺脉冲。 下图对这种行为进行了批评。

您能解释一下这种方法背后的原因以及避免这种情况的解决方案吗?

提前感谢。

  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Himanshu、

    问得好。 从时间刻度来看、似乎电源电压中存在非常缓慢的 RC 型衰减。 对于何时在外部应用中断信号以及何时清除 LOCKLPM5位、您是否有任何捕获会在引脚上显示此行为?

    为了帮助我调试这个问题、您是否可以共享以下信息以便我复制您的测试设置:

    您在哪个 GPIO 引脚上看到此行为
    2.在进入 LPM4.5 (PxOUT、PxDIR、PxREN 等)之前、数字 I/O 寄存器设置是什么
    3.从 LPM4.5退出后的数字 I/O 寄存器设置是什么(或确认它们与#2相同)
    4.连接到引脚的外部电路是什么(外部连接的任何其他器件/无源器件或仅连接示波器监控器?)

    此致、
    Walter
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    1)显示此行为的 GPIO 引脚是  P9.7、配置为输出引脚、如下所示

    #define ASIC_keepalive_port &P9IN

    #define ASIC_keepalive_bit   BIT7

    #define PXOUT_OFFSET  0x02

    #define PXDIR_OFFSET  0x04

    *((unsigned char *) ASIC_keepalive_port + PXDIR_OFFSET)   |= ASIC_keepalive_bit;

    *((unsigned char *) ASIC_keepalive_port + PXOUT_offset)   |= ASIC_keepalive_bit;

    2) 2) 以下例程 用于进入 LPM4.5模式:

    /*将 P1.6配置为中断*/

    P1IES |= BIT6;                 //P1.6高/低边沿
    P1IFG = RESET_TO_ZERO;     //清除所有 P1中断标志
    P1IE |= BIT6;                 // P1.6中断被启用

    STOP_WDT                  //在进入 LPM//之前禁用看门狗

    PM5CTL0 &=~LOCKLPM5;        //禁用 GPIO 上电默认高阻抗模式以激活 先前配置的端口设置
    PMMCTL0_H = PMMPW_H;       //打开 PMM 寄存器进行写入
    PMMCTL0_L |= PMMREGOFF;
    PMMCTL0_L &=~(SVSHE);       //禁用高侧 SVS
    PMMCTL0_H = RESET_TO_ZERO;//锁定 PMM 寄存器

    /*输入 LPM4请注意、此操作不会返回。 LPM 将通过复位事件退出,从而导致重新启动*/
    _bis_SR_register (LPM4_BITS);

    而(1)// MCU 将在这里等待、直到在 P1.6上接收到中断


    LPM4.5唤醒后:

    PM5CTL0 &=~LOCKLPM5;           //解锁 GPIO  

    只要使用上述线路解锁 GPIO、我就能看到这种干扰。

    3)请参阅引脚 P9.7的下图。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的进一步说明。

    通过 P1.6从 LPM4.5唤醒后、是否在清零 LOCKLPM5位之前再次将 P9.7配置为输出高电平(使用上面的代码)?

    此致、
    Walter
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    实际上、我在清零 LOCKLPM5位后将 P9.7配置为高电平。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [报价用户="Himanshu Khanna "]清除 LOCKLPM5位后、我将 P9.7配置为高电平。[/quot]

    这可能是导致此问题的原因。  当您退出 LPM4.5并完成复位时、数字 IO 寄存器内容被复位为默认值(在大多数情况下为高阻态输入)。  这是因为寄存器电源域关闭时、寄存器内容在 LPM4.5期间丢失。  一旦在从 LPM4.5唤醒后清除复位、您需要在 清零 LOCKLPM5位之前将 GPIO 寄存器重新配置为预期的行为。  否则、当您解锁寄存器时、该引脚将获取其输入模式(Hi-Z)的复位值、直到您稍后将其配置为高电平。  您是否能够进行此更改并再测试一次引脚的行为?

    此致、
    Walter

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经做了这个改变,现在它的工作已经很好了。
    感谢您的帮助以及宝贵的时间和解释。