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/SENSOR-CONTROLLER-STUDIO: Power considerations for SCS flow

Part Number: SENSOR-CONTROLLER-STUDIO

Tool/software: Code Composer Studio

I need to read some i2c sensors (from the sensor controller) for about 30 seconds at about 1Hz, then put everything to sleep and repeat some time later.

My primary concern is power consumption and I am trying to figure out the best approach. I've come up with 2 scenarios:

  1. The straightforward and simpler approach is to generate a fwGenAlertInterrupt(); in the SCS code on every iteration, which would wake up the main processor to read a single record from the the SCS structure. This would wake the main processor once or twice a second to transfer each sample - a total of 30 wakeups of the main processor.
  2. The other scenario would be to build up a buffer of data in the SCS code and only trigger the fwGenAlertInterrupt(); when the buffer is full. This is obviously limited by the RAM available to the SCS code/data, but I'm in that gray area where I could buffer 30 data samples and keep the main processor asleep for the full 30 seconds.

I don't know how the power is handled in either of the above scenarios. It seems that keeping the main processor asleep longer would be better, but I don't know how significant or trivial the difference would be. I was hoping someone could comment from a power perspective. Is the power difference between the 2 scenarios even worth the extra programming complexity of option #2?

This is an ultra low power application, so any power optimization is worth it.

  • Hi,
    The average power will depend on duty cycling the sensor you are reading from. To give an idea, a 1Hz wake up and sampling by on chip ADC via sensor controller consumes about 1uA at 3V.
    What kind of current consumption numbers are you looking for?
    Will you power the sensor from GPIO?
    Regards,
  • I was trying to compare apples to apples on the sensor read and am just trying to understand the power cost of waking the main processor on every sensor controller task execution vs doing more in the sensor controller, waking the processor less frequently.

    Lets say for the sake of argument that its not a sensor, and the sensor controller is just doing a simple increment on each execution. I will transfer that data value out of the sensor controller via the output structure. To do this I call fwGenAlertInterrupt(); at the end of the task execute block, which wakes up the main processor, where I read from the sensor controller's output structure.

    Here's the question I'm looking to answer:
    Is it better (from a power perspective) to wake the main processor on every iteration of the execution task and transfer one value... or to buffer data in the output structure and wake the main processor after "N" number of execution tasks to read "N" values all at once?


    The sensor controller would execute the exact same number of times. The only difference would be a bit of extra code in the sensor controller to do the buffering in the second option.

    I guess the more fundamental question... is the power cost of waking the main processor so trivial that its not worth the added complexities of data buffering?
  • A CM3 wake-up cost more current than reading out N samples so you should wake up the CM3 as infrequently as possible. (Could be that this is slightly different if N is a very large number)
  • Can you quantify the power cost of waking the main processor?
  • The current consumption of the CM3 is stated in the CM3. Then the total current is given by the wake-up time and how long the CM3 is awake for.

    I can try to do some measurements. It looks like the adc_data_logger example in SCS does something similar to what you are asking for. I can do a couple of measurements with different rate of CM3 wake-ups, do you think that will give you the relevant numbers for what you are looking for?