Hi,
My product uses the CC430F5137 and we have a problem with the high current consumption occurred sometimes during the LPM3 mode. The current won't not back to uA but stay in 1mA during the sleep period (LPM3).
According to the PMM11 workaround in "SLAZ094X-October 2012-Revised May 2018" issued by TI I tried to set the "MCLK divide by two prior to entering LPM3" but found the current is even much higher.
Below is part of my code and the measured current of the product.
//make VLO (10khz) as ACLK's clock source
UCSCTL4 = SELA__VLOCLK + SELS__DCOCLKDIV + SELM__DCOCLKDIV;
LED_OFF
if (state != STATE_RX_WOR)
{
Strobe(RF_SIDLE);
Strobe(RF_SFRX);
Strobe(RF_SFTX);
Strobe(RF_SCAL);
while ((Strobe(RF_SNOP) & 0xF0) != 0x00 );
state = STATE_RX_WOR;
// Set up 2 preamble bytes
WriteSingleReg(MDMCFG1, (rfSettings.mdmcfg1 & 0x8f));
// Set up 16 bit sync word (16/16)
WriteSingleReg(MDMCFG2, (rfSettings.mdmcfg2 & 0xf4) | 0x02);
//what should happen when a packet has been received:
//RXOFF_mode and TXOFF_mode in IDLE
WriteSingleReg(MCSM1, 0x30);
// Disable CRC at end of packet
WriteSingleReg(PKTCTRL0, (rfSettings.pktctrl0 & ~0x04));
//disable appending RSSI and LQI info at the payload
WriteSingleReg(PKTCTRL1, (rfSettings.pktctrl1 & 0xFB));
WriteSingleReg(PKTLEN, 2); // Set up packet length
}
T_WOR_1s =72; //4sec
Strobe(RF_SIDLE);
Strobe(RF_SPWD); //turn off RF
WDTCTL =WDTPW+WDTTMSEL+WDTCNTCL+WDTIS2+WDTSSEL_2+WDTIS1; //1/16s
SFRIE1 |= WDTIE; // Enable WDT interrupt
//set MCLK divide by 2
// UCSCTL5 = (UCSCTL5 & 0xFFF0) | DIVM__2;
__bis_SR_register(LPM3_bits + GIE); //enter LPM3 and re-enable interrupts
// CPU SLEEPS HERE!
//set MCLK divide by 32
// UCSCTL5 = (UCSCTL5 & 0xFFF0) | DIVM__32;
__delay_cycles (800ul); //waiting
SFRIE1 &= ~WDTIE; // disable WDT interrupt
//ACLK = XT1 (default), SMCLK = DCOCLKDIV (default), MCLK = DCOCLKDIV (default)
UCSCTL4 = SELA__XT1CLK + SELS__DCOCLKDIV + SELM__DCOCLKDIV;
//delay_cycles(x) is stopping in the code and waiting for x MCLK cycles
//==========================================
// Handle pending wake-up flags
//==========================================
the measured current before adding divide MCLK by two
the measured current after adding divide MCLK by two
here is the recorded current: the current did not back to uA during LPM3 sleep period. The wakeup time is 2us.