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.

CCS/CC3200: Implementing LPDS power mode

Part Number: CC3200

Tool/software: Code Composer Studio

I have developed a package using the CC3200. i basically have completed the project; however, i am now ready to install LPDS power mode. This is a battery driven project so i need the lower power mode. I have looked at both LPDS and Hibernate, but would like to save variables during the low power mode; therefore, LPDS looks better for me. I have looked at both Idle_profile and idle_profile nonos, but its difficult to tell what modules are really needed to add to my code.  Both programs have a lot of function that i can not use. is there a clean and clear explanation to show me what is needed to implement LPDS? 

  • Hi Larry,

    You can check out the power measurement example or the power measurement framework documentation: processors.wiki.ti.com/.../CC32xx_Power_Management_Framework

    Best regards,
    Sarah
  • I have looked at CC32XX power Management Framework before, but as a new comer to the CC3200 that document does not give me a step by step of how to implement LPDS in my code. Power management in "Idle Profile Application" is so embedded in the code, its difficult to tell what is needed. An example, the idle hook, vApplicationIdlehook jumps to cc_idle_task_pm() which is in assembly. What does that do? Antother example, i thing memory PRCM_SRAM_COL_1 - COL_# are save, what memory is that? The data sheet does not show what memory COL_1-4 is. Isn't there something that tell me what all the modules do and which one are needed? I already spent much more time of thes then i thought it would take.
  • I checked out Power management Framework. i had looked at it before, but it leaves a lot of unanswered questions to someone who is trying to learn how to implement LPDS mode in their own application

    I am using ti_rtos as my op system. I no not know what idle Profile is using. Maybe that is some of my problem. I looked at the nonos too; however, it makes the same calls to cc_idle_task_pm too, so it would have the same issue. Both idle_profile compile without errors so what am i missing?????? i tries making an extern reference to cc_ilde_task_pm and that did not help. My idle task in ti_rtos is Idle task, in idle_profile its called vApplicationIdleHook. Is that an issue? 

    I have used Idle_profile as a guide and gone through it line by line and now have the following errors in my code when i compile. 

    undefined first referenced
    symbol in file
    --------- ----------------
    cc_gpio_enable_notification ./main.obj
    cc_gpio_open ./main.obj
    cc_idle_task_pm ./IdleTask.obj
    cc_rtc_set ./main.obj
    cc_timer_create ./main.obj
    cc_timer_start ./main.obj
    platform_init ./main.obj


    Description Resource Path Location Type
    #10010 errors encountered during linking; "Logger.out" not built Logger C/C++ Problem
    <a href="file:/c:/ti/ccsv6/tools/compiler/dmed/HTML/10234.html">#10234-D</a> unresolved symbols remain Logger C/C++ Problem
    unresolved symbol cc_gpio_enable_notification, first referenced in ./main.obj Logger C/C++ Problem
    unresolved symbol cc_gpio_open, first referenced in ./main.obj Logger C/C++ Problem
    unresolved symbol cc_idle_task_pm, first referenced in ./IdleTask.obj Logger C/C++ Problem
    unresolved symbol cc_rtc_set, first referenced in ./main.obj Logger C/C++ Problem
    unresolved symbol cc_timer_create, first referenced in ./main.obj Logger C/C++ Problem
    unresolved symbol cc_timer_start, first referenced in ./main.obj Logger C/C++ Problem
    unresolved symbol platform_init, first referenced in ./main.obj Logger C/C++ Problem

    I really need help on this! 

  • I am also currently facing the exact same issue. it would be great to know what exactly to implement or import since the reference example is too general, rather than import all given API's and risk increasing memory size.

  • Is there no answer to this question about implementation of LPDS  in user code? I have looked at all of the low power option. Hibernate is good, but i can not save any local data that is needed after recovery. Hibernate is basically shutting it off and power the CC3200 back up. Hibernate,  sleep and deep sleep are easy to implement. Why id LPDS so difficult. I am looking at deep sleep currently because i can not get LPDS to work. However, the power requirement s are much higher the LPDS. The CC3200 Power management Framework document need more work. Its really an overall review not a document that helps one install any of the low power modes. 

  • what I am using at the moment is Hibernate mode, it is easy to implement.
    you can actually use two registers that are retained during the hibernate process On-Chip Retention (OCR) registers. using PRCMOCRRegisterRead() and PRCMOCRRegisterWrite();

    but the drawbacks is that the system has to reset and load the program from Flash, also data retention is limited here, (when using RTC data can't be written to these registers as the provided document states ).

    It would be great to get some guidance on LPDS since it is much desirable than Hibernate.
  • Hi Larry,

    Have you included gpio_hal.h and the other Middleware library headers into your project? These are shown in main.c of idle_profile.

    //middleware includes
    #include "cc_types.h"
    #include "rtc_hal.h"
    #include "gpio_hal.h"
    #include "uart_drv.h"
    #include "cc_timer.h"
    #include "cc_pm_ops.h"

    You can look at the existing example for Middleware include paths. This library handles all of the data saving that is required for LPDS mode.

    In the idle_profile example, everything you need is in the TimerGPIOTask and where DEBUG_GPIO is defined in main. This uses a few functions elsewhere in main.c as well as the lp3p0 files to set the power policy and wakeup timers.

    Best regards,

    Sarah

  • Every thing in the examples is to general and its not using TI_RTOS. And yes i had all the middleware files included in my main module.