cancel
Showing results for 
Search instead for 
Did you mean: 

PSoC 6 MCU

AdIn_4606756
New Contributor

 

Hi folks,

I'm working on enabling the backup domain on the PSoC 6. I followed the instructions in this post, and found that the new code generated by PSoC Creator removed a call to Cy_SysLib_ResetBackupDomain() during initialization, as well as some code to disable and enable ILO. I then found that this function's description mentions an "ILO glitch" which can occur when the PSoC is reset due to POR/BOD/XRES while the backup voltage is supplied to the system. 

When I generate code with "vBackup Source" set to VDDD, this function is called, but when I generate code with "vBackup Source" set to "Dedicated supply" it is not. However, the description of this function would seem to imply that the ILO glitch it is meant to address will only occur if the system has a dedicated backup power supply connected to VBACKUP. Could anyone shed light on why this function call is necessary when there is no backup supply? Is there any harm in removing this call if VBACKUP is shorted to VDDD?

AdIn_4606756_0-1614128325383.png

 

0 Likes
1 Solution
DheerajK_81
Moderator
Moderator

Hello Adam,

If VDDD and VBACKUP are shorted, the Backup domain requires an explicit reset triggered by firmware using BACKUP_RESET.RESET which is done using CySysLib_ResetBackupDomain(). This reset is required after VBACKUP could have been invalid. It is only necessary to reset the Backup domain if RES_CAUSE register indicates a power-related reset was the cause.

With a bad backup supply it is possible to have the backup register corrupted. For this reason the CySysLib_ResetBackupDomain() was added on startup so that a reset can be triggered by firmware when we know that power went bad to reset these corrupted registers.

If VBACKUP goes down under ~0.5V, the ILO oscillations are stopped because its current source- PTAT turns off. New startup of the PTAT is needed when VDDBACKUP return to voltage >1V. This is the ILO glitch being referred to in the API description.

Now your question is valid as to why this code is only added when VBackup = VDD and not when VBackup = Dedicated Supply. So here are the reasons for it:

  1.       Backup domain does not have BOD detection. Backup domain should be reset by SW, if its power supply is dropped to less than 0.5V. It does not matter what power supply is used for VBACK (internal or external).
  2.       We know that during the system initialization (functions from cyfitter_cfg are called). Then we must reset backup domain in case the VBACK is supplied by VDDD because VBACK may have a voltage drop because of VDDD drop.
  3.       We do not reset the backup domain during the initialization in case VBACK has dedicated power supply. It is user’s responsibility to reset the backup domain if VBACK dedicated power supply drops to less than 0.5V.
  4.       We provide the flexibility to user. Having these options user can select two scenarios during initialization  – reset or not to reset the backup domain.

Hope this answers your query 🙂

Regards,
Dheeraj

View solution in original post

0 Likes
3 Replies
DheerajK_81
Moderator
Moderator

Hello @AdIn_4606756 ,

It's not clear which particular generated file you are referring to which is calling the Cy_SysLib_ResetBackupDomain function.

Please let us know so that we can understand your issue better.

Regards,
Dheeraj

0 Likes
AdIn_4606756
New Contributor

Hi Dheeraj,

The function is called in cyfitter_cfg.c, inside of Cy_SystemInit() if the reset reason is POR/XRES/BOD. See snippet below.

AdIn_4606756_0-1614273584001.png

Thank you.

-Adam

0 Likes
DheerajK_81
Moderator
Moderator

Hello Adam,

If VDDD and VBACKUP are shorted, the Backup domain requires an explicit reset triggered by firmware using BACKUP_RESET.RESET which is done using CySysLib_ResetBackupDomain(). This reset is required after VBACKUP could have been invalid. It is only necessary to reset the Backup domain if RES_CAUSE register indicates a power-related reset was the cause.

With a bad backup supply it is possible to have the backup register corrupted. For this reason the CySysLib_ResetBackupDomain() was added on startup so that a reset can be triggered by firmware when we know that power went bad to reset these corrupted registers.

If VBACKUP goes down under ~0.5V, the ILO oscillations are stopped because its current source- PTAT turns off. New startup of the PTAT is needed when VDDBACKUP return to voltage >1V. This is the ILO glitch being referred to in the API description.

Now your question is valid as to why this code is only added when VBackup = VDD and not when VBackup = Dedicated Supply. So here are the reasons for it:

  1.       Backup domain does not have BOD detection. Backup domain should be reset by SW, if its power supply is dropped to less than 0.5V. It does not matter what power supply is used for VBACK (internal or external).
  2.       We know that during the system initialization (functions from cyfitter_cfg are called). Then we must reset backup domain in case the VBACK is supplied by VDDD because VBACK may have a voltage drop because of VDDD drop.
  3.       We do not reset the backup domain during the initialization in case VBACK has dedicated power supply. It is user’s responsibility to reset the backup domain if VBACK dedicated power supply drops to less than 0.5V.
  4.       We provide the flexibility to user. Having these options user can select two scenarios during initialization  – reset or not to reset the backup domain.

Hope this answers your query 🙂

Regards,
Dheeraj

View solution in original post

0 Likes
Top labels