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.

RTOS/LAUNCHXL-CC1352R1: Power consumption in different modes

Part Number: LAUNCHXL-CC1352R1
Other Parts Discussed in Thread: CC1352R

Tool/software: TI-RTOS

Hi, 

I am currently evaluating the power performances of the CC1352R on both the launchpad and my custom board.

To do this perf eval, I simply run an "Empty" project from examples and put the micro in different modes.

I get satisfying consumption in "Shutdown" and "Standby" mode compared to the datasheet on both designs, respectively 1µA and 2µA.

I am a bit disappointed by the idle and active modes as I get significantly higher consumption than announced on the datasheet.

With the same hardware, in "Idle" and "Active", I expected to get something around 580µA and 2.82mA respectively as seen in the datasheet SWRS196A but i get about 775µA and 3.96mA

Are the currents provided in this datasheet relevants ? What could cause such a difference ?

Thanks for your help,

Clement

  • Hello Clement Guillou,

    Things that might be affecting the power consumption could be the PIN configuration and/or Peripherals (pin, uart, timer,spi, rf core, etc...) that are still enabled when you go into IDLE mode.

    Can you give me more information on how you are testing the power?

    Regards,
    AB
  • Hello AB,

    As I said, I use the project called "Empty" from the examples in the SDK to get a base and form there, i put the device in different modes.

    I do not use any peripherals.

    Active : I simply do an infinite while loop in which I increment a value.
    Idle : I use Power_setConstraint(PowerCC26XX_SB_DISALLOW) then I call the sleep(x) function.
    Standby : I use the sleep(x) function.
    Shutdown : I call the Power_shutdown(0, 0).

    I can provide the code if needed

    To do the measure, i simply put an amp meter on the power supply.

    Is there a simple way to make sure every peripherals are off ?

    Thanks,

    Clement

  • Hello Clement,

    That is enough information.

    Go into to the LAUNCHXL.c file and look for the BoardGpioInitTable and replace the contents with this:

    IOID_20 | PIN_GPIO_OUTPUT_DIS | PIN_INPUT_DIS | PIN_GPIO_LOW | PIN_PUSHPULL |PIN_NOPULL | PIN_DRVSTR_MIN, /* 3V3 domain off initially */
    IOID_21 | PIN_GPIO_OUTPUT_DIS | PIN_INPUT_DIS | PIN_GPIO_LOW | PIN_PUSHPULL |PIN_NOPULL | PIN_DRVSTR_MIN, /* LED initially off */
    IOID_22 | PIN_GPIO_OUTPUT_DIS | PIN_INPUT_DIS | PIN_GPIO_LOW | PIN_PUSHPULL |PIN_NOPULL | PIN_DRVSTR_MIN, /* LED initially off */
    IOID_25 | PIN_GPIO_OUTPUT_DIS | PIN_INPUT_DIS | PIN_GPIO_LOW | PIN_PUSHPULL |PIN_NOPULL | PIN_DRVSTR_MIN, /* Button is active low */
    IOID_18 | PIN_GPIO_OUTPUT_DIS | PIN_INPUT_DIS | PIN_GPIO_LOW | PIN_PUSHPULL |PIN_NOPULL | PIN_DRVSTR_MIN, /* External flash chip select */
    IOID_26 | PIN_GPIO_OUTPUT_DIS | PIN_INPUT_DIS | PIN_GPIO_LOW | PIN_PUSHPULL |PIN_NOPULL | PIN_DRVSTR_MIN, /* UART RX via debugger back channel */
    IOID_19 | PIN_GPIO_OUTPUT_DIS | PIN_INPUT_DIS | PIN_GPIO_LOW | PIN_PUSHPULL |PIN_NOPULL | PIN_DRVSTR_MIN, /* UART TX via debugger back channel */
    IOID_27 | PIN_GPIO_OUTPUT_DIS | PIN_INPUT_DIS | PIN_GPIO_LOW | PIN_PUSHPULL |PIN_NOPULL | PIN_DRVSTR_MIN, /* SPI master out - slave in */

    IOID_1 | PIN_GPIO_OUTPUT_DIS | PIN_INPUT_DIS | PIN_GPIO_LOW | PIN_PUSHPULL |PIN_NOPULL| PIN_DRVSTR_MIN, /* SPI master in - slave out */

    IOID_2 | PIN_GPIO_OUTPUT_DIS | PIN_INPUT_DIS | PIN_GPIO_LOW | PIN_PUSHPULL |PIN_NOPULL| PIN_DRVSTR_MIN,
    IOID_3 | PIN_GPIO_OUTPUT_DIS | PIN_INPUT_DIS | PIN_GPIO_LOW | PIN_PUSHPULL |PIN_NOPULL| PIN_DRVSTR_MIN,

    IOID_28 | PIN_GPIO_OUTPUT_DIS | PIN_INPUT_DIS | PIN_GPIO_LOW | PIN_PUSHPULL |PIN_NOPULL| PIN_DRVSTR_MIN, /* SPI clock */
    IOID_29 | PIN_GPIO_OUTPUT_DIS | PIN_INPUT_DIS | PIN_GPIO_LOW | PIN_PUSHPULL |PIN_NOPULL| PIN_DRVSTR_MIN,

    IOID_14 | PIN_GPIO_OUTPUT_DIS | PIN_INPUT_DIS |PIN_IRQ_POSEDGE| PIN_HYSTERESIS|PIN_NOPULL,
    IOID_23 | PIN_GPIO_OUTPUT_DIS | PIN_INPUT_DIS |PIN_IRQ_POSEDGE| PIN_HYSTERESIS|PIN_NOPULL,
    IOID_30 | PIN_GPIO_OUTPUT_DIS | PIN_INPUT_DIS |PIN_IRQ_POSEDGE| PIN_HYSTERESIS|PIN_NOPULL,
    IOID_15 | PIN_GPIO_OUTPUT_DIS | PIN_INPUT_DIS |PIN_IRQ_POSEDGE| PIN_HYSTERESIS|PIN_NOPULL,
    IOID_24 | PIN_GPIO_OUTPUT_DIS | PIN_INPUT_DIS |PIN_IRQ_POSEDGE| PIN_HYSTERESIS|PIN_NOPULL,

    IOID_16 | PIN_GPIO_OUTPUT_DIS | PIN_INPUT_DIS | PIN_GPIO_LOW | PIN_PUSHPULL |PIN_NOPULL| PIN_DRVSTR_MIN,
    IOID_17 | PIN_GPIO_OUTPUT_DIS | PIN_INPUT_DIS | PIN_GPIO_LOW | PIN_PUSHPULL |PIN_NOPULL| PIN_DRVSTR_MIN,


    With this configuration you should see a decrease in IDLE mode current. Please test and let me know.

    Regards,
    AB
  • Hi AB,

    I tried this config and there is a slight improvement in Active mode (from 3.82 to 3.55 mA) but I get the same 3.55 mA in Idle, standby and shutdown.

    I tried it on two different Launchpads just to be sure it 's not a hardware issue.

    The thing is with the initial configuration, i get satisfying results in standby and shutdown, this makes me believe that there is no current leak in the GPIOs. The same thing happens on my custom board, with the config adapted to it.

    And by the way, what is the difference between the BoardGpioInitTable and the gpioPinConfigs ? Thet seem to have the same purpose...

    Best regards,
    Clement
  • Hello,

    Could you provide me any advice that could allow me to reach the performances of the datasheet ?
    Can you provide me with a soft that gets satisfying results ?

    Best regards,
    Clement
  • HEllo,

    The difference between the two tables is the drivers being used. One uses the PIN drivers and the other uses the GPIO drivers. They are similar but not the same.

    Can you check the default power policy defined in the launchxl.c and make sure it is set to standby?

    What SDK version are you using?

    Re gards,
    AB
  • Hi AB,

    I use the SDK 2.10.00.48.

    The thing is that with my pin configuration, on my custom board, I manage to reach satisfying power consumption results (4µA in shutdown, 5µA in standby). So I believe the configuration is ok

    But when I set the constraint PowerCC26XX_SB_DISALLOW to prevent the micro going into standby mode, and thus staying in idle, I get a significantly higher consumption than I could expect : I measure 788µA instead of the 580µA +/- 5µA of my board.

    And in active mode (when i run a simple loop that increments a variable), i get an even more concerning rise : I measure 3.8mA instead of 2.82mA as i can see on the datasheet.

    Do you have any information that could help me understand why I get these currents and if possible, a way to reduce them ?

    Best regards,

    Clement

  • Hello,

    We have newer SDKs available. We just released SDK 2.30 . We recommend you upgrade to latest and greatest, but for this problem you should have to worry about it for now.

    These symptoms you are describing sound like you may have some power domains powered ON. Try disabling all power domains before your main loop and see if this fixes your issue.

    Regards,
    AB