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.

Changing power modes (CC2640)

Other Parts Discussed in Thread: CC2640, BLE-STACK

I'm completely new to BLE, and trying to write an application for the CC2640. I'd like the chip to go from active to standby mode after a period of inactivity, and then eventually to shutdown mode. What would be the best way to do this--is there a simple programmatic way to change power modes?

  • You can use API Power_sleep to change power mode in BLE-Stack for CC26xx.
  • Hi Michael,

    Power_sleep as Yikai mentions is called by the TI RTOS kernel and should not be called by the application itself.

    When all tasks are blocked / not running the device will automatically enter the lowest power mode available (depending on driver activity etc) (stopping CPU, Idle, Standby) so power savings are optimized. This is done by the Power policy manager (Power_standbyPolicy in TIRTOS) which is called from the OS Idle thread.

    When you decide you want to enter Shutdown mode you can call Power_shutdown(NULL). Note that only a pin interrupt or JTAG can wake up the device again from Shutdown. Since time to active is fairly large in shutdown (due to 15ms re-initialization of the BLE stack) it is not always worth using shutdown mode.

    Regards,
    Svend
  • Thanks Svend to clarify this.
  • Hi Svend and Yikai,

    Thanks for the advice; I found the CC26xx power management guide and it looks really helpful. I think I want to use RTC events to wake up from standby mode--are there any good resources on that?

    -Michael

  • If you use BLE stack V2.1, you can refer to implementation of SBP_PERIODIC_EVT in SimpleBLEPeripheral example. You can search keyword "periodicClock", "SBP_PERIODIC_EVT", and "SBP_PERIODIC_EVT_PERIOD" to cover it.
  • The RTC is used by the timing subsystem in TI RTOS so you cannot use it directly. You can wake up with a periodic clock event as Yikay mentions or by calling blocking API's such as Task_sleep, Semaphore_pend etc if you have your own task running on the CC2640.