PSoC6 PMIC Control how to use on Vbackup, for shut down VDDD

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

cross mob
lock attach
Attachments are accessible only for community members.
ryno_2648816
Level 1
Level 1
5 sign-ins First like received First reply posted

Hello Community

I am working on a PSoC 6 Project which implements the CY8C6347FMI-BUD53

Programming environment is the ModuxToolBox Version:  2.2.0

Pushbutton connected to P0_4 ( wakeup pin ), PMIC_ENABLE connected to P0_5 (wakeup out).

I want to shut down the VDDD Domain for sleep. only keeping vbackup running for later pushbutton interrupt.

 

I tested this code.

// VDDD is shutdown at PMIC_ENABLE disabled, and Enter Hibernate.

if (Cy_SysPm_PmicIsOutputEnabled())

{

  Cy_SysPm_PmicUnlock();

  Cy_SysPm_PmicDisable(CY_SYSPM_PMIC_POLARITY_HIGH);

}

resStat = Cy_SysPm_SystemEnterHibernate();

// not reach

if (resStat != CY_SYSPM_SUCCESS) {

   printf("ERR Hibernate. ret:0x%x\r\n", resStat);

}

after that,

Pressing Pushbutton  while PSoC6_MCU is System_hibernate_mode, but pmic_wakup_out :P0[5] is not changed to High,

so and MCU does not return to System_LP_mode .

7 Replies
StNu_1610991
Level 4
Level 4
First comment on KBA 50 sign-ins 25 replies posted

This is the same question that I have been asking about on the PSOC 063-BLE in the thread:

How does one get P0.5 pin control going into and out of hibernation?.  

In my case the RTC alarm is used to terminate the hibernate but control of P0.5 is the same issue.

See the example bundle that was sent in the most recent reply.  So far I have not been able to get P0.5 control.  I hope that a Cypress expert will respond.

 

Thanks to response.

I tried modifications which DheerajK_81 told.

but pmic control was not work on Vbackup.

DheerajK_81
Moderator
Moderator
Moderator
First comment on KBA First comment on blog 5 questions asked

Hello @ryno_2648816 ,

Did you enable the PMIC in the beginning with the following code sequence?

Cy_SysPm_PmicUnlock();                           
Cy_SysPm_PmicEnable();
Cy_SysPm_PmicEnableOutput();                                         
Cy_SysPm_PmicLock();        

Please consider attaching the code so that I debug the issue.

Regards,
Dheeraj

0 Likes
KeTS_3297816
Level 2
Level 2
10 replies posted 10 sign-ins 5 replies posted

Hi, ryno_2648816

I tried to control PMIC by wakeup_out(p0[5]), just like your code.

I tried PmicDisable, set p0[5] to logical low, then executed hibernating. this results in power off, but when I switch wakeup_in input from logical low to high, system didn't wake up.

I tried another simple project, hibernate and wakeup by p0[4](Hibernate wakeup(1)) without PMIC control, and this was successful. Wakeup source was p0[4]. After hibernation, switched p0[4] L to H, then system woke up.

I thought I could control PMIC without hibernation.

So I tried the third project, PmicDisable, then set p0[5] logical low level, without hibernation.

The result was: LED on the board went out for an instant, but the system reset.

I think in the third project I succeeded to disable PMIC, but somewhat the PMIC enabled again. 

I can't understand why this occur. I didn't configure the HibernateWakeupSource(no need, PMIC enabing source is pmic_wakeup_in),  and polarity is set as Cy_SysPm_PmicDisable(CY_SYSPM_PMIC_POLARITY_HIGH). Is there other wakeup source? Temporary wakeup_in logical High In lower voltage shutdown process?

Enabling PMIC was not needed for all cases, PMIC was automatically enabled(Cy_SysPm_PmicIsEnabled() was true).

I finally did not solved the problem. Is it helpful for you?

Regards,

0 Likes

I wrote the third project firmware to another board, and then,

1) Set pmic_wakeup_in = Low, power on the system, and then power went out(all LEDs off).

2) Then, when turn on the pmic_wakeup_in from Low to High, the system woke up to restart.

This is the operation just I intended to.

The reason of repeating reset would be the failure of the board. I tried another board, and its power went off when wakeup_in was Low again.

Keiichi

0 Likes
alexmercer
Level 1
Level 1
First like received First reply posted Welcome!

That's quite great information for me, thanks for sharing such great info.

Leather Jacket Men's

Hello, alexmercer.

I'm glad to hear that.

I tried another experiment.

I canceled the command Cy_SysPm_PmicDisable(CY_SYSPM_PMIC_POLARITY_HIGH), this means PMIC controll enable all the time.

And then changed p0[5] output level from High to Low.

The LED went out and reset immediately, just like when I disable PMIC control.

This means that disabling the PMIC (power down except backup domain) can do without command Cy_SysPm_PmicDisable().

I guess the Cy_SysPm_PmicDisable() command only watch the pmic_wakeup_in(P0[4]), though I can't check it because system reset after disabling PMIC.

I think if I can keep the PMIC disable state(power down), I would be able to reset system by switching pmic_wakeup_in(P0[4]) from Low to High.

I'll try this farther.

Regards,

Keiichi

0 Likes