我的板子的静态电流很大在LPM3模式下有120UA左右,我现在把板子上所有的外围器件都卸掉了,就剩下单片机(MSP430F5438),
程序是:所有IO配置成输出拉低,我想应该没问题,电流120UA左右,囧。。。是不是还有什么东西会影响电流。。
void main(void){
WDTCTL = WDTPW + WDTHOLD;
{P1DIR &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P1SEL &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P1OUT =0x00;
P2DIR &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P2SEL &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P2OUT =0x00;
P3DIR &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P3SEL &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P3OUT =0x00;
P4DIR &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P4SEL &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P4OUT =0x00;
P5DIR &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P5SEL &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P5OUT =0x00;
P6DIR &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P6SEL &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P6OUT =0x00;
P7DIR &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P7SEL &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P7OUT =0x00;
P8DIR &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P8SEL &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P8OUT =0x00;
P9DIR &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P9SEL &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P9OUT =0x00;
P10DIR &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P10SEL &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P10OUT =0x00;
P11DIR &=~(BIT0+BIT1+BIT2+BIT3);
P11SEL &=~(BIT0+BIT1+BIT2+BIT3);
P11OUT =0x00;
PJOUT=0x00;
_BIS_SR(LPM4_bits);
}
然后我又试了下全速跑的板子,修改如下:现在的功耗是470uA左右,在手册上看AM模式最大300UA,囧。。。
void main(void){
WDTCTL = WDTPW + WDTHOLD;
{P1DIR &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P1SEL &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P1OUT =0x00;
P2DIR &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P2SEL &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P2OUT =0x00;
P3DIR &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P3SEL &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P3OUT =0x00;
P4DIR &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P4SEL &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P4OUT =0x00;
P5DIR &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P5SEL &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P5OUT =0x00;
P6DIR &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P6SEL &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P6OUT =0x00;
P7DIR &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P7SEL &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P7OUT =0x00;
P8DIR &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P8SEL &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P8OUT =0x00;
P9DIR &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P9SEL &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P9OUT =0x00;
P10DIR &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P10SEL &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P10OUT =0x00;
P11DIR &=~(BIT0+BIT1+BIT2+BIT3);
P11SEL &=~(BIT0+BIT1+BIT2+BIT3);
P11OUT =0x00;
PJOUT=0x00;
while(1);//改了这
}
又怀疑是旁路电容的漏电我把旁路电容都拆掉了,VCORE上的0.47uf的电容也卸了,还是这样休眠时的功耗太大,我用的2mm厚的pcb板
但是板子的漏电有这么厉害吗,疑问中,用的是VC9808+的万用表,虽然精度低了点也不会差这么多,有高手遇到过这种问题了没,再
补充一下我用LPM0,LPM1,LPM2都测试过电流是越来越小,证明芯片应该是睡了。。。期待解答。
定时器及外围模块开了吗?
把MCLK输出量一下看是多少?
我把P11口配置成输出,发现ACLK有32K的信号出来,mclk的没有信号,我把32768的晶振去掉了,还有32K的信号输出,外设我不知道那个没关,按道理初始化铵我这个配置掉电,应该没问题,难道其他定时器外设我没去配置过他,也会自己振荡起来工作,等待大侠解答。。。 有好的低功耗配置源码吗,感觉教程上给的配置不够好。。。
IO口配置错了 不用的IO口要设置成输出0
/******************************************************************************
** 函数(模块)名称: unUsedPinsInit
** 功能: 未使用的端口初始化
** 输入参数: void
** 输出参数: void
** 函数返回值说明: void
*******************************************************************************/
void unUsedPinsInit(void)
{
PADIR = 0xFFFF; //P1,P2设置成输出
PAOUT = 0; //输出为0
PASEL = 0; //管脚功能配置成普通 I/O 口
PBDIR = 0xFFFF; //P3,P4
PBOUT = 0;
PBSEL = 0;
PCDIR = 0xFFFF; //P5,P6
PCOUT = 0;
PCSEL = 0;
PDDIR = 0xFFFF; //P7,P8
PDOUT = 0;
PDSEL = 0;
PEDIR = 0xFFFF; //P9,P10
PEOUT = 0;
PESEL = 0;
P11DIR = 0xFF; //P11.0 <-->P11.3 ACLK,MCLK,SMCLK
P11OUT = 0;
P11SEL = 0;
PJDIR = 0xFF; //PJ.0 <-->PJ.3
PJOUT = 0;
}
哦 谢谢zhxj 没有注意到这个问题 照理配置成输入每个IO 50个NA也没有那么大的电流,就100个IO的话也没有这么大的电流