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.

[参考译文] MSP430F6734A:在辅助电源开关时从 LPM3唤醒

Guru**** 2535780 points
Other Parts Discussed in Thread: MSP430F6779

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/734184/msp430f6734a-wakeup-from-lpm3-when-auxiliary-supply-switch

器件型号:MSP430F6734A
主题中讨论的其他器件:MSP430F6779

您好!

我们有一个使用一节电池和一节主电源的计量应用。

VCC = 3.3V 来自交流电源。

AUX1VCC = 3.6V 电池

AUX2VCC = 0V 接地

AUX3VCC = VDSYS、所以 VCC 或 AUX1将始终有电源。

MSP 以8MHz 的频率工作、VCORE=0、即1.35V

我的目的是、如果我们从电池(AUX1)获得电源、MSP 应该进入 LPM3、如果电源切换回 AUX0 (即 VCC)、则唤醒

AUX 模块配置为完全由硬件控制。 当 AUX 模块执行其任务时、没有软件交互。

我的以下配置按预期工作、但有时(我讨厌这个词)它不会自动切换到 VCC、即使主电源恢复。

----

我在用户手册中再次学习了 AUX 模块、PMM 模块和 SVS 模块。

但我不明白它们之间的交互方式到底是怎样的。

Q1:是否需要启用 SVM (电源电压监控器)高侧 才能使 AUX 模块正常工作? 如果是、如果我禁用 AUX 模块、原因和行为会发生变化?

Q2:AUX 模块是否会继续在 LPM3模式下运行? AUX 开关中断能否正式唤醒 MCU? 没有人提到这一点。

Q3:PMM 模块似乎有很多勘误表。 PMM11、PMM15和 PMM26

#pragma vector = AUX_Vector/* 0xFFE6 AUX Supply */
_中断 void AUX_ISR (void)
{
AUXIFG = 0;
LPM3_EXIT;
}

