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.

请教F5529的PMM测试Vcc电压问题

Other Parts Discussed in Thread: MSP430F5529

刚做了一个用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,应用程序执行


    }