PSoC63 Hibernate Current Consumption too high - how to reduce?

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

cross mob
Anonymous
Not applicable

Hello,

I am setting the PSoC63 into the Hibernate mode with running RTC for wake-up triggering. With a Keysight N6705C power analyzer I measure 4 µA in Hibernate mode. Expected value was 800 nA Hibernate + 380 nA RTC (running with ECO) = 1.18 µA.

I connect 3 V to the PWR pin (removed jumper j8) on the backside of the PSOC 6 BLE Pioneer board and connect GND of the power analyzer to any GND pin on the board. I looked in the schematics and I dont see any other current drawing device which is connected the the PWR pin. Is this the correct measurement procedure I can do with my power analyzer? I have to use the power analyzer for accurate measurements and do a reliable comaprison to other chips.

I reduced all LF clocks to the WCO clock and also disabled debugging pins to GPIO and no GPIOs are used at all. I enabled the 0.9 V SIMO buck.

The project does the following:

- Wake up from RTC every 3 seconds

- Advertisement

- Wait 5 ms for Advertisement done

- Put system back to hibernate

Do you have any idea what I could have forgotten to disable? When entering Hibernate mode, do I have to explicitly disable any blocks?

Thank you!

0 Likes
1 Solution
Anonymous
Not applicable

Hi,

the solution is to desolder R4 from the Pioneer Board. It is a pulldown from VBackup to GND and it draws 3 µA @ 3V. So I could go down to 510 nA Hibernate current.

Regards

Andre

View solution in original post

0 Likes
21 Replies
AnkitaS_51
Employee
Employee
100 likes received 50 likes received 25 likes received
0 Likes
Anonymous
Not applicable

I already read this document twice. But there is no hint that I have to disable any function manually?

0 Likes
AnkitaS_51
Employee
Employee
100 likes received 50 likes received 25 likes received

This Forum thread discusses ways to measure PSoC6 power Consumption:

Re: How to measure the PSOC6 power consumption using CYkit-062?

0 Likes
Anonymous
Not applicable

I read that there is no modification required. So HW is OK.

Did you measure 1.2 µA on your design on a PSoC6 Pioneer Board? For our evaluation if we can not reduce the current lower than 4 µA the PSoC6 will be canceled from our plans...

0 Likes
Anonymous
Not applicable

I checked this lists before and there is no matching project for our usecase:

- System wake-up by RTC from Hibernate

So I created my own as shown in the code below. It is very simple and produces the described phenomen:

#include "project.h"

void Cy_RTC_Alarm1Interrupt(void)

{

    /* Clear any pending interrupts */

    Cy_RTC_ClearInterrupt(CY_RTC_INTR_ALARM1);

    __NVIC_ClearPendingIRQ(RTC_RTC_IRQ_cfg.intrSrc);

}

/* Default time written to RTC at power-up or reset */

#define TIME_AT_RESET           (00u),   /* Seconds    */\

                                (00u),   /* Minutes    */\

                                (00u),   /* Hours      */\

                                (01u),   /* Date       */\

                                (01u),   /* Month      */\

                                (17u)    /* Year 20xx  */

cy_stc_rtc_alarm_t const alarm =

{

    .sec            =   03u,

    .secEn          =   CY_RTC_ALARM_ENABLE,

    .min            =   00u,

    .minEn          =   CY_RTC_ALARM_DISABLE,

    .hour           =   00u,

    .hourEn         =   CY_RTC_ALARM_DISABLE,

    .dayOfWeek      =   01u,

    .dayOfWeekEn    =   CY_RTC_ALARM_DISABLE,

    .date           =   01u,

    .dateEn         =   CY_RTC_ALARM_DISABLE,

    .month          =   01u,

    .monthEn        =   CY_RTC_ALARM_DISABLE,

    .almEn          =   CY_RTC_ALARM_ENABLE

};

void InitRtc(void)

{

    /* Start the RTC */

    RTC_Start(); 

   

    /* Clear any pending interrupts */

    Cy_RTC_ClearInterrupt(CY_RTC_INTR_ALARM1);

    __NVIC_ClearPendingIRQ(RTC_RTC_IRQ_cfg.intrSrc);

   

    /*Configures the source (Alarm1) that trigger the interrupts */

    Cy_RTC_SetInterruptMask(CY_RTC_INTR_ALARM1);

    /* Set the default date and time and wait till the operation is successful */

    while(Cy_RTC_SetDateAndTimeDirect(TIME_AT_RESET) != CY_RET_SUCCESS);

    

    /* Wait for alarm to be set */

    while(Cy_RTC_SetAlarmDateAndTime(&alarm,CY_RTC_ALARM_1) != CY_RET_SUCCESS);

}

int main(void)

{

    __enable_irq(); /* Enable global interrupts. */

   

    /* Place your initialization/startup code here (e.g. MyInst_Start()) */

    InitRtc();

   

    for(;;)

    {

        while(Cy_RTC_SetDateAndTimeDirect(TIME_AT_RESET) != CY_RET_SUCCESS);

        /* Place your application code here. */

       

        Cy_SysLib_Delay(5);

       

        /* Set the wake-up signal from Hibernate */

        Cy_SysPm_SetHibWakeupSource(CY_SYSPM_HIBERNATE_RTC_ALARM);

       

        /* Jump into Hibernate */

        Cy_SysPm_Hibernate();

    }

}

