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.

MSP430F5310 LPM3 模式下的功耗测试结果与手册差别比较大

Other Parts Discussed in Thread: MSP430F5310

搜索了一下论坛,貌似用 MSP430F5310 的比较少。

我们采用自开发的使用 MSP430F5310 板子,使用的测试代码为 F5310 自带的代码例子 MSP430F530x_LPM3_01.c

实际得到的结果约为 4uA, 约手册上的2uA 左右的两倍,误差比较大。

测试方法为使用万用表 200uA 档串入电池进行测试,电池供电电压为 3.6V

板子上的所有外设已经去掉,只保留电源模块。电源模块原理图如下:

测试代码:

//******************************************************************************
// MSP430x530x Demo - Enters LPM3 with ACLK = LFXT1, REF0 disabled,
// VUSB LDO and SLDO disabled, SVS disabled
//
// Description: Configure ACLK = LFXT1 and enters LPM3. Measure current.
// ACLK = LFXT1 = 32kHz, MCLK = SMCLK = default DCO
//
// MSP430F530x
// -----------------
// /|\ | XIN|-
// | | | 32kHz
// ---|RST XOUT|-
// | |
//
// K. Chen
// Texas Instruments Inc.
// Ver 2.00 - May 2012
// Built with CCS Version: 5.2 and IAR Embedded Workbench Version: 5.40.3
//******************************************************************************
#include <msp430.h>

#define SYS14_WORKAROUND // Comment this line if silicon revision has SYS14 bug fixed

#ifdef SYS14_WORKAROUND
#define INIT_MEMORY_ADDR 0x0900
unsigned int *Address = ((unsigned int*)INIT_MEMORY_ADDR);
#endif

int main(void)
{
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer

#ifdef SYS14_WORKAROUND
*Address = 0x9628;
*(Address+4) = 0x0800;
*Address = 0x9600;
#endif

// Enable XT1
P5SEL |= BIT4|BIT5; // Port select XT1
UCSCTL6 &= ~(XT1OFF); // XT1 On
UCSCTL6 |= XCAP_3; // Internal load cap

// Loop until XT1 & DCO stabilizes
do
{
UCSCTL7 &= ~(XT2OFFG | XT1LFOFFG | 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
// Port Configuration
P1OUT = 0x00;P2OUT = 0x00;P3OUT = 0x00;P4OUT = 0x00;P5OUT = 0x00;P6OUT = 0x00;
PJOUT = 0x00;
P1DIR = 0xFF;P2DIR = 0xFF;P3DIR = 0xFF;P4DIR = 0xFF;P5DIR = 0xFF;P6DIR = 0xFF;
PJDIR = 0xFF;

// 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
}

 

请问一下,造成功耗误差这么大的原因是什么?电源设计部分硬件是否有问题呢?谢谢!