Application Note 16 of 80 002-26071 Rev. *B
2021-09-07
Clock configuration setup in TRAVEO™ T2G family CYT4D series MCUs
Configuration of the clock resources
Code Listing 3 Cy_SysClk_EcoEnable() function
cy_en_sysclk_status_t Cy_SysClk_EcoEnable(uint32_t timeoutus)
{
cy_en_sysclk_status_t rtnval;
/* invalid state error if ECO is already enabled */
if (SRSS->unCLK_ECO_CONFIG.stcField.u1ECO_EN != 0ul) /* 1 = enabled */
{
return CY_SYSCLK_INVALID_STATE;
}
/* first set ECO enable */
SRSS->unCLK_ECO_CONFIG.stcField.u1ECO_EN = 1ul; /* 1 = enable */
/* now do the timeout wait for ECO_STATUS, bit ECO_OK */
for (;
(SRSS->unCLK_ECO_STATUS.stcField.u1ECO_OK == 0ul) &&(timeoutus != 0ul);
timeoutus--)
{
Cy_SysLib_DelayUs(1u);
}
rtnval = ((timeoutus == 0ul) ? CY_SYSCLK_TIMEOUT : CY_SYSCLK_SUCCESS);
return rtnval;
}
Code Listing 4 Cy_SysClk_EcoConfigureWithMinRneg() function
cy_en_sysclk_status_t Cy_SysClk_EcoConfigureWithMinRneg(uint32_t freq, uint32_t cSum, uint32_t esr, uint32_t
driveLevel, uint32_t minRneg)
{
/* Check if ECO is disabled */
if(SRSS->unCLK_ECO_CONFIG.stcField.u1ECO_EN == 1ul)
{
return(CY_SYSCLK_INVALID_STATE);
}
/* calculate intermediate values */
float32_t freqMHz = (float32_t)freq / 1000000.0f;
float32_t maxAmplitude = (1000.0f * ((float32_t)sqrt((float64_t)((float32_t)driveLevel / (2.0f *
(float32_t)esr))))) /
(M_PI * freqMHz * (float32_t)cSum);
float32_t gm_min = (157.91367042f /*4 * M_PI * M_PI * 4*/ * minRneg * freqMHz * freqMHz * (float32_t)cSum *
(float32_t)cSum) /
1000000000.0f;
/* Get trim values according to caluculated values */
uint32_t atrim, agcen, wdtrim, gtrim, rtrim, ftrim;
atrim = Cy_SysClk_SelectEcoAtrim(maxAmplitude);
if(atrim == CY_SYSCLK_INVALID_TRIM_VALUE)
{
return(CY_SYSCLK_BAD_PARAM);
}
agcen = Cy_SysClk_SelectEcoAGCEN(maxAmplitude);
if(agcen == CY_SYSCLK_INVALID_TRIM_VALUE)
{
return(CY_SYSCLK_BAD_PARAM);
}
wdtrim = Cy_SysClk_SelectEcoWDtrim(maxAmplitude);
if(wdtrim == CY_SYSCLK_INVALID_TRIM_VALUE)
{
return(CY_SYSCLK_BAD_PARAM);
}
(2) Check if ECO_OK is already enabled.
(3) Write “1” to the ECO_EN bit, and
make ECO available.
(4) Check the state of ECO_OK
and the state of TIMEOUT.
(5) Subtract the TIMEOUT value.
(6) Check whether processing exited the
loop at TIMEOUT.
Trim calculation by software
Get the Atrim value. See Code Listing 5.
Get the AGC enable setting. See Code Listing 6.
Get the Wdtrim value. See Code Listing 7.