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.
刚做了一个用PMM测Vcc电压的程序,只在2.5V下有效,不管再怎么调试程序都不能更改电压。麻烦各位大虾帮忙可能看是什么问题呢?
#include "msp430f5529.h"
void main( void ) {
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
P1DIR = BIT0;
P8DIR = BIT0 + BIT1 + BIT2;
P1OUT = 0; P8OUT = 0; PMMCTL0_H = 0xA5; //开PMM电源管理
PMMIFG = 0; // PMMRIE = SVMHVLRIE + SVMLVLRIE + SVMLIE;
PMMRIE = SVMHIE;
SVSMHCTL = SVMHE + SVSMHRRL_6; //配置SVML电压
PMMCTL0_H = 0X00; //锁存配置
while(1) { for(unsigned int i=0;i<60000;i++); P1OUT ^= BIT0; } }
#pragma vector=SYSNMI_VECTOR
__interrupt void SYSNMI_ISR(void) {
P8OUT = BIT1;
PMMIFG &= ~SVMHIFG;
}
谢谢您的回复,这个代码我是用DEMO板来测试的,电路图没什么参考价值。
另外这个PMM检测Vcc电压的用法,有点类似于原来的SVS,与部的电路接法无关。我是把Vcc直接接到一个可调电源上测试的。
下面是在F5418A系列中验证过的代码,请参考。
设置SetVCore在电压大于3V时,程序才执行。判断VCC电压等级使用SVMH
void main(void)
{
/******** 进行基本的配置,包括初始化看门狗,GPIO等*******/
// 慢上电VCC 大约为~1.62-1.85V
// 为了保证VCore=3,VCC电压需要更高一些
// SetVCore函数用于监测电压
while (SetVCore(PMMCOREV_3) != PMM_STATUS_OK);
PMMCTL0_H = 0xA5;
// 清标志
PMMIFG = 0;
// 如果VCore电压增加,设置SVMH到一个新的电压
SVSMHCTL = SVMHE | SVSHE | (SVSMHRRL0 * 6); // VSVMH,level6 = 2.90V-3.23V
while ((PMMIFG & SVSMHDLYIFG) == 0) ;
// 清标志
PMMIFG &= ~SVSMHDLYIFG;
// 等待,直到SVMH标志被清除(VCC > 2.90V-3.23V)
while (PMMIFG & SVMHIFG)
{
PMMIFG &= ~SVMHIFG;
}
//这里电压应当为3V,应用程序执行
}