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.

CC1312R: Power consumption regarding thread on CC1312

Part Number: CC1312R
Other Parts Discussed in Thread: SYSCONFIG,

Hi,

My module has temperature sensor.
I read temperature data every 5 second and send.

And I use Listen before talk mechanism.
I separate the RF TX function thread and reading temperature thread now. It works well.

My question is what is best solution between single thread or double thread for power consumption?
I cannot measure real power consumption right now for some reason.

If I have to use single thread, I will put reading temp function in mainthread while loop.

-----
When I call sleep function, system will go to power save mode during sleep time?
I read some document, TI driver will manage the power consumption inside the library.

I use TI-RTOS.

When I use multi thread, sleep function will call at all thread.

Please explain the best configuration which is focused on power consumption.
How about initialization for unused driver for example UART, I2C, .... 

I want to go deep sleep, wake-up, measure temperature and send data, and go to sleep.

Do I need extra H/W component to wakeup CC1312?

Let me know power mode set example for TI-RTOS.


BR
Paul

  • Hi Paul,

    I would recommend you to use TI RTOS. In this case, if all tasks are in sleep or pend, the device will go to standby aka sleep. When the time has passed the device will wake up and continue processing the tasks.

    If it's important for you that the sensor read happens exactly after 5 s, it might be a good idea to separate RF and sensor into two different tasks. If you give the sensor task the highest priority, it will be able to preempt the CPU and do the measurement at exactly the right time.

    If you're not worried about the exact timing, you might as well put the two operations in the same task. Unless the LBT + send takes longer than 5 s, it won't delay the sensor read.

    But either solution will work.

    When you call sleep() in both your tasks (or single task, depending on your implementation), the device will go to standby. 

    If you're using the newest SIMPLELINK-LOWPOWER-F2-SDK (v 7.10.01.24) you don't have to handle initialization of unused drivers.

    You don't need any extra HW to wake the device from standby aka sleep.

    I would recommend you use the GPIO standby example to measure your device/board power consumption:

    https://dev.ti.com/tirex/explore/node?node=A__AGRUxsFbd7AXMo9ptbtgoA__com.ti.SIMPLELINK_CC13XX_CC26XX_SDK__BSEc4rl__LATEST&placeholder=true

    Cheers,

    Marie H

  • HI, Marie,

    Thank you.
    According to SWRA486 document

    In standby mode, Current is about 1uA.
    But my module' avg. current is 400uA.
    I do initialize all peripheral which are used in my board.
    i put while (1) sleep (10); code at first line of the mainthread. No RF action.

    I almost remove the potential current consuming H/W components like pull-up resistor.

    But still 400uA.

    ---
    How can I figure out my simplelink SDK version?
    My CCS SDK directory is C:\ti\simplelink_cc13xx_cc26xx_sdk_7_10_01_24

  • Hi Paul,

    Then you are using the SimpleLink SDK v 7.10.01.24.

    Can you take the gpio standby example and follow the steps in this app note and measure your current consaumption? You can use either Energy Trace or a power analyzer.

    https://www.ti.com/lit/swra478

    Cheers,

    Marie H

  • Hi, Marie,

    OK, I will test gpio standby example .

    I want to make battery powered device.
    Can I do this?

    What point do I have to concern about battery device?
    Infact 1 uA current seems be high for battery operation I think.


    10min shutdown, and then reboot , measure temp, send date and then go shutdown again.
    This is my scenario.
    Do you recommend extra H/W component to generate periodic interrupt to CC1312?
    Reference schematic is good for me.

    BR
    Paul


  • Hi,

    I have tested gpiostandby example on DK board.
    Current consumption is little about 1~4uA.

    And then I put my custom application on DK board with modify mainthread while loop as


    while (1)
      {
      sleep (10);
      GPIO_write(CONFIG_GPIO_GLED, 1);
      sleep (10);
      GPIO_write(CONFIG_GPIO_GLED, 0);
      }

    At first measurement, standby current is measured about 40uA.
    I remove ADC from syscfg and my code.
    And measure again, 1~4uA at standby.....

    My question is how can I disable ADC functionality before call sleep and re-initailize ADC function.
    I will test removing other function step-by-step

    BR
    Pau;

  • Hi Paul,

    Good to hear!

    Per my understanding, you have to call ADC_init once when you initialize your device. You should then be able to:

    1. Wake up from sleep

    2. Call ADC_open

    3. Execute ADC operations

    4. Call ADC_close

    5. Go to sleep.

    Cheers,

    Marie

  • Hi,
    I create single thread, MainThread
    My code was disable to avoid compile error regarding ADC.
    My code regarding ADC is removed

    When I set just ADC function enabled in syscfg., current consumption is increased to 40uA.
    Just disable ADC in syscfg, current goes down to 1~4 uA.

    ----
    I made another question  on another reply to you regarding battery solution.
    please answer that also.

    BR
    Paul

  • Hi Paul,

    I would expect some current increase for the ADC operation.

    Can you check SysConfig -> TI DRIVERS -> ADC -> PinMux and check the configuration when pin not in use? I would recommend input, no pull.

    Cheers,

    Marie H

  • Hi,

    I have to disable ADC by my code, not sysconfig.
    I want to disable ADC just before going into standby.

    BR
    Paul

  • One more question.
    I am using sleep function to go into standby.
    Can I use Task_sleep instead of sleep for standby mode?
    BR
    Paul

  • Hi Paul,

    You can use the ADC_close API. The next time you want to use the ADC, you need to call ADC_open (no need to call ADC_init again).

    If you look at the definition of the sleep() API you will se that it's a wrapper for Task_sleep(). So yes you can just as well use Task_sleep() directly.

    Cheers,

    Marie H

  • Hi,

    I could not engage this project for a long time.
    But I restart this project.

    Let me summarize all.

    1. My board use ADC, so my code use ADC function.
    2. To measure current consumption, I remove ADC function all API calls from my code, but still 40uA consumed.
    3. Remove ADC from TI DRIVERS in syscfg on CCS, then 1~4uA consumed.

    My question is how can I do by code as like removing ADC from syscfg.?

    BR
    Paul

  • Hi Paul,

    It sounds like your configuration is affecting the power consumption even when the ADC is not in use?

    Can you check SysConfig -> TI DRIVERS -> ADC -> PinMux and check the configuration when pin not in use? I would recommend input, no pull.

    Cheers,

    Marie H

  • Hi,
    Yes right. configuration is affecting the power conmsumption.
    Follow image is ADC config. I set.

  • Hi Paul,

    How does the power consumption look after you set this config?

    Cheers,

    Marie H

  • Hi,

    I have test my current consumption with this config from beginning.

    I am on business trip. I will test again tomorrow.

    BR
    Paul

  • Hi,

    I did power consumption test by setting config. only.
    There is no ADC function on my code at all.

    I did test on the CC1312R DK board.

    Same result.
    After just adding ADC in sys config., current is about 70uA in standby state.
    After remove ADC function from config, current is about >1 uA.

    BR
    Paul

  • Hi Paul,

    The current consumption you are seeing is due to the ADC pin being left floating when not in use.

    In SysConfig, you can avoid that by pulling the pin up, or down when not in use:

    Regards,

    Arthur

  • Hi, Arthur,

    Thanks.
    After set ADC pin to pull down, current consumption goes down to expected value.

    BR
    Paul