Please have a look at the application note "AN92584 - Designing for Low Power and Estimating Battery Life for BLE Applications" Link:http://www.cypress.com/documentation/application-notes/an92584-designing-low-power-and-estimating-battery-life-ble.
Thanks for your reply. I looked into the link that you gave me and I used it in my application. But there is no change and I don't completely understand about their clock management system.
I used these codes before I enter into deepsleep.
/* change HF clock source from IMO to ECO, as IMO is not required and can be stopped to save power */
/* stop IMO for reducing power consumption */
/* put the CPU to sleep */
/* starts execution after waking up, start IMO */
/* change HF clock source back to IMO */
but I changed CySysPmSleep() into CySysPmDeepSleep().
1 of 1 people found this helpful
In AN the code posted by you is mention in the part of the application when your processing is done but BLE module still have work to do. I think that in the same document the BLE states are also stated. Please know that if BLE is in other event than CYBLE_BLESS_SATE_EVENT_CLOSE then you are not allowed to put the CPU in deep sleep. BLE will prevent it from going there.
When you have a connection with the BLE you can only put the chip in DeepSleep in between 2 consecutive connection intervals/ advertisement intervals. If you need more deepsleep you should stop BLE communication more frequently, if this helps.
Hope this help.
Really thanks for your reply. Actually, I stop the BLE module before entering into the deep sleep but the current consumption is still really high for my application. The multimeter shows 1.69mA but we want only less than 5uA.
I put all my non-BLE components into the sleep before entering into the deep-sleep. Am I need to do something?
Did you disable debugging by setting the pins to GPIO?
This is strange. I have managed to reduce the power consumption in deep sleep to about 5uA. I did the measurements using an oscilloscope. Please check to see if your multimeter makes some averages or try to measure using an oscilloscope and a shut resistor like I did, or if you have the possibility to measure using an oscilloscope with ammeter probe.
Also please consider to stop the ECO clock if you do not need the BLE. The ECO is by default at 24 MHz. Try to stop it in code or disable it if never needed from creator. Check also what Bob suggested.
Thanks for your reply. I haven't set the debug SWD pin to GPIO. So I set these pins to GPIOs and it works. But Now I got a new problem. Before I enter into the deep sleep, I set my used GPIOs int Analog HiZ for lesser power consumption and it worked too. But after the CPU wakes up some of the GPIOs don't turn ON even I set them into their specific drive states.
After I turned off ECO and set debug SWD pins into GPIOs, I can reduce the current down to 4uA.
But now I face a new problem. Before I enter into the deep sleep, I set my used GPIOs int Analog HiZ for lesser power consumption and it worked too. But after the CPU wakes up some of the GPIOs don't turn ON even I set them into their specific drive states.
I did an attempt to make power handling easier. I read through the documentation I found (API doc, application notes, forum posts), and ended up with the following code: https://github.com/cypress-speedycat/EasySleep . There are comments in the code that explains the steps taken.
I use it in my application and it seems to work well.
Thanks speedycat for your suggestion. But my problem is happened after wake-up.