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/LAUNCHXL-CC1310: How to operate LAUNCHXL-CC1310 using sensor example in low power mode?

Part Number: LAUNCHXL-CC1310
Other Parts Discussed in Thread: CC1310

Tool/software: Code Composer Studio

Hi everyone,

I am using LAUNCHXL-CC1310 board and implementing sensor example on it. I am currently using CCS v9.1, SimpleLink SDK v2.10.00.36.  Currently it is drawing 800mA to 1A. I want to decrease this current drawn for the sake of power management. After going through forums and documents I came to a conclusion that the device can operate in a low power mode.

Can anyone suggest how can I reduce this current drawn i.e., operate the device in low power mode?

Thanks in Advance

-Chandrasekhar DVS

  • Hi Chandrasekhar.

    How are you measuring up to 1 A current draw on the chip? The Launchpad should not be able to draw 1 A, even when transmitting at the highest power. And note that you are not using the newest SDK, which is SimpleLink CC13x0 SDK v3.20.00.23. 

    The chip will automatically always try to use the lowest power mode available. How is you code set up? Do you use blocking operations to read the sensor? Are you using a RTOS? If you switch to use interrupts and callbacks, the device will sleep in between operations. You can also look into reading the sensor using the sensor controller in the chip. 

    Regards
    Vegard

  • Hi Vegard,

    Thank you for the very fast reply. The thing is, we have connected a custom designed sensor to the mount on the LAUNCHXL-CC1310. Hence, even that module draws current from the USB power supply. So I am getting 1 A current draw.

    Regarding SDK version, we have made a lot of changes to the sensor/collector code of SDK v2.10.00.36. Hence, to migrate to a later SDK, it takes time which we are reserving for later.

    Yes. I am using RTOS.

    I am setting up a clock to trigger the SENSOR_READING_TIMEOUT_EVNT which basically reads from the sensor. In the timer callback, I am setting the event. So I was thinking if I could use the following lines, before setting the clock, assuming sleep() would disable GPtimer, I could get low current draw.

    sleepInterval  = 9*reportInterval/10;

    sleep(sleepInterval);

    Ssf_setReadingClock(reportInterval - sleepinterval);

    That's the summary. Can you suggest what can be done?

    Thanks in advance

  • USB is spec'ed to 500 mA max.

    What type of sensor is it that draws 1 A and how are you going to get this to be low power? If you are interested in low power, should this be battery operated and if so, what type of battery can supply 1 A? 

  • Hi TER,

    I am really sorry. I was not probing it right. It is drawing 2.34 mA to 10 mA.

    Now when I am using Task_sleep() instead of sleep, as I was intending to use a mentioned in my previous reply, the current drawn is still same (2.8mA). I removed the LED jumpers also while doing all this.

    Can you suggest something that can be done?

    Thanks in advance

    -Chandrasekhar DVS

  • Are you sure it is the Launchpad that is drawing the most of this current? Does the sensor support sleep/low power mode?

    Before you go into Task_sleep make sure that the different drivers are closed, and the MCU is not pending on something.

    One option is to look into the Sensor Controller and see if you are able to offload some of the task to it. 

    Regards
    Vegard

  • Hi Vegard,

    After cross-checking, we found out that the mountable sensor module does not support low power mode. When I did this with the internal temperature sensor, the board is drawing 32uA most of the time(removed mountable sensor here). However even when I use Task_sleep, the same amount of current is being drawn. I shall now try what you suggested to go even lower.

    Thanks

    -Chandrasekhar DVS

  • Hi Vegard,

    I found some documents such as CC13x0 Power Management and TI-RTOS management but I am kind of lost here( Don't understand where to start..). I want to put the sensor device in standby mode  for a while, when sensor receives a config request from the collector and then send the sensor message. Would the steps in section 3.3.1 in CC13x0 Power Management help.

    Also for starters, instead of  closing drivers before entering sleep mode, I removed their initializations and checked how much current was the module drawing. It is still 32uA. Also when you say 'MCU is not pending on something' how does that matter when I use sleep()? I mean the system kind of stops all of its operations when it is in sleep right? with retention?

    Please guide me here

    Thanks

  • By "sensor example ", do you then mean 15.4 stack?

  • Yes TER

  • Hi Chandrasekhar,

    I would definitely suggest that you evaluate the default v3.20 SDK examples with POWER_MEAS defined inside of application/defines/sensor.opts or the Predefined Symbols Project Properties.

    http://dev.ti.com/tirex/explore/node?node=APOGBsjoYumhgDYmNExPQA__eCfARaV__LATEST 
    http://dev.ti.com/tirex/explore/node?node=AIiYaZcKNsnEQVxayNDHxQ__eCfARaV__LATEST 

    Regards,
    Ryan

  • Hi Ryan,

    For starters, I installed sdk 3.20, imported the ti empty example to a workspace, using CCS v9.1 and ran them on cc1310 board. However there is huge difference in current drawn when I power the board using external dc supply from when I power it using the micro USB cable to it. Following pictures imply what I mean. 

    1) External supply to 3V3  pin. Changed the jumper P10. LED jumper is present

    2)LAUNCHXL-CC1310 setup

    3)External supply to 3V3  pin. Changed the jumper P10. LED jumper is absent

    4) Finally when I power the device via micro USB cable. Changed the jumper P10

    Can you tell why is the board drawing such high current, comparatively, when an external supply is being used?

    -Chandrasekhar DVS

  • I would suggest that you remove all jumpers on P4. When you use external supply you are also measuring current going to the debugger part of the board. See  for how to measure current. 

  • Hi TER,

    Sorry but I already referred to this file. Not really helping. I think my setup in 1) 2) and 3) is wrong, which would be connecting the 3V3 to debugger part. I just want to connect my ammeter in series with existing circuit so that when I power on the board using external power supply, see how much current the board is drawing. How to do that after removing all the jumpers on P4? Can you suggest?

    Thanks

    -Chandrasekhar DVS

  • To measure current usage with a multimeter, disconnect all jumpers, and put the multimeter in series with the external power supply. I.E. connect the positive lead from the power supply to one of the leads in the multimeter, and connect the other lead in the multimeter to the 3v3 pin on the launchpad. 

  • Hi Vegard H and TER,

    After measuring the current drawn by CC1310 as you suggested, it came out to be around 24.6uA when I loaded sensor application of SDK 2.10. However the PowerCC26XX_IDLE_PD_DISALLOW is set in 'main.c' thereby not allowing the device to go into deep sleep mode when idle. Can I simply comment it out and expect the current drawn to go down any further or would it simply lock me out of JTAG thereby disabling me of programming the board any further? Following are the code snippet in main.c and pictures of my setup.

    Void taskFxn(UArg a0, UArg a1)
    {
    #ifdef TIMAC_AGAMA_FPGA
        /* FPGA build disables POWER constraints */
        Power_setConstraint(PowerCC26XX_IDLE_PD_DISALLOW);
        Power_setConstraint(PowerCC26XX_SB_DISALLOW);
    
        IOCPortConfigureSet(IOID_20, IOC_PORT_RFC_GPO0, IOC_STD_OUTPUT);
        IOCPortConfigureSet(IOID_18, IOC_PORT_RFC_GPI0, IOC_STD_INPUT);
        // configure RF Core SMI Command Link
        IOCPortConfigureSet(IOID_22, IOC_IOCFG0_PORT_ID_RFC_SMI_CL_OUT, IOC_STD_OUTPUT);
        IOCPortConfigureSet(IOID_21, IOC_IOCFG0_PORT_ID_RFC_SMI_CL_IN, IOC_STD_INPUT);
    
    #else
        /*
         Disallow shutting down JTAG, VIMS, SYSBUS during idle state
         since TIMAC requires SYSBUS during idle.
         */
        Power_setConstraint(PowerCC26XX_IDLE_PD_DISALLOW);

    Thanks in advance. Also please suggest solutions for SDK 2.10 version code only because I am still working on migration to SDK 3.20 version.

    -Chandrasekhar DVS

  • Hi TER and ,

    Any possible suggestions regarding my latest post?

    Thanks

    -Chandrasekhar DVS

  • Hi Chandrasekhar,

    You can comment out Power_setConstraint(PowerCC26XX_IDLE_PD_DISALLOW); to see how it affects behavior, this will not disable JTAG programming functionality.  Also, does the power consumption decrease after joining a network?  Please evaluate the v3.20 SDK and if the power consumption is lower for the default example then you will know that the higher current is due to the 15.4-Stack and not your application or hardware setup.

    Regards,
    Ryan