最近项目中发现一个问题, 就是使用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模式下有时唤不醒,不太稳定,也不知道原因
Ho Cong:
另外还发现个有意思的现象, 我使用的板子是没有用外部晶振的,用的是内部DCO, 频率是24Mhz,
P5.2/P5.3是默认为GPIO, 这样的配置LPM3唤醒会出问题.
但是将P5.2/P5.3改成XT2IN / XT2OUT功能, LPM3唤醒就正常了, 但是耗电流就增加了3mA, 不知道对解决这个问题有没有帮助
灰小子:
回复 Ho Cong:
方便的话,建议提供下工程文件或者完整代码
Ho Cong:
回复 灰小子:
你好,不方便提供完整代码,您需要看哪部分的代码?
HG:
偶觉得产品出去的时候一般不会接JTAG调试接口的,而且连着仿真器调低功耗意义也不是很大。为啥要去纠结这个唤醒时间呢?
Ho Cong:
回复 HG:
不知道你是不是没有仔细看完我的问题:
现在是连着JTAG正常, 不连就不正常….所以才纠结啊..
看文档,接着JTAG是 t(wake-up-fast).(实际上就是一个TEST的电位问题,我单独上拉测试过,就是这个脚影响),
我现在就想做到不接JTAG也设置成t(wake-up-fast), 但是设置不起作用,想请教如何设置才是正确
Ho Cong:
回复 Ho Cong:
顶一下, 希望大大们能解答一下关于SVS/SVM的设置问题
HG:
回复 Ho Cong:
如果要手动模式,首先要设置SVSMLACE=0;SVSLMD=1。然后再按照Table 2.7和2.9来设置。手动模式已经和自动模式的配置没关系了。
Ho Cong:
回复 HG:
HG
如果要手动模式,首先要设置SVSMLACE=0;SVSLMD=1。然后再按照Table 2.7和2.9来设置。手动模式已经和自动模式的配置没关系了。