主题中讨论的其他器件:ENERGYTRACE、
您好、TI 团队:
我正在使用 TI 的微控制器 MSP430FR2433、因此该项目基本上涉及将传感器接通2秒、然后将 MSP430FR2433置于低功耗模式(LMP3) 30秒。 代码正常运行、器件进入低功耗模式、但功耗仍很高(电流消耗为18微安)。 我正在使用外部振荡器通过 RTC 时钟来降低功耗、并且我看到数据表显示 采用32768Hz 晶振的 LPM3.5实时时钟(RTC)计数器:730nA (典型值)。 为什么电流消耗如此之高。 LMP3模式至少需要1或2微安。 我已经连接了下面的代码和 Energytrace、您可以在该线程中进行检查。 同时还提到了移除的 J11跳线。
#include <msp430.h> void initGpio(void); volatile unsigned int secondsCount = 0; volatile unsigned int blinkCounter = 0; int main(void) { WDTCTL = WDTPW | WDTHOLD; // Stop WDT initGpio(); // Configure GPIO // Initialize XT1 32kHz crystal P2SEL0 |= BIT0 | BIT1; // set XT1 pin as second function do { CSCTL7 &= ~(XT1OFFG | DCOFFG); // Clear XT1 and DCO fault flag SFRIFG1 &= ~OFIFG; } while (SFRIFG1 & OFIFG); // Test oscillator fault flag // Configure RTC RTCMOD = 32768 - 1; // Set RTC modulo for 1 second RTCCTL = RTCSS__XT1CLK | RTCSR | RTCPS__1; RTCCTL |= RTCIE; // Configure TimerA for 1-second interrupt TA0CCR0 = 32768 *30 - 1; // Set TimerA period to 1 second TA0CTL = TASSEL__ACLK | MC__UP; // ACLK, Up mode TA0CCTL0 = CCIE; // Enter LPM3.5 mode with interrupts enabled. __bis_SR_register(LPM3_bits | GIE); __no_operation(); return 0; } #pragma vector=RTC_VECTOR __interrupt void RTC_ISR(void) { switch (__even_in_range(RTCIV, RTCIV_RTCIF)) { case RTCIV_NONE: break; case RTCIV_RTCIF: secondsCount++; // Increment seconds count RTCCTL &= ~RTCIF; // Clear RTC interrupt flag break; default: break; } } #pragma vector=TIMER0_A0_VECTOR __interrupt void TimerA_ISR(void) { if(blinkCounter == 1) { P1OUT |= BIT0; } else { P1OUT &= ~BIT0; } blinkCounter++; if(blinkCounter > 30) { blinkCounter = 0; } // Toggle LED } void initGpio(void) { P1DIR = 0xFF; P2DIR = 0xFF; P3DIR = 0xFF; P1REN = 0xFF; P2REN = 0xFF; P3REN = 0xFF; P1OUT = 0x00; P2OUT = 0x00; P3OUT = 0x00; // Disable the GPIO power-on default high-impedance mode // to activate previously configured port settings PM5CTL0 &= ~LOCKLPM5; }
谢谢!
此致、
普赫拉吉·辛格