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.

Ultra low power design, OFF? Reset? or Shutdown?

Other Parts Discussed in Thread: CC2640, TPL5110, TPL5010

Dear TI folks and community,

We’re evaluating the CC2640 for an ultra low power design here and all we need to do is periodically (1 Hz) read three GPIOs and shut down.   99.9% of the time, that’s it.

What’s the lowest power way to do this?     

(1) OFF: Use an external timer like the TPL5110, and turn on/off the CC2640 with a FET.

(2) Reset: Keep the CC2640 powered, but use such an external timer to periodically release from reset.

(3) Shutdown: Keep the CC2640 powered, but trigger a wake-up on GPIO that changes value, or signal a WAKE from external timer like the TPL5010.

I guess the question comes down to this.  If the period is 1Hz, what’s the overhead of powering up from OFF to ON with an external FET compared to just waking up from Reset or Shutdown mode?    Or is it the same?

Thanks!

  • Hello,

    The best way will be for you to profile your application and take actual measurements. Refer to the Measuring Bluetooth Smart Power Consumption App Note on the TI BLE wiki: www.ti.com/ble-wiki

    Best wishes
  • Why don't you use power saving mode on CC2640 directly and register interrupt for GPI? In this way, CC2640 only wakes up when there is GPI interrupt and you don't even read GPI in 1 Hz.
  • The lowest power option if using the BLE stack would be to let the Cortex M3 stay in Standby and wake up the Sensor Controller up periodically at 1Hz to read in IO values, process data and wake up the M3 if needed. This will probably not add more than a few 100nA's or so to the 1uA standby current.

    Another option would be to power off the entire device between each cycle but as the initial power up time is quite long (due to Boot ROM code execution + RTOS and BLE stack initialization) this will probably be higher power.

    Regards,
    Svend

  • Hi YK,

    I have similar situation here. I use cc2640 board, is there any difference between shutdown and warmreset? I mean can I tell from MCU registers? I know almost all registers and RAM set to 0, but there are still some left.

    Regards, Young
  • What do you mean warmreset?
  • Hi YK,

    "warmreset" is defined in the datasheet, meaning reset caused by pin or software. My point is, when reset event occurs, almost all registers and RAM are set to 0, even though the power is still on.

    Regards, Young
  • Since there is a reset event, the register and RAM would be reset to default status. I see no problem on this.
  • My question was: is there any difference between shutdown and warmreset? I mean can I tell from MCU registers?
  • If you have a look at Pin Shutdown at , you can see it use the following red code to see which mode MCU starts from.

    int main(void)
    {
    /* Locals */
    Task_Params taskParams;
    Semaphore_Params semParams;

    /* Get the reason for reset */
    uint32_t rSrc = SysCtrlResetSourceGet();

    /* Do pin init before starting BIOS */
    /* If coming from shutdown, use special gpio table.*/
    if(rSrc == RSTSRC_WAKEUP_FROM_SHUTDOWN) {
    /* The shutdown table has LED1 on to ensure no glitch on the
    * output.
    */
    PIN_init(BoardGpioInitTable);
    isWakingFromShutdown = true;
    /* Open LED pins with shutdown table (LED1 on, LED0 off).
    * A separate PIN_config table is used to keep LED1 on.
    */
    hPins = PIN_open(&LedPinState, LedPinTableSd);
    } else {
    /* When not waking from shutdown, use default init table. */
    PIN_init(BoardGpioInitTable);
    isWakingFromShutdown = false;
    /* Open LED pins (LED1 off, LED0 on)*/
    hPins = PIN_open(&LedPinState, LedPinTable);
    }

    ....