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.

CC1101 to sleep mode?

Other Parts Discussed in Thread: CC1101, CC110L

I tried to put RF module CC1101 to sleep mode (current 200nA) with command down under (I use TI simplicity code), but current consumption still stay on 1.8mA, like in normal (IDLE) state.

TI_CC_SPIStrobe(TI_CCxxx0_SIDLE); // set IDLE
TI_CC_SPIStrobe(TI_CCxxx0_SPWD); // set OFF

Has anybody have any idea how to put CC110l module to sleep mode, or what I'm doing wrong?

Thanks for hint!

  • After detail reading data sheet of CC1101, I found some interesting connections about "SLEEP mode". 

    To put CC1101 into sleep mode (~200nA current consumption), you need to configure first bit in "TI_CCxxx0_MCSM0" register to "1". That bit disable XOSC to stay on in SLEEP state.

     After that, use strobe command to put CC1101 to SLEEP mode:

    TI_CC_SPIStrobe(TI_CCxxx0_SIDLE); // IDLE
    TI_CC_SPIStrobe(TI_CCxxx0_SFRX); // Flush RX buffer
    TI_CC_SPIStrobe(TI_CCxxx0_SPWD); // Standby 

     

  • Okay, here is another update and errata about last answer. 

    First bit in "TI_CCxxx0_MCSM0" register need to be configured to "0", if you want possibility to turning On/Off internal oscillator.

    And also after putting CC1101 module to sleep,  if you want to send/ receive data, you need to wake up  module from "Sleep" state.

    Code should look like that: 

    TI_CC_CSn_PxOUT &= ~TI_CC_CSn_PIN;      // /CS low
     while (TI_CC_SPI_USCIA0_PxIN & TI_CC_SPI_USCIA0_SOMI);      // Wait till SOMI go to "0"
     TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;        // /CS high

     TI_CC_SPIStrobe(TI_CCxxx0_SFRX);                // Flush RX buffer
     TI_CC_SPIStrobe(TI_CCxxx0_SIDLE);               // IDLE