Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cc13x0 deep sleep mode power consumption is still high #1131

Closed
ahmedmibrahim opened this issue Nov 15, 2019 · 31 comments
Closed

cc13x0 deep sleep mode power consumption is still high #1131

ahmedmibrahim opened this issue Nov 15, 2019 · 31 comments

Comments

@ahmedmibrahim
Copy link

@ahmedmibrahim ahmedmibrahim commented Nov 15, 2019

Hello,
I ran the very-sleepy-demo on cc1350 LAUNCHXL, when the device is in deep sleep mode, the current consumption is ~2.5mA which is still pretty high.

  • Are there any other modules that are still powered on in the deep-sleep mode?
  • How to power them down?

image

@rajeev1986

This comment has been minimized.

Copy link

@rajeev1986 rajeev1986 commented Nov 15, 2019

@ahmedmibrahim, that's because the TSCH scanning thread and the scheduler are still running keeping the MCU active, preventing it from deep sleep. My guess is if you compile the very-sleepy-demo with MAKE_MAC = MAKE_MAC_NULLMAC and MAKE_NET = MAKE_NET_NULLNET the device power consumption will be in tens of microamps rather than in milli. However, if you want to keep the default MAC and network running, you will have to explicitly turn off the TSCH before going to deep sleep and turning it back on after waking up.

@ahmedmibrahim

This comment has been minimized.

Copy link
Author

@ahmedmibrahim ahmedmibrahim commented Nov 16, 2019

Thanks for your response, @rajeev1986

  • I'm not using TSCH at all.
  • I tried building with NULLMAC and NULLNET but it failed, do you know how to turn TSCH?
  • Moreover, the MCU goes in deep LPM according to ENERGEST, but the current consumption in Deep LPM is not uAmps, TI examples demonstrate<10uA of standby current, but contiki-ng still doesn't make use of this feature:
    [INFO: Energest ] --- Period summary #4 (60 seconds)
    [INFO: Energest ] Total time : 3932160
    [INFO: Energest ] CPU : 152056/ 3932160 (38 permil)
    [INFO: Energest ] LPM : 1303688/ 3932160 (331 permil)
    [INFO: Energest ] Deep LPM : 2476416/ 3932160 (629 permil)
    [INFO: Energest ] Radio Tx : 0/ 3932160 (0 permil)
    [INFO: Energest ] Radio Rx : 1369870/ 3932160 (348 permil)
    [INFO: Energest ] Radio total : 1369870/ 3932160 (348 permil)

I wonder if I can list the currently running power modules somehow to figure out how to turn them off

Note: A more accurate measurement with JTAG/UART wires disconnected shows the DLPM current of ~140uA
image

@ahmedmibrahim

This comment has been minimized.

Copy link
Author

@ahmedmibrahim ahmedmibrahim commented Dec 5, 2019

@chenek Do you have any idea how to reduce power here?

@chenek

This comment has been minimized.

Copy link
Contributor

@chenek chenek commented Dec 5, 2019

Try to check if you call ext_flash_close to shutdown external flash.

@ahmedmibrahim

This comment has been minimized.

Copy link
Author

@ahmedmibrahim ahmedmibrahim commented Dec 7, 2019

Tried turning off ext flash, no change. I think this example doesn't use external flash.
Are there any modules powered on on the MCU itself? I'm just running the demo without any changes.

@chenek

This comment has been minimized.

Copy link
Contributor

@chenek chenek commented Dec 7, 2019

Can you attach a picture of your LAUNCHXL-CC1350 when you measure power consumption?

@ahmedmibrahim

This comment has been minimized.

Copy link
Author

@ahmedmibrahim ahmedmibrahim commented Dec 7, 2019

I have verified the setup with TI on this thread
https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz/f/156/t/849367
image

I get 5.4µA consumption when I ran TI demo (pinStandby) --> I'm confident of my setup

@chenek

This comment has been minimized.

Copy link
Contributor

@chenek chenek commented Dec 7, 2019

Try to keep GND/TX/RX jumpers mounted and test again.

@ahmedmibrahim

This comment has been minimized.

Copy link
Author

@ahmedmibrahim ahmedmibrahim commented Dec 7, 2019

NO difference (this will make a difference at lower currents), as I told you, I get 5.4uA using the same setup by just running another example (TI example).

There must be a power module that is still on, this module is not the ext flash (It must be on the MCU itself).

@chenek

This comment has been minimized.

Copy link
Contributor

@chenek chenek commented Dec 7, 2019

Since you use XDS110 on MSP432 launchpad, I think you should connect GND/TX/RX on CC1350 side of LAUNCHXL-CC1350 to XDS110 side of MSP432 launchpad when you do power consumption measurement.

@ahmedmibrahim

This comment has been minimized.

Copy link
Author

@ahmedmibrahim ahmedmibrahim commented Dec 8, 2019

Hi @chenek ,

  • Do you know what processes are still running in Deep Sleep Mode in this example?
  • Do you know their power consumption?
  • Do you know how to turn them off?
@chenek

This comment has been minimized.

Copy link
Contributor

@chenek chenek commented Dec 8, 2019

As I know, there’s o process running during deep sleeping mode. Do you try to remove all jumpers between XDS110 and CC1350, input voltage from 3V3 and GND pins in the bottom of LAUNCHXL-CC1350 and don’t connect JTag to do power measurement?

@ahmedmibrahim

This comment has been minimized.

Copy link
Author

@ahmedmibrahim ahmedmibrahim commented Dec 8, 2019

Yes with nothing connected at all (not even the RESET pin) I get ~ 85uA during Deep Sleep Mode
image

Measurement:
image

