1 /****************************************************************************** 2 * Copyright (C) 2018, Huada Semiconductor Co.,Ltd All rights reserved. 3 * 4 * This software is owned and published by: 5 * Huada Semiconductor Co.,Ltd ("HDSC"). 6 * 7 * BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND 8 * BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT. 9 * 10 * This software contains source code for use with HDSC 11 * components. This software is licensed by HDSC to be adapted only 12 * for use in systems utilizing HDSC components. HDSC shall not be 13 * responsible for misuse or illegal use of this software for devices not 14 * supported herein. HDSC is providing this software "AS IS" and will 15 * not be responsible for issues arising from incorrect user implementation 16 * of the software. 17 * 18 * Disclaimer: 19 * HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE, 20 * REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS), 21 * ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING, 22 * WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED 23 * WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED 24 * WARRANTY OF NONINFRINGEMENT. 25 * HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT, 26 * NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT 27 * LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, 28 * LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR 29 * INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT, 30 * INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA, 31 * SAVINGS OR PROFITS, 32 * EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 33 * YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR 34 * INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED 35 * FROM, THE SOFTWARE. 36 * 37 * This software may be replicated in part or whole for the licensed use, 38 * with the restriction that this Disclaimer and Copyright notice must be 39 * included with each copy of this software, whether used in part or whole, 40 * at all times. 41 */ 42 /*****************************************************************************/ 43 /** \file trim.h 44 ** 45 ** TRIM 数据结构及API声明 46 ** 47 ** 48 ** History: 49 ** - 2018-04-21 Lux V1.0 50 ** 51 *****************************************************************************/ 52 53 #ifndef __TRIM_H__ 54 #define __TRIM_H__ 55 56 /***************************************************************************** 57 * Include files 58 *****************************************************************************/ 59 #include "ddl.h" 60 #include "interrupts_hc32l136.h" 61 62 #ifdef __cplusplus 63 extern "C" 64 { 65 #endif 66 67 /** 68 ****************************************************************************** 69 ** \defgroup TrimGroup Clock Trimming (TRIM) 70 ** 71 ******************************************************************************/ 72 //@{ 73 74 /****************************************************************************** 75 ** Global pre-processor symbols/macros ('#define') 76 ******************************************************************************/ 77 78 /****************************************************************************** 79 * Global type definitions 80 ******************************************************************************/ 81 82 /** 83 ****************************************************************************** 84 ** \brief 监测模式使能枚举重定义 (MON_EN) 85 *****************************************************************************/ 86 typedef enum en_trim_monitor 87 { 88 TrimMonDisable = 0u, ///< 禁止 89 TrimMonEnable = 1u, ///< 使能 90 }en_trim_monitor_t; 91 92 /** 93 ****************************************************************************** 94 ** \brief 待校准/监测时钟选择枚举重定义 (CALCLK_SEL) 95 *****************************************************************************/ 96 typedef enum en_trim_calclksel 97 { 98 TrimCalRCH = 0u, ///< RCH 99 TrimCalXTH = 1u, ///< XTH 100 TrimCalRCL = 2u, ///< RCL 101 TrimCalXTL = 3u, ///< XTL 102 TrimCalPLL = 4u, ///< PLL 103 }en_trim_calclksel_t; 104 105 /** 106 ****************************************************************************** 107 ** \brief 参考时钟选择枚举重定义 (REFCLK_SEL) 108 *****************************************************************************/ 109 typedef enum en_trim_refclksel 110 { 111 TrimRefRCH = 0u, ///< RCH 112 TrimRefXTH = 1u, ///< XTH 113 TrimRefRCL = 2u, ///< RCL 114 TrimRefXTL = 3u, ///< XTL 115 TrimRefIRC10K = 4u, ///< IRC10K 116 TrimRefExtClk = 5u, ///< 外部输入时钟 117 }en_trim_refclksel_t; 118 119 /** 120 ****************************************************************************** 121 ** \brief 中断标志类型枚举重定义 122 *****************************************************************************/ 123 typedef enum en_trim_inttype 124 { 125 TrimStop = 0u, ///< 参考计数器停止标志 126 TrimCalCntOf = 1u, ///< 校准计数器溢出标志 127 TrimXTLFault = 2u, ///< XTL 失效标志 128 TrimXTHFault = 3u, ///< XTH 失效标志 129 TrimPLLFault = 4u, ///< PLL 失效标志 130 }en_trim_inttype_t; 131 132 /** 133 ****************************************************************************** 134 ** \brief TRIM 配置结构体定义 135 *****************************************************************************/ 136 typedef struct stc_trim_config 137 { 138 en_trim_monitor_t enMON; ///< 监测模式使能 139 en_trim_calclksel_t enCALCLK; ///< 校准时钟选择 140 uint32_t u32CalCon; ///< 校准计数器溢出值配置 141 en_trim_refclksel_t enREFCLK; ///< 参考时钟选择 142 uint32_t u32RefCon; ///< 参考计数器初值配置 143 144 func_ptr_t pfnTrimCb; ///< TRIM 中断服务回调函数[void function(void)] 145 }stc_trim_config_t; 146 147 /****************************************************************************** 148 * Global variable declarations ('extern', definition in C source) 149 *****************************************************************************/ 150 151 /****************************************************************************** 152 * Global function prototypes (definition in C source) 153 *****************************************************************************/ 154 ///<<功能配置及操作函数 155 ///<Trim 配置及初始化 156 en_result_t Trim_Init(stc_trim_config_t* pstcConfig); 157 ///<校准/监测启动/停止 158 en_result_t Trim_Run(void); 159 en_result_t Trim_Stop(void); 160 161 ///<参考计数器计数值获取 162 uint32_t Trim_RefCntGet(void); 163 ///<校准计数器计数值获取 164 uint32_t Trim_CalCntGet(void); 165 166 ///<中断操作相关函数 167 ///中断使能/禁止 168 en_result_t Trim_EnableIrq(void); 169 en_result_t Trim_DisableIrq(void); 170 ///<中断标志获取 171 boolean_t Trim_GetIntFlag(en_trim_inttype_t enIntType); 172 ///<中断标志清除 173 en_result_t Trim_ClearIntFlag(en_trim_inttype_t enIntType); 174 175 //@} // TrimGroup 176 177 #ifdef __cplusplus 178 #endif 179 180 181 #endif /* __TRIM_H__ */ 182 /****************************************************************************** 183 * EOF (not truncated) 184 *****************************************************************************/ 185 186 187