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.

MSP430F6433 Power consumption > 32uA in LMP3 mode

Other Parts Discussed in Thread: MSP430F6433

I test MSP430F6433 the power consumption is big than 32uA with following configuration, this is much big than 2uA specified in datasheet.

MCU: MSP430F6433.

Hardware: Only 32.768KHz crystal and MCU remain on PCB.

Firmware as following:

int main(void)

{

  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT

  // Enable XT1

  UCSCTL6 &= ~(XT1OFF);                     // XT1 On

  UCSCTL6 |= XCAP_3;                        // Internal load cap

  while(BAKCTL & LOCKBAK)                    // Unlock XT1 pins for operation

     BAKCTL &= ~(LOCKBAK); 

  do

  {

    UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);

                                            // Clear XT2,XT1,DCO fault flags

    SFRIFG1 &= ~OFIFG;                      // Clear fault flags

  }while (SFRIFG1&OFIFG);                   // Test oscillator fault flag

 

  UCSCTL6 &= ~(XT1DRIVE_3);                 // Xtal is now stable, reduce drive

  UCSCTL4 &= ~(SELA0 + SELA1 + SELA2);      // Ensure XT1 is ACLK source

  // Port Configuration

  P1OUT = 0x00;P2OUT = 0x00;P3OUT = 0x00;P4OUT = 0x00;P5OUT = 0x00;P6OUT = 0x00;

  P7OUT = 0x00;P8OUT = 0x00;P9OUT = 0x00;PJOUT = 0x00;

  P1DIR = 0xFF;P2DIR = 0xFF;P3DIR = 0xFF;P4DIR = 0xFF;P5DIR = 0xFF;P6DIR = 0xFF;

  P7DIR = 0xFF;P8DIR = 0xFF;P9DIR = 0xFF;PJDIR = 0xFF;

 

    LCDBCTL0_bit.LCDON = 0;        //LCD module off

    //LDO_DISABLE;

    LDOKEYPID = LDOKEY;

    LDOPWRCTL_bit.LDOOEN = 0;

    ADC12CTL0 &= ~ADC12REFON;

    ADC12CTL0 &= ~ADC12ON;

    ADC12CTL2 |= ADC12TCOFF;    //temperature sensor off.

  PMMCTL0_H = PMMPW_H;                // PMM Password

  SVSMHCTL &= ~(SVMHE+SVSHE);         // Disable High side SVS

  SVSMLCTL &= ~(SVMLE+SVSLE);         // Disable Low side SVS

  __bis_SR_register(LPM3_bits);       // Enter LPM3

}

I refer to code example in CCS about LMP3. the power consumption is big than 80uA. I think one reason is that LDO and internal reference are not disabled.

Would you like help me pick out the bug in above code or post reference code that meets 2.2uA specified in datasheet.

Best Regards,