void main (void)
{
// SVS -> Supervisor 会导致一个上电复位(POR)事件
// SVM ->监控会生成一个中断标志,软件随后可以处理该中断标志,这是 AUX 模块所要求的!!
//
//低侧监视器 Vcore
//高侧监视器 VCC
SFRIE1 = 0U;
SFRRPCR = SYSNMI | SYSRSTRE | SYSRSTUP;//禁用复位引脚、勘误表 PMM26:如果 RST 引脚在写入 SVSMHCTL 或 TLSMLCTL PMMC0_H
= PMMC0_H 时被拉至低电平、则器件锁定
;PMCMPH = PM0 = PMCOV // PMM 内核电压0 (1.35V)

SVSMIO = 0U;
PMMIFG = 0U;
PMMRIE = 0U;//勘误表 PMM7:PMMRIE 默认条件与用户指南不同

SVSMHCTL = SVSHE | SVSHRVL_1 | SVSMHACE | SVSMHRRL_1 | SVFP | SVMSHHE; //由于 PMM15勘误表、添加了 VCC、Warning SVSHFP 和 SVMHFP 位的设置!!
while (((PMMIFG & SVSMHDLYIFG)=0U);

PMMIFG =0U;
SVSMLCTL = SVSLE | SVSLRVL_0 | SVSMLACE | SVSMLRRL_0;// Vcore 的设置和在慢性能模式下使用
while (((PMMIFG & SVSMLDLYIFG)= 0PMSMLRM0U


;PMSMCLR = 0PMU = 0PMSMCLR);// PMSMCLPMSMCLR = 0PMSMR = 0U;PMSMCLR = 0PMSMCLR = 0U;PMSMCLR = 0PM0M/
PM0PM ~ //使能复位引脚

//测试= PMM15Check ();这返回0 (如勘误表中所示),所以我们不受 PMM15的影响

//使能 DVCC、AUXVCC1的控制,但不适用于 AUXVCC2
AUXCTL0 = AUXKEY;

// AUXLVLx = 0 -> 1.67V - 1.74V - 1.80V
// AUXLVLx = 1 -> 1.87V - 1.95V - 2.01V
// AUXLVLx = 7 -> 2.91V - 3.02V - 3.10V
AUXCTL2 = AUX0LVMR_0 | AUX0LVL_7 | AUX1LVL_1
| AUX2LVCMD_1;AUX2LVCTL1 = AUX2LVDMD;AUX2LVCMD // AUXVCC2是软件控制和禁用
的 AUX2CHCTL = AUXCHKEY;
AUX3CHCTL = AUXCHKEY;
AUXADCCTL = 0U;
AUXIFG = 0U;
AUXIE = 0U;
AUXCTL0_H = 0;//禁用
。
。
将 MCLK 设置为8MHz
。
。

while (true)
{
//如果我们没有从 VCC 供电、则进入 LPM3
AUXIFG = 0;
if ((AUXCTL1 & AUX0OK)= 0)
{
//主电源回电
时唤醒 AUXIE = AUXSWGIE | AUX0SWIE;


//勘误表 PMM11: MCLK 在退出 LPM3和 LPM4
UCSCTL5时快速启动|= DIVM0_L;// MCLK/2=4Mhz

//进入 LPM3
__RESET_Watchdog ();
__bis_SR_register (LPM3_bits + GIE);
}

//勘误表 PMM11:MCLPM5_RESET_Watchdog (LPM5_DON_DMCLPM0_CLK
+ UCMPMBE);}LPM100_DCL0
~+ LPM5_DCLPMCLPM5_FRATE = UCTL (LPM0_ //再次将 MCLK 恢复为8MHz

AUXIE = 0;
}

} 

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

    要回答您的问题:

    Q1:对于硬件控制模式、必须按照数据表第4.2.4节中的讨论启用和配置 PMM 中的 SVM。 第4.2.5节还概述了有关两个模块中要选择的级别的其他注意事项。 如果 SVM 被禁用、则硬件控制的切换不可用。

    Q2:AUX 模块应通过不同的 LPM 工作、因为它不是通过 MCLK/SMCLK/ACLK 计时、而是直接从 VLO 计时。 AUX ISR 应通过 LPM 唤醒器件、但 LPMx.5模式除外、因为它们只有特定的中断才能从这些模式中唤醒。

    Q3:是的、您可能需要注意或解决一些 PMM 勘误表。

    此外、您还看到了以下 TIDesign? 它涉及几种可能对您的问题有用的 AUX 切换方案和配置。

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

    MCU 在工作模式下以8MHz 的频率工作、在此模式下、我们的产品消耗的电流约为2mA。
    当 VCC 不存在时、在 LPM3模式下、它从连接到 AUX1的电池消耗3.5uA 电流。
    这是我们产品的预期行为。

    但是、当主 VCC 被恢复时、处于 LPM3模式的 MSP430 "有时"进入未知状态。 它应该通过从 AUX1切换到 VCC 来唤醒并进入激活状态、但这种情况并未发生。
    当处于 LPM3模式并由电池供电时、如果 VCC 恢复、MCU 不会唤醒、而是进入一个奇怪的状态。

    我可以描述的这种状态是、当 VCC 存在且没有代码执行时、MCU 开始消耗电池电流2mA、就像它仍然处于 LPM3中一样、而且看门狗计时器不会复位 MCU。 (看门狗始终处于激活状态并以 VLO 为源)

    如果在 AUX1电池可用时、我在该未知状态下关闭 VCC、并重新打开 VCC、MCU 会返回到已知状态并按预期继续工作。

    ps1:我们测量了 VCC 的上升时间、它为475V/秒 数据表中的最大规格为1000V/秒。

    PS2:我们使用用户指南示例3中给出的建议设置进行了测试。 结果不变。 现象仍然随机存在。  

    。
    SVSMHCTL = SVSHE | SVSHRVL_0 | SVSMHACE | SVSMHRRL_0 | SVSHFP | SVMHE | SVMHFP;// VCC、Warning SVSHFP 和 SVMHFP 位的设置是由于 PMM15勘误表而添加的!!
    while ((PMMIFG & SVSMHDLYIFG)== 0U);
    ..
    //启用 DVCC 的控制、AUXVCC1
    AUXCTL0 = AUXKEY;
    
    // AUXLVLx = 0 -> 1.67V - 1.74V - 1.80V
    // AUXLVLx = 1 -> 1.87V - 1.95V - 2.01V
    AUXCTL2 = AUX0LVMR_0 | AUX0LVL_1 | AUX1LVL_0
    。 

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

    您能否在设备上发布标记图片?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     上面有保形涂层 、有点难读。

    64ASCZTG4

    MSP430

    F6736A

    版本 B

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

    为了简化这个问题、今天我通过在进入 LPM3前清零 GIE 标志来完全禁用唤醒机制。
    因此、我不使用"_bis_SR_register (LPM3_bits + GIE);"命令、而是使用"_bis_SR_register (LPM3_bits);"进入 LPM3。 并且只有从 LPM3退出的源被复位。

    然后我开始观察 LPM3中辅助电源模块的行为。

    正如我之前在产品中指出的、VCC = 3.3V 来自交流电源、AUX1VCC = 3.6V 电池、AUX2VCC = 0V 接地、AUX3VCC = VDSYS。
    在测试期间、我测量来自 AUX1 (即电池)的电流消耗。

    我开始测试、只需定期(每4-5秒)打开和关闭 VCC 即可。
    正常情况下、当存在 VCC 时、电池消耗0.5uA 电流、当 VCC 缺失时消耗3.7uA 电流。

    在几个关断/导通周期后、当存在 VCC 3.3V 时、MSP 开始从仅连接到 AUX1引脚的电池消耗非常高的电流(请记住 MSP 仍处于 LPM3模式)、从那时起、当我关闭 VCC 时、 MSP 复位并通过我们的代码立即再次进入 LPM3。

    下面是显示问题的最小代码:

    void main (void)
    {
    _disable_interrupt ();
    WDTCTL =(WDTPW | WDTHOLD_L);
    
    //启用对 DVCC、AUXVCC1的控制、但不适用于 AUXVCC2
    AUXCTL0 = AUXKEY;
    
    // AUXLVLx = 0 -> 1.67V - 1.74V - 1.80V
    // AUXLVLx = 1 -> 1.87V - 1.95V - 2.01V
    // AUXLVLx = 2 -> 2.06V - 2.14V - 2.21V
    // AUXLVLx = 3 -> 2.19V - 2.27V - 2.33V
    - 2.91V / AUXLVLx = 3.21V
    AUXCTL2 = AUXMR_0 | AUX0LVL_6 | AUX1LVL_3 | AUX2LVL_3;
    AUXCTL1 = AUX2MD;// AUXVCC2是软件控制和禁用
    的 AUX2CHCTL = AUXCHKEY;
    AUX3CHCTL = AUXCHKEY;
    AUXADCCTL = 0U;
    AUXIFG = 0U;
    AUXIFG = AUXCHKEY;AUX3CHCTL = AUX0U;AUX3CHCTL = AUX0U;AUX1...
    AUXCTL0_H = 0;//禁用
    
    while (true)
    {
    //直到 MCU 复位
    __bis_SR_register (LPM3_bits);
    }
    } 

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

    您能研究如何实现场景2的 AUXPMM2勘误解决方法吗? 您的情况可能不完全适合、但我想确保完全排除这种情况。

    此外、您能否通过上面的链接使用 MSP430F6779_AUX) 04.c (又称为示例4)重复您的测试? 这是最接近您所拥有的配置。

    您还能分享一段展示 MSP430及其电源连接的原理图吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jace:

    我将 详细检查 MSP430F6779_AUX_04.c 并更新该线程。

    关于 AUXPMM2勘误表:

    >>情形1:当 AUXPMM 被配置为硬件控制或软件控制时
    >>切换和模块从 DVCC 切换到 AUXVCC2、锁存电流可以...

    在这里、我们不使用 AUXVCC2。

    >>场景2:当电池首先连接到 DVCC、AUXVCC1或 AUXVCC2时
    >>电压电源、由于电池的内部电阻较低、因此上升速度非常快...

    这里、我们有3.6V 电池连接到 AUXVCC1、但使用串联10欧姆电阻(原理图中的 R61)。

    我们已将串联电阻值从先增加到33欧姆、再增加到100欧姆。 这对我们的问题没有帮助。 问题仍然存在。

    但是、当问题发生时、它会在 DVCC 存在时降低电池消耗的电流。

    所以我们的结论是 AUXPMM2勘误表不是影响我们的。

    下面是显示所有电源域的原理图:

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

    为了澄清您的原理图、B3V3使用 VDSYS、对吗?

    C19、C29、C30有什么特殊原因? GPIO 电源不需要额外的电容。 我担心这里的额外电容会导致 MSP430的功率斜坡问题。 一项测试是也删除这些内容。

    祝您在参加示例4测试时一切顺利?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是 B3V3由 VDSYS 提供。

    我们删除了用于提高产品 EMC 性能的 C19和 C29。

    我们还按照数据表中的建议将 C61值从100nF 更改为4.7uF。

    问题发生率似乎降低了。

    但遗憾的是、我们一次观察到问题情况、甚至更新了值。

    我们将继续进行测试并让您了解更多信息。 尤其是对于示例4。

    现在、我们正在尝试自动化测试系统、以便更快地说服自己。