Also sometimes it drops to 2mA only ... any idea why?
image

@chenek

This comment has been minimized.

Copy link
Contributor

@chenek chenek commented Dec 9, 2019

It seems that you use energy trace on MSP432 launchpad to do power measurement. If so, it means you still have JTag connected. I would suggest you to use power analyzer or scope to do power measurement.

@ahmedmibrahim

This comment has been minimized.

Copy link
Author

@ahmedmibrahim ahmedmibrahim commented Dec 9, 2019

Ok, do you know why the program drops to a higher current value (~2mA)?

@chenek

This comment has been minimized.

Copy link
Contributor

@chenek chenek commented Dec 9, 2019

I suspect CC1350 wakes up in this case but I am not sure what happens in your case.

@ahmedmibrahim

This comment has been minimized.

Copy link
Author

@ahmedmibrahim ahmedmibrahim commented Dec 9, 2019

Well I debugged it (printf) and lpm_drop goes to deep_sleep_mode ... but for unknown reason, power consumption is high :(

@ahmedmibrahim

This comment has been minimized.

Copy link
Author

@ahmedmibrahim ahmedmibrahim commented Dec 9, 2019

Found it --> I2C Pins are moving randomly up and down (I don't know why), when they are low, more leakage through the pull up Resistors (3.3K).
Leakage = 3.3V / 3.3KOhm x 2 (SDA/SCL) = 2 mA :)

@chenek

This comment has been minimized.

Copy link
Contributor

@chenek chenek commented Dec 9, 2019

You should set unused pin to PIN_UASSIGNED in your board file.

@ahmedmibrahim

This comment has been minimized.

Copy link
Author

@ahmedmibrahim ahmedmibrahim commented Dec 11, 2019

hey @chenek ,
PIN_UNASSIGNED is for simplelink Target,
very_sleepy_demo uses cc26xx-13xx, Can you explain how to do that on this target?
I tried adding pins to BOARD_UNUSED_PINS list in board.h file and it didn't help
I still have some IOs toggling high and low when moving from deep_sleep to active

Also please explain (in detail) how to set the default value of a PIN in Deep_sleep_mode. Example: I want DIO30 to be pulled up in sleep, while DIO25 should be pulled low.

@chenek

This comment has been minimized.

Copy link
Contributor

@chenek chenek commented Dec 12, 2019

I suppose you should set unused pins to PIN_UNASSIGNED in LAUNCHXL-CC1350.h.

@NeoN7777

This comment has been minimized.

Copy link

@NeoN7777 NeoN7777 commented Dec 13, 2019

Hi @chenek
Do you know what is appropriate power consumption for CC1310 when using TSCH? I have 150-200 uA on a router node, is there any way to reduce the power? Thanks.

@chenek

This comment has been minimized.

Copy link
Contributor

@chenek chenek commented Dec 13, 2019

I think 150-200 uA on a router node is pretty low.

@NeoN7777

This comment has been minimized.

Copy link

@NeoN7777 NeoN7777 commented Dec 13, 2019

I think 150-200 uA on a router node is pretty low.

So, is there no way to make it 20-40uA with router functions, maybe with some limited abilities?

@chenek

This comment has been minimized.

Copy link
Contributor

@chenek chenek commented Dec 13, 2019

I don’t think so.

@NeoN7777

This comment has been minimized.

Copy link

@NeoN7777 NeoN7777 commented Dec 13, 2019

I don’t think so.

Okay :(
Thank you

@ahmedmibrahim

This comment has been minimized.

Copy link
Author

@ahmedmibrahim ahmedmibrahim commented Dec 13, 2019

A router node cannot go in Deep Sleep mode while routing at the same time
That stand by mode usually consumes ~6-7mA (radio is on, not transmitting), during transmission you will notice current spikes (sudden high current for a very short time) that may reach 22mA (check the datasheet for accurate numbers)

@ahmedmibrahim

This comment has been minimized.

Copy link
Author

@ahmedmibrahim ahmedmibrahim commented Dec 13, 2019

BTW, for deep sleep of cc1350 launchpad,
1- make sure you do JTAG Reset (full reset) after flashing a new image (don't rely on CCS reset) as it gives 100uA leakage
2- my current current consumption is ~8uA in Deep sleep mode (measured with energyTrace) which is still not as the datsheet value (0.7) for cc1350 and 7nA for external Flash

Please let me know if you managed to optimize it further, I desperately need it

@chenek

This comment has been minimized.

Copy link
Contributor

@chenek chenek commented Dec 13, 2019

I think it’s normal to see ~8uA in Deep sleep mode on Launchpad since there are other components on Launchpad. datsheet value (0.7) for cc1350 is CC1350 only and not including other components.

@ahmedmibrahim

This comment has been minimized.

Copy link
Author

@ahmedmibrahim ahmedmibrahim commented Dec 14, 2019

I can't see anything else more than the MCU and the Ext Flash... the RF radio should be off and its circuitry.
Anyways, can you answer my question about:

PIN_UNASSIGNED is for simplelink Target,
very_sleepy_demo uses cc26xx-13xx, Can you explain how to do that on this target?
I tried adding pins to BOARD_UNUSED_PINS list in board.h file and it didn't help
I still have some IOs toggling high and low when moving from deep_sleep to active

Also please explain (in detail) how to set the default value of a PIN in Deep_sleep_mode. Example: I want DIO30 to be pulled up in sleep, while DIO25 should be pulled low.

@chenek

This comment has been minimized.

Copy link
Contributor

@chenek chenek commented Dec 14, 2019

According to your current power consumption, I think you already set pins correctly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
4 participants
You can’t perform that action at this time.