Zhiyu

  • How do you measure the current? 2µA should be the current into the VCC pin, but external circuitry may still cause some additional draw.
    Is the debugger connected? It will cause additional currents (but then, ti should be even much higher)
  • I remove all the unnecessary component except 32.768KHz crystal and MCU. Only 32.768KHz crystal and MCU remain on PCB. I repeat this test on 4 PCB, the result is the same. No debugger is connected. This issue trouble a few moth, thanks for you kindly support!

  • A possible explanation would be that the crystal i snot running. This will put MCLK in fallback mode, keeping the DCO online. In fact, you will never reach the point where you go into LPM3 as you'll stay in the oscillator fault loop. The CPU will keep running on 1MHz in active mode. Well, in this case I'd rather expect 320µA. But it may be that switching the driving strength back to 0 turns the crystal off. This might cause increased current as the oscillator constantly tries to restart the crystal.
  • Hi Gross,

    MCU works in LMP3 mode not oscillator fault mode, We can make sure through that the current is 32uA and ACLK output is 32K. Would you like give me a demo code that MCU work in LMP3 mode and the the current is about 2uA? Thanks for you kindly support!

    Best regards!

    Zhiyu

  • Sorry, In my own projects, I don't go for ultra-low power. And even if, my code belongs to my employer and I couldn't publish it anyway. (note that I'm not working for TI)
  • Zhiyu,

    Looking at your code, it is very similar tot he TI LPM3 example found in CCS TI Resource Explorer. You do take some additional steps to ensure ADC is off that is not entirely necessary for it is off by default after power-up. You also turn of the LDO properly by ensuring LDOEN == 0. My best guess here your increased power numbers are due to your GPIO configuration. In the TI examples we default the pin configuration to output low for we can guarantee on our target board that the pins have a "Open" connection on the headers. This would be the equivalent to cutting all unnecessary traces around the MSP430 on your board. You may have a point of contention on the board that can be causing the additional power usage. For example, if you have a trace on the board tied to VCC in some way (through another chip/resistors/caps or directly) and feed this to a GPIO, by forcing the pin on the chip side to output low, you effectively make a current sink that will consume more power. I would check your board and see if any of the GPIOs have a voltage when you go to LPM3.

    Also, please follow the recommendations of other pins within Table 1-3 Connection of Unused Pins in the Family User Guide. www.ti.com/lit/slau208

    Also please follow the ULP Advisor within CCS to help you lower your power numbers.

    Hope this helps!

    Regards,
    JH
  • Hi JH,

    I agree with you LMP3 will disable ADC, code to disable ADC is unnecessary. I refered the code in CCS and disable battery backup subsystem, code in CCS don`t disable battery backup subsystem. i double checked the trace around the MSP430, no unnecessary trace. In fact there are Only 32.768KHz crystal and MCU remain on PCB. I test 4 board with the same configuration and get the same result.
    Would you like test the feature on you board and then send me a copy of your test code?

    Best Regards,
    Zhiyu
  • Zhiyu,

    I updated the example code from CCS to what I included below. The current example code on CCS uses the USB monikers of the parent device and will need to be updated to what is below.  That being said, the code I tested below had 2uA max pull. When you are measuring your current, do you have the debugger connected?  If so, make sure to run the device in "Free Run" mode before taking measurements. Having the emulator active on the device will add significant current draw.

    #include <msp430.h>
    
    int main(void)
    {
      WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
      // Enable XT1
      UCSCTL6 &= ~(XT1OFF);                     // XT1 On
      UCSCTL6 |= XCAP_3;                        // Internal load cap
      while(BAKCTL & LOCKBAK)                    // Unlock XT1 pins for operation
         BAKCTL &= ~(LOCKBAK);  
      do
      {
        UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);
                                                // Clear XT2,XT1,DCO fault flags
        SFRIFG1 &= ~OFIFG;                      // Clear fault flags
      }while (SFRIFG1&OFIFG);                   // Test oscillator fault flag
    
      UCSCTL6 &= ~(XT1DRIVE_3);                 // Xtal is now stable, reduce drive
                                                // strength
      UCSCTL4 &= ~(SELA0 + SELA1 + SELA2);      // Ensure XT1 is ACLK source
      
      // Port Configuration
      P1OUT = 0x00;P2OUT = 0x00;P3OUT = 0x00;P4OUT = 0x00;P5OUT = 0x00;P6OUT = 0x00;
      P7OUT = 0x00;P8OUT = 0x00;P9OUT = 0x00;PJOUT = 0x00;
      P1DIR = 0xFF;P2DIR = 0xFF;P3DIR = 0xFF;P4DIR = 0xFF;P5DIR = 0xFF;P6DIR = 0xFF;
      P7DIR = 0xFF;P8DIR = 0xFF;P9DIR = 0xFF;PJDIR = 0xFF;
    
        // Disable VUSB LDO and SLDO
    
      LDOKEYID   =     LDOKEY;                 // set USB KEYandPID to 0x9628
                                                // enable access to USB config reg
      LDOPWRCTL &= ~(LDOEN);            // Disable the VUSB LDO and the SLDO
      LDOKEYID   =    0x9600;                  // disable access to USB config reg
    
      // Disable SVS
      PMMCTL0_H = PMMPW_H;                // PMM Password
      SVSMHCTL &= ~(SVMHE+SVSHE);         // Disable High side SVS 
      SVSMLCTL &= ~(SVMLE+SVSLE);         // Disable Low side SVS
    
      __bis_SR_register(LPM3_bits);       // Enter LPM3
      __no_operation();                         // For debugger
    }
    

  • Hi JH,

    thanks for you support. i resolved this issue now. i made a mistake by the connection of LDOI and VCC. I cut the connection of LDOI and VCC, now the current in LMP3 mode is about 2uA.

    Best Regards,

    Zhiyu

**Attention** This is a public forum