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.

Low Consumption for CC112xEM

Other Parts Discussed in Thread: CC1120, MSP430F5528

Hello everyone,

I am using CC112xEM, with cc1120. I need CC1120 on mode sleep, I have put on sleep but the consumption is 70uA for CC112xEM. I checked on datasheet for CC1120 that the consumption is 0.5uA on sleep. I don't know if this consumption is the same for the board cc112xEM or I am making a mistake.

I need to put another  cc1120 on eWORK but the consumption on eWORK is 22mA. Please I need to know if this values are normal or I am making a mistake.

Thanks very much by your help, Best Regards.

  • Hi,

    How did you measure the Sllep current? Can you describe it? You may post your code also.

    Thanks,
    PM
  • Hi PM, Thanks very much by your interest:

    I have two boards, every board have a msp430f5528 + connector for CC112xEM (I need one board on sleep for CC1120 and another board on eWORK for CC1120). Then I measure the consumption with a multimeter between the GND of the board and GND of the power supply.

    I did this measure with CC112xEM and without CC112xEM, the diference is 70uA for mode sleep.

    This is my code, but maybe not is succel for you, I cand give you more informations if you need. Thanks very much.

    Code for eWORK:

    int main( void )
    {
    // Stop watchdog timer to prevent time out reset

    WDTCTL = WDTPW + WDTHOLD;

    config_SPI_CC11xx();

    TI_CC_PowerupResetCCxxxx();

    __delay_cycles(90000);

    TI_CC_SPIWriteReg(ADD_CCxxx0_IOCFG3, VAL_CCxxx0_IOCFG3);
    TI_CC_SPIWriteReg(ADD_CCxxx0_IOCFG2 ,VAL_CCxxx0_IOCFG2 );
    TI_CC_SPIWriteReg(ADD_CCxxx0_IOCFG1 ,VAL_CCxxx0_IOCFG1 );
    TI_CC_SPIWriteReg(ADD_CCxxx0_IOCFG0 ,VAL_CCxxx0_IOCFG0 );
    TI_CC_SPIWriteReg(ADD_CCxxx0_SYNC3,VAL_CCxxx0_SYNC3);
    TI_CC_SPIWriteReg(ADD_CCxxx0_SYNC2,VAL_CCxxx0_SYNC2);
    TI_CC_SPIWriteReg(ADD_CCxxx0_SYNC1,VAL_CCxxx0_SYNC1);
    TI_CC_SPIWriteReg(ADD_CCxxx0_SYNC0,VAL_CCxxx0_SYNC0);
    TI_CC_SPIWriteReg(ADD_CCxxx0_SYNC_CFG1,VAL_CCxxx0_SYNC_CFG1);
    TI_CC_SPIWriteReg(ADD_CCxxx0_SYNC_CFG0,VAL_CCxxx0_SYNC_CFG0);
    TI_CC_SPIWriteReg(ADD_CCxxx0_DEVIATION_M,VAL_CCxxx0_DEVIATION_M);
    TI_CC_SPIWriteReg(ADD_CCxxx0_MODCFG_DEV_E,VAL_CCxxx0_MODCFG_DEV_E);
    TI_CC_SPIWriteReg(ADD_CCxxx0_DCFILT_CFG,VAL_CCxxx0_DCFILT_CFG);
    TI_CC_SPIWriteReg(ADD_CCxxx0_PREAMBLE_CFG1,VAL_CCxxx0_PREAMBLE_CFG1);
    TI_CC_SPIWriteReg(ADD_CCxxx0_PREAMBLE_CFG0, VAL_CCxxx0_PREAMBLE_CFG0);
    TI_CC_SPIWriteReg(ADD_CCxxx0_FREQ_IF_CFG,VAL_CCxxx0_FREQ_IF_CFG);
    TI_CC_SPIWriteReg(ADD_CCxxx0_IQIC,VAL_CCxxx0_IQIC);
    TI_CC_SPIWriteReg(ADD_CCxxx0_CHAN_BW,VAL_CCxxx0_CHAN_BW);
    TI_CC_SPIWriteReg(ADD_CCxxx0_MDMCFG1, VAL_CCxxx0_MDMCFG1);
    TI_CC_SPIWriteReg(ADD_CCxxx0_MDMCFG0,VAL_CCxxx0_MDMCFG0);
    TI_CC_SPIWriteReg(ADD_CCxxx0_SYMBOL_RATE2, VAL_CCxxx0_SYMBOL_RATE2);
    TI_CC_SPIWriteReg(ADD_CCxxx0_SYMBOL_RATE1, VAL_CCxxx0_SYMBOL_RATE1);
    TI_CC_SPIWriteReg(ADD_CCxxx0_SYMBOL_RATE0, VAL_CCxxx0_SYMBOL_RATE0);
    TI_CC_SPIWriteReg(ADD_CCxxx0_AGC_REF, VAL_CCxxx0_AGC_REF);
    // TI_CC_SPIWriteReg(ADD_CCxxx0_AGC_CS_THR,VAL_CCxxx0_AGC_CS_THR);
    TI_CC_SPIWriteReg(ADD_CCxxx0_AGC_GAIN_ADJUST,VAL_CCxxx0_AGC_GAIN_ADJUST);
    TI_CC_SPIWriteReg(ADD_CCxxx0_AGC_CFG3,VAL_CCxxx0_AGC_CFG3);
    TI_CC_SPIWriteReg(ADD_CCxxx0_AGC_CFG2,VAL_CCxxx0_AGC_CFG2);
    TI_CC_SPIWriteReg(ADD_CCxxx0_AGC_CFG1,VAL_CCxxx0_AGC_CFG1);
    TI_CC_SPIWriteReg(ADD_CCxxx0_AGC_CFG0,VAL_CCxxx0_AGC_CFG0);
    TI_CC_SPIWriteReg(ADD_CCxxx0_FIFO_CFG,VAL_CCxxx0_FIFO_CFG);
    TI_CC_SPIWriteReg(ADD_CCxxx0_DEV_ADDR,VAL_CCxxx0_DEV_ADDR);
    TI_CC_SPIWriteReg(ADD_CCxxx0_SETTLING_CFG,VAL_CCxxx0_SETTLING_CFG);
    TI_CC_SPIWriteReg(ADD_CCxxx0_FS_CFG,VAL_CCxxx0_FS_CFG);
    TI_CC_SPIWriteReg(ADD_CCxxx0_WOR_CFG1,VAL_CCxxx0_WOR_CFG1);
    TI_CC_SPIWriteReg(ADD_CCxxx0_WOR_CFG0,VAL_CCxxx0_WOR_CFG0);
    TI_CC_SPIWriteReg(ADD_CCxxx0_WOR_EVENT0_MSB,VAL_CCxxx0_WOR_EVENT0_MSB);
    TI_CC_SPIWriteReg(ADD_CCxxx0_WOR_EVENT0_LSB,VAL_CCxxx0_WOR_EVENT0_LSB);
    TI_CC_SPIWriteReg(ADD_CCxxx0_PKT_CFG2,VAL_CCxxx0_PKT_CFG2);
    TI_CC_SPIWriteReg(ADD_CCxxx0_PKT_CFG1,VAL_CCxxx0_PKT_CFG1);
    // TI_CC_SPIWriteReg(ADD_CCxxx0_PKT_CFG0,VAL_CCxxx0_PKT_CFG0);
    TI_CC_SPIWriteReg(ADD_CCxxx0_RFEND_CFG1,VAL_CCxxx0_RFEND_CFG1);
    TI_CC_SPIWriteReg(ADD_CCxxx0_RFEND_CFG0,VAL_CCxxx0_RFEND_CFG0);
    TI_CC_SPIWriteReg(ADD_CCxxx0_PA_CFG2,VAL_CCxxx0_PA_CFG2);
    TI_CC_SPIWriteReg(ADD_CCxxx0_PA_CFG1,VAL_CCxxx0_PA_CFG1);
    TI_CC_SPIWriteReg(ADD_CCxxx0_PA_CFG0,VAL_CCxxx0_PA_CFG0);
    TI_CC_SPIWriteReg(ADD_CCxxx0_PKT_LEN,VAL_CCxxx0_PKT_LEN);

    TI_CC_SPIWriteRegExtend();


    TI_CC_SPIStrobe(ADD_CCxxx0_SIDLE);

    TI_CC_SPIStrobe(ADD_CCxxx0_SWOR);

    while(1)
    {
    __bis_SR_register(LPM3_bits + GIE); // Enter LPM3, interrupts enabled

    }

    }

    Code for Sleep:

    int main( void )
    {
    // Stop watchdog timer to prevent time out reset

    WDTCTL = WDTPW + WDTHOLD;

    config_SPI_CC11xx();

    TI_CC_PowerupResetCCxxxx();

    __delay_cycles(90000);

    TI_CC_SPIWriteReg(ADD_CCxxx0_IOCFG3, VAL_CCxxx0_IOCFG3);
    TI_CC_SPIWriteReg(ADD_CCxxx0_IOCFG2 ,VAL_CCxxx0_IOCFG2 );
    TI_CC_SPIWriteReg(ADD_CCxxx0_IOCFG1 ,VAL_CCxxx0_IOCFG1 );
    TI_CC_SPIWriteReg(ADD_CCxxx0_IOCFG0 ,VAL_CCxxx0_IOCFG0 );
    TI_CC_SPIWriteReg(ADD_CCxxx0_SYNC3,VAL_CCxxx0_SYNC3);
    TI_CC_SPIWriteReg(ADD_CCxxx0_SYNC2,VAL_CCxxx0_SYNC2);
    TI_CC_SPIWriteReg(ADD_CCxxx0_SYNC1,VAL_CCxxx0_SYNC1);
    TI_CC_SPIWriteReg(ADD_CCxxx0_SYNC0,VAL_CCxxx0_SYNC0);
    TI_CC_SPIWriteReg(ADD_CCxxx0_SYNC_CFG1,VAL_CCxxx0_SYNC_CFG1);
    TI_CC_SPIWriteReg(ADD_CCxxx0_SYNC_CFG0,VAL_CCxxx0_SYNC_CFG0);
    TI_CC_SPIWriteReg(ADD_CCxxx0_DEVIATION_M,VAL_CCxxx0_DEVIATION_M);
    TI_CC_SPIWriteReg(ADD_CCxxx0_MODCFG_DEV_E,VAL_CCxxx0_MODCFG_DEV_E);
    TI_CC_SPIWriteReg(ADD_CCxxx0_DCFILT_CFG,VAL_CCxxx0_DCFILT_CFG);
    TI_CC_SPIWriteReg(ADD_CCxxx0_PREAMBLE_CFG1,VAL_CCxxx0_PREAMBLE_CFG1);
    TI_CC_SPIWriteReg(ADD_CCxxx0_PREAMBLE_CFG0, VAL_CCxxx0_PREAMBLE_CFG0);
    TI_CC_SPIWriteReg(ADD_CCxxx0_FREQ_IF_CFG,VAL_CCxxx0_FREQ_IF_CFG);
    TI_CC_SPIWriteReg(ADD_CCxxx0_IQIC,VAL_CCxxx0_IQIC);
    TI_CC_SPIWriteReg(ADD_CCxxx0_CHAN_BW,VAL_CCxxx0_CHAN_BW);
    TI_CC_SPIWriteReg(ADD_CCxxx0_MDMCFG1, VAL_CCxxx0_MDMCFG1);
    TI_CC_SPIWriteReg(ADD_CCxxx0_MDMCFG0,VAL_CCxxx0_MDMCFG0);
    TI_CC_SPIWriteReg(ADD_CCxxx0_SYMBOL_RATE2, VAL_CCxxx0_SYMBOL_RATE2);
    TI_CC_SPIWriteReg(ADD_CCxxx0_SYMBOL_RATE1, VAL_CCxxx0_SYMBOL_RATE1);
    TI_CC_SPIWriteReg(ADD_CCxxx0_SYMBOL_RATE0, VAL_CCxxx0_SYMBOL_RATE0);
    TI_CC_SPIWriteReg(ADD_CCxxx0_AGC_REF, VAL_CCxxx0_AGC_REF);
    // TI_CC_SPIWriteReg(ADD_CCxxx0_AGC_CS_THR,VAL_CCxxx0_AGC_CS_THR);
    TI_CC_SPIWriteReg(ADD_CCxxx0_AGC_GAIN_ADJUST,VAL_CCxxx0_AGC_GAIN_ADJUST);
    TI_CC_SPIWriteReg(ADD_CCxxx0_AGC_CFG3,VAL_CCxxx0_AGC_CFG3);
    TI_CC_SPIWriteReg(ADD_CCxxx0_AGC_CFG2,VAL_CCxxx0_AGC_CFG2);
    TI_CC_SPIWriteReg(ADD_CCxxx0_AGC_CFG1,VAL_CCxxx0_AGC_CFG1);
    TI_CC_SPIWriteReg(ADD_CCxxx0_AGC_CFG0,VAL_CCxxx0_AGC_CFG0);
    TI_CC_SPIWriteReg(ADD_CCxxx0_FIFO_CFG,VAL_CCxxx0_FIFO_CFG);
    TI_CC_SPIWriteReg(ADD_CCxxx0_DEV_ADDR,VAL_CCxxx0_DEV_ADDR);
    TI_CC_SPIWriteReg(ADD_CCxxx0_SETTLING_CFG,VAL_CCxxx0_SETTLING_CFG);
    TI_CC_SPIWriteReg(ADD_CCxxx0_FS_CFG,VAL_CCxxx0_FS_CFG);
    TI_CC_SPIWriteReg(ADD_CCxxx0_WOR_CFG1,VAL_CCxxx0_WOR_CFG1);
    TI_CC_SPIWriteReg(ADD_CCxxx0_WOR_CFG0,VAL_CCxxx0_WOR_CFG0);
    TI_CC_SPIWriteReg(ADD_CCxxx0_WOR_EVENT0_MSB,VAL_CCxxx0_WOR_EVENT0_MSB);
    TI_CC_SPIWriteReg(ADD_CCxxx0_WOR_EVENT0_LSB,VAL_CCxxx0_WOR_EVENT0_LSB);
    TI_CC_SPIWriteReg(ADD_CCxxx0_PKT_CFG2,VAL_CCxxx0_PKT_CFG2);
    TI_CC_SPIWriteReg(ADD_CCxxx0_PKT_CFG1,VAL_CCxxx0_PKT_CFG1);
    // TI_CC_SPIWriteReg(ADD_CCxxx0_PKT_CFG0,VAL_CCxxx0_PKT_CFG0);
    TI_CC_SPIWriteReg(ADD_CCxxx0_RFEND_CFG1,VAL_CCxxx0_RFEND_CFG1);
    TI_CC_SPIWriteReg(ADD_CCxxx0_RFEND_CFG0,VAL_CCxxx0_RFEND_CFG0);
    TI_CC_SPIWriteReg(ADD_CCxxx0_PA_CFG2,VAL_CCxxx0_PA_CFG2);
    TI_CC_SPIWriteReg(ADD_CCxxx0_PA_CFG1,VAL_CCxxx0_PA_CFG1);
    TI_CC_SPIWriteReg(ADD_CCxxx0_PA_CFG0,VAL_CCxxx0_PA_CFG0);
    TI_CC_SPIWriteReg(ADD_CCxxx0_PKT_LEN,VAL_CCxxx0_PKT_LEN);

    TI_CC_SPIWriteRegExtend();


    TI_CC_SPIStrobe(ADD_CCxxx0_SIDLE);

    TI_CC_SPIStrobe( ADD_CCxxx0_SPWD);

    while(1)
    {
    __bis_SR_register(LPM3_bits + GIE); // Enter LPM3, interrupts enabled

    }

    }

    Thanks very much. Best Regards
  • Your results does not seem normal.

    Note that when you measure SLEEP current you have to ensure that you either only measure for the CC1120 (one measure the current that goes to the CC1120) or you have to ensure that all inputs on the MCU are defined (logic '1' or '0', not floating).

    When you are in the sleeping part of eWOR the current should be 1 uA, 22 mA sounds like Rx. Check the SPI interface that you are not pulling the lines after issuing eWOR. The sniffmode example in www.ti.com/.../swrc253 uses WOR, please take look for reference.
  • Thanks very much for your help.

    The problem with eWork is the PCB, Right now I have a consumption of 70uA for CC112xEM for sleep and eWork. The comunications is perfect between both CC112xEM but the consumption is 70 uA. I think That I have a problem with some register.

    There are my setting of register:

    char VAL_CCxxx0_IOCFG3       = 0x06;        // GDO3 output pin configuration
    char VAL_CCxxx0_IOCFG2       = 0x06;       // GDO2 output pin configuration
    char VAL_CCxxx0_IOCFG1       = 0xB0;        // GDO1 output pin configuration
    char VAL_CCxxx0_IOCFG0       = 0x07;       // GDO0 output pin configuration
    char VAL_CCxxx0_SYNC3        = 0x55;
    char VAL_CCxxx0_SYNC2        = 0x55;
    char VAL_CCxxx0_SYNC1        = 0x7A;
    char VAL_CCxxx0_SYNC0        = 0x0E;
    char VAL_CCxxx0_SYNC_CFG1    = 0x08;
    char VAL_CCxxx0_SYNC_CFG0    = 0x0B;
    char VAL_CCxxx0_DEVIATION_M  = 0x1F;
    char VAL_CCxxx0_MODCFG_DEV_E = 0x2E;
    char VAL_CCxxx0_DCFILT_CFG   = 0x15;
    char VAL_CCxxx0_PREAMBLE_CFG1 = 0x18;
    char VAL_CCxxx0_PREAMBLE_CFG0 = 0x2A;
    char VAL_CCxxx0_FREQ_IF_CFG = 0x3A;
    char VAL_CCxxx0_IQIC = 0x44;
    char VAL_CCxxx0_CHAN_BW = 0x01;
    char VAL_CCxxx0_MDMCFG1 = 0x46;
    char VAL_CCxxx0_MDMCFG0 = 0x05;
    char VAL_CCxxx0_SYMBOL_RATE2 = 0xA4;
    char VAL_CCxxx0_SYMBOL_RATE1 = 0x7A;
    char VAL_CCxxx0_SYMBOL_RATE0 = 0xE1;
    char VAL_CCxxx0_AGC_REF = 0x3C;
    char VAL_CCxxx0_AGC_CS_THR = 0xEF;
    char VAL_CCxxx0_AGC_GAIN_ADJUST = 0x00;
    char VAL_CCxxx0_AGC_CFG3 = 0x91;
    char VAL_CCxxx0_AGC_CFG2 = 0x20;
    char VAL_CCxxx0_AGC_CFG1 = 0xA9;
    char VAL_CCxxx0_AGC_CFG0 = 0xC0;
    char VAL_CCxxx0_FIFO_CFG = 0x00;
    char VAL_CCxxx0_DEV_ADDR = 0x00;
    char VAL_CCxxx0_SETTLING_CFG = 0x0B;
    char VAL_CCxxx0_FS_CFG = 0x12;
    char VAL_CCxxx0_WOR_CFG1 = 0x08;
    char VAL_CCxxx0_WOR_CFG0 = 0x20;
    char VAL_CCxxx0_WOR_EVENT0_MSB  = 0x00;
    char VAL_CCxxx0_WOR_EVENT0_LSB = 0x00;
    char VAL_CCxxx0_PKT_CFG2 = 0x04;
    char VAL_CCxxx0_PKT_CFG1 = 0x05;
    char VAL_CCxxx0_PKT_CFG0 = 0x00;
    char VAL_CCxxx0_RFEND_CFG1 = 0x0F;
    char VAL_CCxxx0_RFEND_CFG0 = 0x00;
    char VAL_CCxxx0_PA_CFG2 = 0x7F;
    char VAL_CCxxx0_PA_CFG1 = 0x56;
    char VAL_CCxxx0_PA_CFG0 = 0x79;
    char VAL_CCxxx0_PKT_LEN = 0x7C;

    this array is for register of extend addres:

    char VAL_EXTEN_REG[218] = {0x00,0x20,0x0A,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x6C,0x80,0x00,0x02,0xA6,0x04,0x00,0x5F,0x00,0x20,0x40,0x0E,0x28,0x03,0x00,0x33,0xFF,0x17,0x00,0x50,0x6E,0x14,0xAC,0x14,0x00,0x00,0x00,0xB4,0x00,0x02,0x00,0x00,0x10,0x00,0x00,0x01,0x01,0x01,0x0E,0xA0,0x03,0x04,0x03,0x00,0x00,0x00,   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x41,0x00,0xFF,0x00,0x00,0x00,0x00,0xD1,0x00,0x3F,0x00,0x00,0x30,0x7F,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0B,0x40,0x00,0x00,0x3C,0x00     ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,       0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00};

     

    Thanks Very much

     

  • As I commented in my previous post: Do you know if it's the CC1120 that draws 70 uA? The SLEEP current is not dependent on register settings.