您好!
我的产品使用 CC430F5137、我们遇到了 LPM3模式期间有时发生的高电流消耗问题。 电流不会 回到 uA、而是在睡眠期间(LPM3)保持在1mA。
根据 TI 发布的"SLAZ094X-2012年10月- 2018年5月修订版"中的 PMM11权变措施、我尝试设置"MCLK 在进入 LPM3之前被2分频"、但发现电流甚至更高。
下面是我的代码和产品的测量电流的一部分。
//make VLO (10kHz)作为 ACLK 的时钟源
UCSCTL4 = SELA_VLOCLK + SELESS__DCOCLKDIV + SELM_DCOCLKDIV;
LED_OFF
if (state!= State_RX_WOR)
{
STROBE (RF_Sidle);
选通(RF_SFRX);
选通(RF_SFTX);
选通(RF_SCAL);
while ((Strobe (RF_SNOP)& 0xF0)!= 0x00);
STATE = State_RX_WOR;
//设置2个前导码字节
WriteSingleReg (MDMCFG1、(rfSettings.mdmcfg1 & 0x8F));
//设置16位同步字(16/16)
WriteSingleReg (MDMCFG2、(rfSettings.mdmcfg2 & 0xf4)| 0x02);
//接收到数据包时应发生什么情况:
///RXOFF_MODE 和 TXOFF_MODE 处于空闲状态
WriteSingleReg (MCSM1、0x30);
//在数据包末尾禁用 CRC
WriteSingleReg (PKTCTRL0、(rfSettings.pktctrl0 &~0x04);
//禁用在有效载荷上附加 RSSI 和 LQI 信息
WriteSingleReg (PKTCTRL1、(rfSettings.pktctrl1 & 0xFB);
WriteSingleReg (PKTLEN、2);//设置数据包长度
}
T_WOR_1s = 72;//4sec
STROBE (RF_Sidle);
STROBE (RF_SPWD);//关闭射频
WDTCTL =WDTPW+WDTTMSEL+WDTCNTCL+WDTIS2+WDTSSEL_2+WDTIS1;//1/16s
SFRIE1 |= WDTIE;//启用 WDT 中断
//设置 MCLK 除以2
// UCSCTL5 =(UCSCTL5 & 0xFFF0)| DIVM__2;
_bis_SR_register (LPM3_bits + GIE);//输入 LPM3并重新启用中断
// CPU 在这里休眠!
//设置 MCLK 除以32
// UCSCTL5 =(UCSCTL5 & 0xFFF0)| DIVM__32;
__delay_cycles (800ul);//等待
SFRIE1 ~WDTIE;//禁用 WDT 中断
//ACLK = XT1 (默认值)、SMCLK = DCOCLKDIV (默认值)、MCLK = DCOCLKDIV (默认值)
UCSCTL4 = SELA_XT1CLK + SELESS__DCOCLKDIV + SELM_DCOCLKDIV;
//delay_cycles (x)在代码中停止并等待 x 个 MCLK 周期
//========================================================================
//处理挂起的唤醒标志
//========================================================================
将 MCLK 除以2之前测量的电流
将 MCLK 除以2后测得的电流