主题中讨论的其他器件: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; } }

