AN0173——HICK时钟校准应用指南
支持型号列表:
AT32F403Axx
1 简介
AT32系列MCU内部都有提供适合运行的内部高速时钟(HICK),其本质就是内置于芯片的RC振荡器。在25℃下,其典型值频率8MHz的精度由工厂校准到±1%,在-40到105℃,该内部高速时钟的精度达到±2.5%,可见精度会受到温度的影响。
为了降低环境温度对精度造成的影响,用户可在运行时间隙调用校准程序来进行校准。
2 校准及原理
2.1 校准
每颗AT32 MCU芯片的内部高速时钟在出厂时都有被进行校准,待芯片复位后该校准值会自动加载到CRM_CTRL寄存器的HICKCAL[7:0]位,与CRM_CTRL寄存器的HICKTRIM[4:0]位一起作用于HICK的校准,HICKTRIM[4:0]的复位值为0x20(不同系列该复位值可能不同),在外部电压和温度变化对内部高速时钟频率产生影响时,可通过软件对HICKTRIM[4:0]这些位进行编程,对HICK进行微调,以达到满足要求的频率。
2.2 原理
校准的原理就是对当前的HICK频率进行较为准确的测量,参考实际的测量值与典型值的比较结果,判断是否达到校准的目的。此处用到的HICK测量方法不是采用外部设备来进行的,而是使用片上定时器来对外部精准的时钟源周期进行计数,因定时器的计数时钟源于HICK,这样就可以通过精确的外部时钟源周期来推算出当前HICK的频率值。
在本应用示例及文档中,精准时钟源采用的是LEXT(通常RTC使用的32kHz晶振),图示显示了如何使用定时器计数个数来测量参考信号周期。
如上所示,为提高计数测量的准确性,实际应用中可连续对多个LEXT周期进行计数,再用求平均值的方式来减小误差。频率计算公式:
Frequencytimer = (count1 + count2 + …+ countN)/ N * Frequencylext
因HICK直接或间接的提供给系统时钟,再通过timer频率和主频的关系,推算出此时HICK的频率,当前HICK的频率值减去HICK典型值就是此时HICK的误差频率:
Error(Hz) = Frequencyhick – 8000000
2.3 硬件实现
由校准原理可知,要想计算出HICK的频率就必须得有一个准确的校准源,该文档示例推荐的是采用LEXT,并且该校准源需要连接到定时器的输入捕获通道。AT32 MCU可通过CLKOUT功能将LEXT校准源输出,再通过内部配置功能或外围连线将CLKOUT与定时器的输入通道连接
2.4 校准方法
前文提到设置CRM_CTRL寄存器的HICKTRIM位可调整HICK输出,校准流程首先按HICKTRIM的默认值为基点配置,准确的测量出此时HICK实际的频率值,然后按实际频率与典型值计算得到频率误差,判断该误差是否在可接受误差值范围内,如果是,则返回成功,如果不是,则轮询下一个HICKTRIM设置点,再进行测量判断,直到轮询完毕返回失败。
3 使用说明
如下为具体的校准流程图,详细描述参见附件源文档
AN0173_HICK_Calibration_Application_Note_V2.0.0.zip