Functions

group group_sysclk_trim_funcs

Functions

int32_t Cy_SysClk_IloTrim(uint32_t iloFreq)

Trims the ILO to be as close to 32,768 Hz as possible.

note

The watchdog timer (WDT) must be unlocked before calling this function.

Return

Change in trim value - 0 if done; that is, no change in trim value.

Function Usage

    /* Scenario: ILO needs to be trimmed to +/- 1.5% of nominal 32.768 kHz using
                 the IMO. The WDT is unlocked and all peripherals clocked using
                 the ILO are disabled. */

    #define  IMO_FREQ       8000000UL   /* 8 MHz IMO */

    /* Start the ILO clock measurement using the IMO */
    (void)Cy_SysClk_StartClkMeasurementCounters(CY_SYSCLK_MEAS_CLK_ILO,     /* Counter 1 clock  = ILO */
                                                0x7FUL,                     /* Counter 1 period = 128 */
                                                CY_SYSCLK_MEAS_CLK_IMO);    /* Counter 2 clock  = IMO */
    /* Wait for counter 1 to reach 0 */
    while(!Cy_SysClk_ClkMeasurementCountersDone()){}

    /* Measure clock 1 with the IMO clock cycles (counter 2) */
    uint32_t measuredFreq = Cy_SysClk_ClkMeasurementCountersGetFreq(false, IMO_FREQ);

    /* Attempt to trim the ILO by 1 iteration step */
    int32_t trimDelta = Cy_SysClk_IloTrim(measuredFreq);

    if(0 != trimDelta)
    {
        /* Not yet trimmed to 1.5% of nominal 32.768 kHz. Repeat measurement and trim. */
    }

Parameters

int32_t Cy_SysClk_PiloTrim(uint32_t piloFreq)

Trims the PILO to be as close to 32,768 Hz as possible.

Return

Change in trim value; 0 if done, that is, no change in trim value.

Function Usage

    /* Scenario: PILO needs to be trimmed to +/-250 ppm of nominal 32.768 kHz
    All peripherals clocked using the PILO are disabled. */
    #define  ECO_FREQ       24000000UL   /* 24 MHz ECO */

#ifdef CY_IP_MXBLESS
    /* Call PILO Initial trim */
    Cy_SysClk_PiloInitialTrim();

    /* Find out and store step size into stepSize variable */
    Cy_SysClk_PiloUpdateTrimStep();
#endif /* CY_IP_MXBLESS */

    /* Start the PILO clock measurement using the ECO */
    (void)Cy_SysClk_StartClkMeasurementCounters(CY_SYSCLK_MEAS_CLK_PILO,    /* Counter 1 clock  = PILO     */
                                                0x3FFUL,                    /* Counter 1 init value = 1024 */
                                                CY_SYSCLK_MEAS_CLK_ECO);    /* COunter 2 clock  = ECO      */
    /* Wait for counter 1 to reach 0 */
    while (!Cy_SysClk_ClkMeasurementCountersDone()){}

    /* Measure clock 1 with the ECO clock cycles (counter 2) */
    uint32_t measuredFreq = Cy_SysClk_ClkMeasurementCountersGetFreq(false, ECO_FREQ);

    uint32_t trimDelta;

    do
    {
        /* Attempt to trim the PILO with calculated stepSize via */
        trimDelta = Cy_SysClk_PiloTrim(measuredFreq);
    }while (0UL != trimDelta);

Parameters

void Cy_SysClk_PiloInitialTrim(void)

Initial trims the PILO to be as close to 32,768 Hz as possible.

This function takes ECO ALTHF as reference clock and calculate Fine PILO frequency trimming, by using binary search algorithm.

This function requires configured BLE ECO ALTHF clock. Use ModusToolbox Device Configurator to configure BLE ECO ALTHF clock.

note

This function must be call after every power-up.

note

The function is applicable only for a PSoC 6 BLE devices.

Function Usage


    /* Perform initial PILO trimming and update the trim step size. 
     * \note:
     * 1. Call those functions after every power-up.
     * 2. Those functions require a configured BLE ECO ALTHF clock. 
     *    Use ModusToolbox Device Configurator to configure the BLE ECO BLE ECO ALTHF
     *    clock. The recommended frequency is 16 Mhz. */    
    Cy_SysClk_PiloInitialTrim();
    Cy_SysClk_PiloUpdateTrimStep();

void Cy_SysClk_PiloUpdateTrimStep(void)

Calculates and updates the PILO trim step size (stepSize variable).

The stepSize value is used by Cy_SysClk_PiloTrim function during periodical PILO calibration.

This function requires configured BLE ECO ALTHF clock. Use ModusToolbox Device Configurator to configure BLE ECO ALTHF clock.

note

This function must be call after every power-up after call of Cy_SysClk_PiloInitialTrim function.

note

To achieve best trimming results it is recommended to configure BLE ECO ALTHF reference clock to 16 MHz.

note

The function is applicable only for a PSoC 6 BLE devices.

Function Usage


    /* Perform initial PILO trimming and update the trim step size. 
     * \note:
     * 1. Call those functions after every power-up.
     * 2. Those functions require a configured BLE ECO ALTHF clock. 
     *    Use ModusToolbox Device Configurator to configure the BLE ECO BLE ECO ALTHF
     *    clock. The recommended frequency is 16 Mhz. */    
    Cy_SysClk_PiloInitialTrim();
    Cy_SysClk_PiloUpdateTrimStep();