Cypress has identified a defect with the Power Management function CyPmSaveClocks() in the cy_boot Component versions [2.30, 2.40, 3.0, 3.10, 3.20, 3.30, 3.40, and 4.0]. This function is called before entering the Sleep or Hibernate low-power modes. For most clock configurations that use the PLL, the PLL will be temporarily configured to generate a clock beyond the operating specifications of the device. This has been observed to cause unpredictable results on some devices. This issue affects PSoC 3, PSoC 5, and PSoC 5LP devices.
This issue has been fixed in PSoC Creator 3.0 Service Pack 1 with cy_boot version 4.10 (April 2014). Use the Component Update Tool to update the version of the cy_boot component used in all existing designs to 4.10 to resolve this issue
To work around the issue while using an earlier version of PSoC Creator, use the following steps to patch each design.
- Download the patch file CyPmClocks_Patch.zip from the PSoC Creator page (Downloads tab) and extract the files to a local folder.
There is a C source and a C header file for PSoC Creator 2.2 SP1 (CyPmClocks_22SP1.c and CyPmClocks_22SP1.h) and for PSoC Creator 3.0 (CyPmClocks_30.c and CyPmClocks_30.h).
- Launch PSoC Creator 2.2 or 3.0 and open the project you want to apply the fix to.
- Copy the downloaded files (CyPmClocks_22SP1.c and CyPmClocks_22SP1.h for the PSoC Creator 2.2 SP1 or CyPmClocks_30.c and CyPmClocks_30.h for the PSoC Creator 3.0) to the project’s folder where your main.c file is located (the .cydsn directory).
- From the Workspace Explorer, select the project’s Header Files folder.
- Right-click the Header Files folder in PSoC Creator, and then select Add > Existing Item to select the downloaded header file that you have saved (CyPmClocks_22SP1.h or CyPmClocks_30.h).
- From the Workspace Explorer, select the project’s Source Files folder.
- Right-click the Source Files folder, and then select Add > Existing Item to select downloaded source file (CyPmClocks_22SP1.c or CyPMClocks_30.c).
- Replace all calls in your application to CyPmSaveClocks() and CyPmRestoreClocks() with CyPmSaveClocksUpdated() and CyPmRestoreClocksUpdated().
- Include the header file that was just added to your project in the main.c file.
For example, if you are using PSoC Creator 3.0, add #include “CyPmClocks_30.h” in the same area as the other #include statements toward the top of the main.c file.