微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > MC9S08MG64实时时钟的校准和补偿(二)

MC9S08MG64实时时钟的校准和补偿(二)

时间:10-15 来源:互联网 点击:

存器的值匹配时FTMCH0引脚被置高,FTMCH0中断被触发。FTM 设置为128分频,0.5秒后FTMCH0输出变低。当输出变低时FTM的分频比设置为1。

4.2 硬件配置和例程

MCU的串口SCI0用来和PC通讯,在PC端可以使用超级终端。IIC用来读取集成温度传感器LM75B的数值。ADC模块读取NTC和电阻的分压。RTCCLKOUT (Pin20) 连接至FTMCH1 (pin 38)。1Hz秒脉冲FTMCH0 pin (Pin37)通过光耦隔离后输出,可以在校表台上测量。例程是用CodeWarrior 6.3 IDE开发的。

电路板上电后会进入自动补偿模式,根据环境温度的变化对实时时钟进行补偿。在超级终端中按任意键退出自动补偿模式,然后输入命令help可以显示所有可用的命令:

comp 显示当前的补偿间隔和补偿值,并输入新值。

temp 显示温度。

date 显示日期并输入新日期。

time 显示时间并输入新时间。

auto 重新进入自动补偿模式。

在FTMCH1的中断服务程序中,做FTMCH0输出比较时间的调整。如果当前补偿周期结束,它会检查有没有新的补偿间隔和补偿值。如果有则把新值载入补偿寄存器,并重新计算补偿调整值。

在补偿周期结束前,IRTC_STATUS 寄存器中的C_DON (IRTC_STATUS_L_C_DON) 会被置位。它被用来对齐补偿周期。

实时时钟iRTC的补偿机制可以在长时间内(》补偿间隔)输出高精度的秒脉冲,FTM则用来保证在补偿间隔之内每个秒脉冲周期相等。

说明

当开发GW64工程时,推荐在iRTC的初始化中禁止掉iRTC中断,或者定义iRTC中断服务程序。因为即使当下载一个新程序时,iRTC模块仍然保留着上一次的配置(iRTC可以由VBAT供电,MCU掉电时,iRTC的配置仍然保留)。在初始化时必须禁止掉iRTC中断,或者定义其中断服务程序。否则可能发生不可预期的错误。

5 补偿流程

使用上述软件,我们可以不用关心补偿算法的细节,按照下面的简单步骤来完成晶体振荡电路在全温度范围内的自动补偿:

(1) 把补偿间隔和补偿值设置为0(Interval = 0, Value = 0),在全工作温度范围内调整温度并记录频率偏差值。测量点越多越好。

(2) 利用测量点拟合抛物线(a(x - t)2 + k),得出抛物线参数a, t, k。

(3) 把参数写入程序中。

对于同一批次的晶体,如果晶体的一致性比较好,可以用上面的步骤确定出参数a,和t。在批量生产时,在任意一个温度点测量晶体的误差,即可反推出k。其他温度点的误差即可通过抛物线公式计算得出,根据误差查表得到需要的补偿间隔和补偿值。把补偿间隔和补偿值写入补偿寄存器即可得到精确的秒脉冲输出。参数a, t和k 都要保存在非易失性存储器中以防掉电丢失。

6 总结

本文介绍了实时时钟iRTC的补偿机制和如何输出均匀秒脉冲的问题,探讨了如何在全温度范围内对iRTC进行补偿。iRTC可以在长时间内保持高精度,FTM模块用来输出每个周期都很均匀的秒脉冲。在全温度范围内的补偿精度依赖于晶体的一致性,建议采用高精度,一致性好的晶体。温度测量器件基于成本考虑建议采用NTC电阻,根据测量值用查找表来确定温度,NTC电阻应尽量靠近晶体。MG64有一个内部温度传感器,通过标定也可以达到比较高的测温精度,使用它可以进一步降低系统的硬件成本。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top