PSoC4 BLE Current consumption goes higher in DeepSleep Mode

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

Hi I am Anthony. Current I am working on a project in which I used CYBLE_014008_00 Module. When in active mode, I measured the current and it shows 17mA. But when I put MCU into deepsleep mode, the current consumption inucreases to 23mA.

That's very strange. I'd already put all LED pins into ALG_HIZ drive mode and make these GPIO sleep.I also set the DebugSelect option to GPIO mode and stop ECO clk before go to Deep Sleep mode.

What should be the problem? Please help me. It's very urgent.

the Code I have written for the deepsleep function,

                    MOTOR_EN_Write(0); //Motor driver GPIO_out

                    MOTOR_IN1_Write(0); //Motor driver GPIO_out

                    MOTOR_IN2_Write(0); //Motor driver GPIO_out

                   

                    isr_Timeout_Disable(); // Timer Counter module Interrupt

                    UART_FP_Stop();// UART Module to communicate with fingerprint module

                    FP_PWR_Write(0);//GPIO_out to Fingerprint module power

                    COUNTER_Sleep();//Timer Counter

                   

                   

                   

                    Pin_LEDR_SetDriveMode(Pin_LEDR_DM_ALG_HIZ);

                    Pin_LEDG_SetDriveMode(Pin_LEDG_DM_ALG_HIZ);

                    Pin_LEDB_SetDriveMode(Pin_LEDR_DM_ALG_HIZ);

                    MOTOR_EN_SetDriveMode(MOTOR_EN_DM_ALG_HIZ);

                    MOTOR_IN1_SetDriveMode(MOTOR_IN1_DM_ALG_HIZ);

                    MOTOR_IN1_SetDriveMode(MOTOR_IN1_DM_ALG_HIZ);

                   

                    Pin_LEDR_Sleep();

                    Pin_LEDG_Sleep();

                    Pin_LEDB_Sleep();

                    MOTOR_EN_Sleep();

                    MOTOR_IN1_Sleep();

                    MOTOR_IN2_Sleep();

                   

                   

                   

                    CySysClkEcoStop();  // Stop ECO First

                    CySysPmDeepSleep();

0 Likes
1 Solution
Anonymous
Not applicable

Hi Pratt, apology for my late response and I found the problem. Actually when I measured the current , the power supply comes from the USB and I measured from the USB supply. But when I supplied from battery and measured through it, the current consumptoon went down to 800uA and it’s acceptable in my project. Thanks for the reply and sorry for the inconvenience.

View solution in original post

3 Replies
Anonymous
Not applicable

Try entering deep sleep without turning off the ECO clock first. The CPU might be using the ECO to clock the wakeup interrupts from deep sleep.

Also, if you missed a _sleep() call for a peripheral, or the peripheral doesn't support deep sleep, then it could be drawing the extra current due to corrupted/invalid state when entering deep sleep mode.

I believe in my own project, the BLE component requires the ECO to operate, perhaps another peripheral you are using has the same stipulation? Double checking which clocks are running or off when you enter/exit deep sleep might be useful.

0 Likes
Anonymous
Not applicable

Hi Pratt, apology for my late response and I found the problem. Actually when I measured the current , the power supply comes from the USB and I measured from the USB supply. But when I supplied from battery and measured through it, the current consumptoon went down to 800uA and it’s acceptable in my project. Thanks for the reply and sorry for the inconvenience.

Anonymous
Not applicable

No Problem, glad you found the issue

0 Likes