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.

Power Management Implementation for TIMAC

Other Parts Discussed in Thread: TIMAC, CC2650

Currently working on TIMAC Power management module. 

I have gone through the example programs of Power management module provided in TIRTOS 2.16 verison. I had a look in to power management manual(which comes as part of the TIRTOS installation).

My understanding: In TIMAC application example program which was provided by TI as -

By default the configurations of power management policy is set to Stand-by mode but also the RF module is continuously enabled.  

I hope this is due to 

Power_setDependency(PERIPH_RFCORE);
Power_setDependency(XOSC_HF);
Power_setConstraint(Power_NEED_FLASH_IN_IDLE);

So, I request someone to guide me like how to implement the power management module in TIMAC which uses TIRTOS 2.11 verision.

I request someone to have look at the example project of TIMAC(application image and STACK image).  And guide me the procedure for switching of the RF(HF - 24Mhz clock) through standby mode. 

  • Hi Santosh,

    The documentation in Power_Management.pdf in <your TI-RTOS installation directory>\docs folder should cover how to use the Power module. Not sure if that is what you referred to as "power management manual".

    Could you clarify whether you got this to work using TI-RTOS 2.11, and just want to upgrade to TI-RTOS 2.16? Or did it not work in either case? I see that the code in the Power module changed significantly between the two versions.

    Best regards,
    Vincent
  • Hi Vincent,
    Yes i have refereed Power_Management.pdf in <your TI-RTOS installation directory>\docs and i understood how the power management module works.
    My question is how to implement the power management module in TIMAC COTS software. In TIMAC software i am expecting to Switch OFF the RF core, when it is not in USE.
    Details of the Software I use:
    TIMAC : 1.5.2 Version.
    TIRTOS : TIMAC used 2.11 TIRTOS.

    As my device is battery operated, I am planning to switch off my RF core through Power management module(Stand by mode) when the RF is not in use.

    So, I request please have a look on the example/sample software provided by TI for TIMAC and help me out how to use power management module in TIMAC (So, that i can switch off the RF core when it not in use)
  • Hi Santosh,

    If you are using the standby policy (ie. Power.policyFunc = Power.standbyPolicy) in your .cfg file as in the TIMAC RTOS examples, the RF core power domain is automatically switched off for you whenever the device goes into standby (e.g. when the Idle loop runs when 'Power.idle' is set to true), and turned back on whenever it comes out of standby. You do not need to implement anything other than setting the standby policy.

    Best regards,

    Vincent

  • Hi Vincent,

    As default in the TIMAC example program the power policy is standbyPolicy, for you reference

    /* Idle CPU when threads blocked waiting for an interrupt */

    Power.idle = true;

    Power.policyFunc = Power.standbyPolicy;

    How I concluded that cc2650(TIMAC Software) is not going to standby mode in idle state ?

    3 Reasons:

    The TIMAC software can be configured as

    One as co-ordinator

    And, one as End-device.

    1st Reason:

    In the End-device, I have configured only one periodic task which runs for 5sec.

    Function of the Periodic task – It wakes for every 5sec,  transmits the data and goes to idle mode.

    As per the configuration file, in the idle mode the CPU should go to Standby mode.

    The current consumption of the End-device is always 12mA it’s not varying. The transmission time may be hardly 100ms.

    So, if the CPU is going to Standby state means, the current should be more at 100ms and it should reduce in rest of the time. But, the current consumption is not varying it means RF is not switching OFF (HF freq. is not switched off) it concludes the CPU is not going to Standby mode in idle state.

    2nd Reason:

    In the Co-ordinator, I have not configured any periodic task. It has only one switch interrupt, which makes the CPU to wake up from standby mode.  

    So, here also all the time the CPU should be in sleep state (idle state) so the current consumption should be less around 4uA(according to spec), but it is always consumption is 12mA.(both in idle state and running state) it means RF is not switched OFF in idle state. So, it is not going to Stand by mode.

    3rd reason:

    End-Device gets the Ack. From the Co-ordinator whenever it transmits the data.  It means the coordinator RF core is switched ON all the time.

    But as per the scenario, the coordinator RF core should get switched ON only on the KEY Press but I am able to see the coordinator RF is switched ON in the idle mode, also that’s why its able to acknowledge to End device.

    So, this proves that Coordinator RF core is not switched off, HF is not switched OFF  and its not going to standby mode.

    So, please review these scenarios and help me to configure TIMAC RF core to get switched OFF in idle mode through stand by policy.

  • Could anyone please provide the solution for the above topic. 

    Thanks in advance.

  • Hi Santosh,

    Sorry for the delayed response while I was out of the office.

    Given you have setup Power.standbyPolicy and Power.idle in your BIOS configuration, the function 'Power_standbyPolicy' should be called in the BIOS idle loop. As far as BIOS is concerned, this is all you need to do.

    The Power_standbyPolicy() function calls Power_sleep() and PRCMPowerDomainOff() to turn off the clock domains. Could you verify that all 3 functions are indeed being called while the idle Task is running? You can do so by setting breakpoints on these functions in CCS (ie. in the Disassembly window (Window->Show View->Disassembly) type the function names into the location box and double-clicking on the left of the first assembly instruction address). These breakpoints should be hit every time the program goes into standby.

    Also, have you done a sanity-check to make sure you are indeed getting 4uA when running the sample applications provided by TIMAC? Or is the program you are running an example provided as is by TIMAC?

    Best regards,
    Vincent