-> System wakes up every 3 seconds as expected. But while in Hibernate, I measure 4 µA current consumption. The Keysight N6705C applies 3 V to PWR pin (removed jumper j8) on the backside of the PSOC 6 BLE Pioneer board. The ground is connected to any GND pin on the board.

-> In my design I have only the RTC placed. No GPIOs, no BLE. Debug pins changed to GPIO. LF Clock changed to ECO. 0.9 V switching regulator used when device is active.

Is there anything else to configure?

Thank you!

0 Likes
Anonymous
Not applicable

pastedImage_0.png

0 Likes
Anonymous
Not applicable

On other chips, I see there is some switching regulator on it which is noticeable as pulsing in the above shown image. The PSoC6 shows only a straight line. Does the PSoC6 use a switching regulator on hibernate? If yes, how do I activate it?

Thank you!

0 Likes

In hibernate mode, both the Active mode regulator and deepsleep regulator are turned off and GPIO states are frozen as mentioned on page#130 of the Architectural TRM  and you can get details about all the regulators from page #122 at this link:

http://www.cypress.com/file/385621/download

0 Likes
Anonymous
Not applicable

So if we cannot find the solution here, could you provide a example project which sets the system in hibernate with active RTC wake-up using ECO? The RTC shall wake up or reset the system every 3 seconds. What can you measure in your laboratory?

Then I can put it on my Pioneer Board and measure it by myself. This would be the best solution I think!

0 Likes

Can you please provide us with your project.Firstly, we will check for any abnormalities.Then we will also try on kits available with us for PSoC6.

0 Likes
lock attach
Attachments are accessible only for community members.
Anonymous
Not applicable

Hello,

I have attached the project.

Thank You!

0 Likes
lock attach
Attachments are accessible only for community members.

There is a simple P6 project where the device is put to Hibernate and tested the hibernate current on the P6 Pioneer Kit (Rev. *B silicon).

Attaching the project for your reference. Note that you need to uncheck “Run in hibernate mode” for the ILO in clock settings.

Hibernate current that we measured was 685 nA

We have tested these values in our lab.

0 Likes
Anonymous
Not applicable

I tested your P6 project and I got 3.5 µA as result:

currentPSoC6Hibernate1.png

Where can I check which silicon version is placed on my board?

0 Likes
Anonymous
Not applicable

The number on my chip is: CY8C6347BZI-BL D53ES 1743 64 1476

0 Likes

Cy_SysLib_GetDeviceRevision() API is defined in cy_syslib.h file which will be helpful

0 Likes
Anonymous
Not applicable

The debugging of the M4 does not work, so I cannot see the uint8_t ID value. But I noticed that the windows "Select Debug Target" shows me the Silicon ID: 0x6BA02477 and Cypress ID: 0xE2072100.

Is that sufficient for you?

0 Likes

Hi Andre,

The current you’ve measured does not represent the actual hibernate current consumed by the PSoC 6. This is because the default configuration of the PSoC 6 BLE Pioneer Kit contains leakage paths from the PSoC 63 with BLE device to on-board integrated circuits. The Pioneer kit was designed for evaluating nearly all the features provided by the PSoC 63 with BLE device, therefore it contains a plethora of additional on-board peripherals. Although the kit can be used to measure currents down to the Deep-Sleep levels, it is not suitable for sub-μA current measurements.

When you create an actual application board with the PSoC 63 with BLE device, with peripheral connections designed in such a way to eliminate leakage paths, the current measured will be in the range specified in the device datasheet. Moreover, we’ll release a PSoC 63 with BLE prototyping kit next quarter with a reduced set of additional peripherals, which will be more suitable for sub- μA current measurements.

Regards

Vaisakh

0 Likes
Anonymous
Not applicable

Hi Vaisakh,

I connected my power analyzer directly to the pin of the removed jumper on the backside of the board. The PSoC63 doesnt use any external components so all pins are on high impedance I think. Alternatively I have 4 boards here, I can destroy one of it for current measurements.

Could you tell me please, which traces on the board do I have to cut or which components do I have to remove to disconnect alle components which are drawing current of the power pin from the removed jumper?

You have to know, I am at evaluation currently and I have to find and proof the best chip for it. Cypress and another brand is in the final round. So it is no solution to create a individual  board for current measurement. Please support me to get it run with a Pioneer Kit.

Thank you!

0 Likes

Hi Andre,

Because of the sheer number of peripherals on the Pioneer board, there’s no simple rework that can yield accurate hibernate currents. I’ve sent an email to your registered email ID to understand your requirements better and help you find an optimum solution. Please check and respond.

Best Regards,

Vaisakh

0 Likes
Anonymous
Not applicable

Hi,

the solution is to desolder R4 from the Pioneer Board. It is a pulldown from VBackup to GND and it draws 3 µA @ 3V. So I could go down to 510 nA Hibernate current.

Regards

Andre

0 Likes