211 lines
6.5 KiB
C
211 lines
6.5 KiB
C
|
/**
|
||
|
*******************************************************************************
|
||
|
* @file hc32f4a0_ctc.h
|
||
|
* @brief This file contains all the functions prototypes of the Clock Trimming
|
||
|
* Controller(CTC) driver library.
|
||
|
@verbatim
|
||
|
Change Logs:
|
||
|
Date Author Notes
|
||
|
2020-09-01 Hongjh First version
|
||
|
2020-10-30 Hongjh Refine CTC initialization structure
|
||
|
@endverbatim
|
||
|
*******************************************************************************
|
||
|
* Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved.
|
||
|
*
|
||
|
* This software component is licensed by HDSC under BSD 3-Clause license
|
||
|
* (the "License"); You may not use this file except in compliance with the
|
||
|
* License. You may obtain a copy of the License at:
|
||
|
* opensource.org/licenses/BSD-3-Clause
|
||
|
*
|
||
|
*******************************************************************************
|
||
|
*/
|
||
|
#ifndef __HC32F4A0_CTC_H__
|
||
|
#define __HC32F4A0_CTC_H__
|
||
|
|
||
|
/* C binding of definitions if building with C++ compiler */
|
||
|
#ifdef __cplusplus
|
||
|
extern "C"
|
||
|
{
|
||
|
#endif
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* Include files
|
||
|
******************************************************************************/
|
||
|
#include "hc32_common.h"
|
||
|
#include "ddl_config.h"
|
||
|
|
||
|
/**
|
||
|
* @addtogroup HC32F4A0_DDL_Driver
|
||
|
* @{
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* @addtogroup DDL_CTC
|
||
|
* @{
|
||
|
*/
|
||
|
|
||
|
#if (DDL_CTC_ENABLE == DDL_ON)
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* Global type definitions ('typedef')
|
||
|
******************************************************************************/
|
||
|
/**
|
||
|
* @defgroup CTC_Global_Types CTC Global Types
|
||
|
* @{
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* @brief CTC initialization structure definition
|
||
|
*/
|
||
|
typedef struct
|
||
|
{
|
||
|
uint32_t u32RefClockFreq; /*!< Reference clock frequency
|
||
|
This parameter should refer user manual recommended values */
|
||
|
uint32_t u32RefClockSrc; /*!< Reference clock source selection
|
||
|
This parameter can be a value of @ref CTC_Reference_Clock_Source */
|
||
|
uint32_t u32RefClockDiv; /*!< Reference clock division
|
||
|
This parameter can be a value of @ref CTC_Reference_Clock_Division */
|
||
|
float32_t f32ToleranceDeviation; /*!< CTC Tolerance bias.
|
||
|
This parameter can be a value between Min_Data=0.0 and Max_Data=1.0(100%) */
|
||
|
uint32_t u32TrimValue; /*!< CTC TRMVAL value
|
||
|
This parameter can be a value between Min_Data=0 and Max_Data=0x3F */
|
||
|
} stc_ctc_init_t;
|
||
|
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* Global pre-processor symbols/macros ('#define')
|
||
|
******************************************************************************/
|
||
|
/**
|
||
|
* @defgroup CTC_Global_Macros CTC Global Macros
|
||
|
* @{
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* @defgroup CTC_Reference_Clock_Source CTC Reference Clock Source
|
||
|
* @{
|
||
|
*/
|
||
|
#define CTC_REF_CLK_CTCREF (0UL) /*!< Clock source: CTCREF */
|
||
|
#define CTC_REF_CLK_XTAL32 (CTC_CR1_REFCKS_1) /*!< Clock source: XTAL32 */
|
||
|
#define CTC_REF_CLK_XTAL (CTC_CR1_REFCKS) /*!< Clock source: XTAL */
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* @defgroup CTC_Tolerance_Deviation_Max CTC Tolerance Deviation Max
|
||
|
* @{
|
||
|
*/
|
||
|
#define CTC_TOLERANCE_DEVIATION_MAX (1.0F)
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* @defgroup CTC_Flag CTC Flag
|
||
|
* @{
|
||
|
*/
|
||
|
#define CTC_FLAG_TRIM_OK (CTC_STR_TRIMOK) /*!< Trimming OK flag */
|
||
|
#define CTC_FLAG_TRIM_OVF (CTC_STR_TRMOVF) /*!< Trimming overflow flag */
|
||
|
#define CTC_FLAG_TRIM_UDF (CTC_STR_TRMUDF) /*!< Trimming underflow flag */
|
||
|
#define CTC_FLAG_BUSY (CTC_STR_CTCBSY) /*!< CTC busy flag */
|
||
|
#define CTC_FLAG_ALL (CTC_FLAG_TRIM_OK | \
|
||
|
CTC_FLAG_TRIM_OVF | \
|
||
|
CTC_FLAG_TRIM_UDF | \
|
||
|
CTC_FLAG_BUSY)
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* @defgroup CTC_Reference_Clock_Division CTC Reference Clock Division
|
||
|
* @{
|
||
|
*/
|
||
|
#define CTC_REF_CLK_DIV8 (0UL) /*!< REFCLK/8 */
|
||
|
#define CTC_REF_CLK_DIV32 (1UL) /*!< REFCLK/32 */
|
||
|
#define CTC_REF_CLK_DIV128 (2UL) /*!< REFCLK/128 */
|
||
|
#define CTC_REF_CLK_DIV256 (3UL) /*!< REFCLK/256 */
|
||
|
#define CTC_REF_CLK_DIV512 (4UL) /*!< REFCLK/512 */
|
||
|
#define CTC_REF_CLK_DIV1024 (5UL) /*!< REFCLK/1024 */
|
||
|
#define CTC_REF_CLK_DIV2048 (6UL) /*!< REFCLK/2048 */
|
||
|
#define CTC_REF_CLK_DIV4096 (7UL) /*!< REFCLK/4096 */
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* Global variable definitions ('extern')
|
||
|
******************************************************************************/
|
||
|
|
||
|
/*******************************************************************************
|
||
|
Global function prototypes (definition in C source)
|
||
|
******************************************************************************/
|
||
|
/**
|
||
|
* @addtogroup CTC_Global_Functions
|
||
|
* @{
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* @brief Start CTC trimming.
|
||
|
* @param None
|
||
|
* @retval None
|
||
|
*/
|
||
|
__STATIC_INLINE void CTC_Start(void)
|
||
|
{
|
||
|
WRITE_REG32(bM4_CTC->CR1_b.CTCEN, 1UL);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @brief Stop CTC trimming.
|
||
|
* @param None
|
||
|
* @retval None
|
||
|
*/
|
||
|
__STATIC_INLINE void CTC_Stop(void)
|
||
|
{
|
||
|
WRITE_REG32(bM4_CTC->CR1_b.CTCEN, 0UL);
|
||
|
}
|
||
|
|
||
|
en_result_t CTC_Init(const stc_ctc_init_t *pstcCtcInit);
|
||
|
en_result_t CTC_StructInit(stc_ctc_init_t *pstcCtcInit);
|
||
|
en_result_t CTC_DeInit(void);
|
||
|
void CTC_SetRefClockDiv(uint32_t u32Div);
|
||
|
void CTC_SetRefClockSrc(uint32_t u32ClockSrc);
|
||
|
void CTC_IntCmd(en_functional_state_t enNewState);
|
||
|
en_flag_status_t CTC_GetStatus(uint32_t u32Flag);
|
||
|
void CTC_SetTrimValue(uint32_t u32TrimValue);
|
||
|
uint32_t CTC_GetTrimValue(void);
|
||
|
void CTC_SetReloadValue(uint32_t u32ReloadValue);
|
||
|
uint16_t CTC_GetReloadValue(void);
|
||
|
void CTC_SetOffsetValue(uint32_t u32OffsetValue);
|
||
|
uint32_t CTC_GetOffsetValue(void);
|
||
|
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
#endif /* DDL_CTC_ENABLE */
|
||
|
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif /* __HC32F4A0_CTC_H__ */
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* EOF (not truncated)
|
||
|
******************************************************************************/
|