Quantcast
Channel: MSP 低功耗微控制器论坛 - 最近的话题
Viewing all articles
Browse latest Browse all 3634

求教:MSP430F5418A SVS/SVM设置LPM3唤醒时间

$
0
0

最近项目中发现一个问题, 就是使用JTAG debug时候, 程序从LPM3唤醒到AM工作正常, 但是不接JTAG就不正常, 查DataSheet发现是TEST pin的关系:

看到这段描述 ,我的理解是当TEST为高时,唤醒时间为wake-up-fast,如果为低,则是由SVS(L)和SVM(L)来设置,

继续查找datasheet相关设置的资料:

看了这个表我有点疑惑, 为了让唤醒时间达到fast的效果, 是同时需要SVS(L)和SVM(L)为t(wake-up-fast)还是只需要其中一个?

比较自己的代码:

void SetVcoreUp (unsigned int level)
{
    // Open PMM registers for write
    PMMCTL0_H = PMMPW_H;
    // Set SVS/SVM high side new level
    SVSMHCTL = SVSHE + SVSHRVL0 * level + SVMHE + SVSMHRRL0 * level;
    // Set SVM low side to new level
    SVSMLCTL = SVSLE + SVMLE + SVSMLRRL0 * level;
    // Wait till SVM is settled
    while ((PMMIFG & SVSMLDLYIFG) == 0);
    // Clear already set flags
    PMMIFG &= ~(SVMLVLRIFG + SVMLIFG);
    // Set VCore to new level
    PMMCTL0_L = PMMCOREV0 * level;
    // Wait till new level reached
    if ((PMMIFG & SVMLIFG))
    while ((PMMIFG & SVMLVLRIFG) == 0);
    // Set SVS/SVM low side to new level
    SVSMLCTL = SVSLE + SVSLRVL0 * level + SVMLE + SVSMLRRL0 * level;
    // Lock PMM registers for write access
    PMMCTL0_H = 0x00;
}

其中SVSMLACE=0, 为手动模式,

SVSLE=1,SVSLMD=0,SVSLFP=0;  SVS(L)为t(wake-up-slow)

SVMLE=1,SVMLFP=0; SVM(L)为t(wake-up-slow)

为了让SVS(L)和SVM(L)都为t(wake-up-fast), 需要将SVSLFP=1,SVMLFP=1;

也就是:

SVSLE=1,SVSLMD=0,SVSLFP=1

SVMLE=1,SVMLFP=1

但这种情况下, 从AM进入LPM3, 直接关机了(也有可能是reset了)

如果单单只设置一个SVSLFP或是SVMLFP, 那么进入LPM3没问题,但是唤醒时间还是wake-up-slow的, 

到底如何配置才能正确的让LPM3唤醒时间为fast,求教.

注: 我也测试过SVSLE=0和SVMLE=0的情况, 唤醒时间确实为fast,但在LPM3模式下有时唤不醒,不太稳定,也不知道原因


Viewing all articles
Browse latest Browse all 3634

Trending Articles