基于温度补偿RTC模块的晶体晶振参考程序说明
来源:http://www.jinluodz.com 作者:金洛鑫电子 2019年09月20
说到带有温度补偿性能的器件,首先想到大多数都是温补振荡器,这也是比较知名的一种电子元器件了,但是RTC实时时钟也同样可以参与温度补偿设计,而且带有温度补偿的实时时钟参考方案里,也有几颗不同的晶体或振荡器加持.晶振本身就是一种用于时钟的频率组件,基本上带有基准时钟模块的产品都需要用到,所谓的温度补偿简单的说,就是当周围温度骤然上午或下降,超过本身的温度范围,会利用自身的精准性和补偿功能,让周围温度回归到正常的范围内.
实时时钟(RTC)用于许多需要跟踪时间和日期信息的应用中.将专用RTC器件添加到电路板的常见解决方案会增加BOM成本并增加电路板空间.更好,更具成本效益的替代方案是将RTC功能实现到微控制器中,该微控制器也执行其他有用的任务.温度补偿实时时钟(TC-RTC)参考设计是一个完整的RTC解决方案,包括实现具有全时钟和日历功能以及温度补偿的RTC所需的所有固件和硬件.与涉及提供类似功能的专用RTC的解决方案相比,该解决方案可显着节省成本.
TC-RTCRD固件实现以下功能:
1.实时时钟,计算秒,分,小时,日期,星期几,月和年,闰年补偿有效期至2099年
2.温度引起的晶振频率变化的自动时间补偿
3.56字节NVRAM,数据存储在内部闪存中
4.SMBus/I2C接口或UART接口,具体取决于加载的固件
5.1/2Hz速率的方波输出信号
硬件概述:
TC-RTC参考设计硬件实现为评估板,如图1所示.使用连接到定时器输入的外部32kHz晶振作为RTC的时钟源.RTC评估板提供两个接口-UART和SMBus/I2C. 这是一款小型混合信号MCU,具有丰富的功能集.下面列出了本参考设计中使用的MCU的功能:
1.高速8051内核,25MHz时钟,可提供高达25MIPS的吞吐量
2.8kB闪存(在系统可编程)和256字节内部数据RAM
3.25MHz内部振荡器和外部晶振/石英晶体振荡器输入
4.8位500kspsADC
5.片上温度传感器
6.硬件增强的UART和SMBus串口
7.三个通用16位计数器/定时器
8.使用定时器和外部时钟源的实时时钟模式
有关该MCU的更多详细信息,请参阅本设计中使用的C8051F300MCU的引脚连接如图2所示.电路板原理图和材料清单包含在”温度补偿实时时钟参考设计套件用户指南”中.
图2.TC-RTCC8051F300MCU引脚连接
导致石英晶体频率偏差的主要参数如下:
1.环境温度
2.晶莹剔透
3.供电电压
其中,影响晶体频率的主要因素是环境温度.图3显示了谐振器频率随温度变化的曲线图.从抛物线曲线可以看出,如果温度从室温值(25°C)升高或降低,RTC将浪费时间.注意,RTC永远不会有由温度变化(即增益时间)引起的正误差,因为最大频率是室温.
图3.抛物线温度曲线
最大频率变化约为-0.04ppm/ºC2.因此,频率偏差可表示如下:
△f/f=0.04ppmx(△T)2
△T=环境温度-25ºC
计算时间补偿:
TC-RTC参考设计固件每分钟重复以下步骤一次,以计算和累计丢失的时间.
1.ADC用于测量片内温度传感器的芯片温度.”3.3.计算环境温度”描述了所涉及的计算.
2.然后使用ADC测量的值计算以ppm为单位的偏差,并将结果存储在存储器中.这表示需要补偿的微秒数.
在24小时结束时,总累积误差被加到RTC时间以完成补偿过程.假设温度在一分钟内没有广泛变化.片上温度传感器产生的电压输出与'F300芯片的绝对温度成正比,如图4所示.该电压与芯片温度之间的典型关系如下所示=×TEMPc+897mV
VTEMP是温度传感器电压输出(mV)
TEMPC是模具温度(ºC) RTC寄存器和非易失性用户RAM:
图5显示了RTC寄存器和NVRAM的地址.RTC寄存器存储当前时间和日期信息.这些寄存器保存在'F300器件内部易失性RAM中. TC-RTC还提供一个56字节的用户NVRAM,存储在'F300设备内部闪存中.这可以用作通用非易失性存储区域.Flash NVRAM的当前值始终镜像在RAM中的56字节阵列中.这是因为'F300闪存只能在512字节的页面中擦除.因此,将一个或多个字节写入NVRAM是一个三步过程-首先将字节写入RAM阵列,擦除Flash页面,将56字节阵列从RAM复制到闪存.
该NVRAM的一个有用的应用是在电源故障之前存储时间和日期信息.存储的信息稍后可用于调试或其他目的.为此,应监控电源线,一旦检测到跌落,应从RTC寄存器读取时间和日期信息并写入NVRAM.这应该由外部设备管理,而不是由TC-RTC固件自动完成.
图5.RTC和NVRAM寄存器
ADC配置:
ADC配置为使用温度传感器作为正输入,接地作为负输入.VDD用作参考有源晶振电压,SAR转换时钟设置为5MHz.可编程增益放大器(PGA)设置为增益2.通过收集和平均温度传感器输出的65536(64k)样本,执行过采样以提高测量精度.首次对TC-RTC板供电-在加载固件后,执行1点偏移校准,如下所示:
1.等待15秒(浸泡时间).这允许模具加热到正常的操作温度.
2.使用上述ADC设置测量温度传感器输出.注意:校准测量假设芯片温度为28ºC.
3.将测量值存储在非易失性闪存中.
定时器配置:
'F300MCU有三个通用定时器.所有这三个定时器都由TC-RTC固件使用.定时器配置并用于以下目的:
1.Timer0-用于提供SMBusSCL低超时.
2.Timer1-用作UART波特率发生器,或用于SMBus空闲超时(SCL高)检测.
3.Timer2-它使用外部振荡器作为时钟源,用于RTC时间测量.
4.4.UART接口
TC-RTC提供的UART接口是一个简单的2线接口,仅使用TXD和RXD线路.它支持三个命令.
SMBus界面:
可以进行两种类型的数据传输:从主发送器到寻址的从接收器(WRITE)的数据传输,以及从寻址的从发送器到主接收器(READ)的数据传输.主器件启动两种类型的数据传输,并在SCL上提供串行时钟脉冲.SMBus接口可以作为主设备或从设备运行,并且支持同一总线上的多个主设备.如果两个或多个主设备尝试同时启动数据传输,则采用仲裁方案,其中单个主设备总是赢得仲裁.
典型的SMBus事务包括START条件后跟地址字节(Bits7-1:7位从机地址;Bit0:R/W方向位),一个或多个字节数据和STOP条件.在高SCL期间,必须通过低SDA确认(通过主机或从机)接收的每个字节(参见图6).如果接收设备没有ACK,则发送设备将读取NACK(不确认),其在高SCL期间是高SDA. TC-RTC固件使用SMBus接口作为从器件,从器件地址为0xD0.可以通过修改”F30x_TCRTC_Interface.h”中的SLA_ADD宏定义来更改此设置.
实时时钟(RTC)用于许多需要跟踪时间和日期信息的应用中.将专用RTC器件添加到电路板的常见解决方案会增加BOM成本并增加电路板空间.更好,更具成本效益的替代方案是将RTC功能实现到微控制器中,该微控制器也执行其他有用的任务.温度补偿实时时钟(TC-RTC)参考设计是一个完整的RTC解决方案,包括实现具有全时钟和日历功能以及温度补偿的RTC所需的所有固件和硬件.与涉及提供类似功能的专用RTC的解决方案相比,该解决方案可显着节省成本.
TC-RTCRD固件实现以下功能:
1.实时时钟,计算秒,分,小时,日期,星期几,月和年,闰年补偿有效期至2099年
2.温度引起的晶振频率变化的自动时间补偿
3.56字节NVRAM,数据存储在内部闪存中
4.SMBus/I2C接口或UART接口,具体取决于加载的固件
5.1/2Hz速率的方波输出信号
硬件概述:
TC-RTC参考设计硬件实现为评估板,如图1所示.使用连接到定时器输入的外部32kHz晶振作为RTC的时钟源.RTC评估板提供两个接口-UART和SMBus/I2C. 这是一款小型混合信号MCU,具有丰富的功能集.下面列出了本参考设计中使用的MCU的功能:
1.高速8051内核,25MHz时钟,可提供高达25MIPS的吞吐量
2.8kB闪存(在系统可编程)和256字节内部数据RAM
3.25MHz内部振荡器和外部晶振/石英晶体振荡器输入
4.8位500kspsADC
5.片上温度传感器
6.硬件增强的UART和SMBus串口
7.三个通用16位计数器/定时器
8.使用定时器和外部时钟源的实时时钟模式
有关该MCU的更多详细信息,请参阅本设计中使用的C8051F300MCU的引脚连接如图2所示.电路板原理图和材料清单包含在”温度补偿实时时钟参考设计套件用户指南”中.
图2.TC-RTCC8051F300MCU引脚连接
1.环境温度
2.晶莹剔透
3.供电电压
其中,影响晶体频率的主要因素是环境温度.图3显示了谐振器频率随温度变化的曲线图.从抛物线曲线可以看出,如果温度从室温值(25°C)升高或降低,RTC将浪费时间.注意,RTC永远不会有由温度变化(即增益时间)引起的正误差,因为最大频率是室温.
图3.抛物线温度曲线
△f/f=0.04ppmx(△T)2
△T=环境温度-25ºC
计算时间补偿:
TC-RTC参考设计固件每分钟重复以下步骤一次,以计算和累计丢失的时间.
1.ADC用于测量片内温度传感器的芯片温度.”3.3.计算环境温度”描述了所涉及的计算.
2.然后使用ADC测量的值计算以ppm为单位的偏差,并将结果存储在存储器中.这表示需要补偿的微秒数.
在24小时结束时,总累积误差被加到RTC时间以完成补偿过程.假设温度在一分钟内没有广泛变化.片上温度传感器产生的电压输出与'F300芯片的绝对温度成正比,如图4所示.该电压与芯片温度之间的典型关系如下所示=×TEMPc+897mV
VTEMP是温度传感器电压输出(mV)
TEMPC是模具温度(ºC) RTC寄存器和非易失性用户RAM:
图5显示了RTC寄存器和NVRAM的地址.RTC寄存器存储当前时间和日期信息.这些寄存器保存在'F300器件内部易失性RAM中. TC-RTC还提供一个56字节的用户NVRAM,存储在'F300设备内部闪存中.这可以用作通用非易失性存储区域.Flash NVRAM的当前值始终镜像在RAM中的56字节阵列中.这是因为'F300闪存只能在512字节的页面中擦除.因此,将一个或多个字节写入NVRAM是一个三步过程-首先将字节写入RAM阵列,擦除Flash页面,将56字节阵列从RAM复制到闪存.
该NVRAM的一个有用的应用是在电源故障之前存储时间和日期信息.存储的信息稍后可用于调试或其他目的.为此,应监控电源线,一旦检测到跌落,应从RTC寄存器读取时间和日期信息并写入NVRAM.这应该由外部设备管理,而不是由TC-RTC固件自动完成.
图5.RTC和NVRAM寄存器
ADC配置为使用温度传感器作为正输入,接地作为负输入.VDD用作参考有源晶振电压,SAR转换时钟设置为5MHz.可编程增益放大器(PGA)设置为增益2.通过收集和平均温度传感器输出的65536(64k)样本,执行过采样以提高测量精度.首次对TC-RTC板供电-在加载固件后,执行1点偏移校准,如下所示:
1.等待15秒(浸泡时间).这允许模具加热到正常的操作温度.
2.使用上述ADC设置测量温度传感器输出.注意:校准测量假设芯片温度为28ºC.
3.将测量值存储在非易失性闪存中.
定时器配置:
'F300MCU有三个通用定时器.所有这三个定时器都由TC-RTC固件使用.定时器配置并用于以下目的:
1.Timer0-用于提供SMBusSCL低超时.
2.Timer1-用作UART波特率发生器,或用于SMBus空闲超时(SCL高)检测.
3.Timer2-它使用外部振荡器作为时钟源,用于RTC时间测量.
4.4.UART接口
TC-RTC提供的UART接口是一个简单的2线接口,仅使用TXD和RXD线路.它支持三个命令.
SMBus界面:
可以进行两种类型的数据传输:从主发送器到寻址的从接收器(WRITE)的数据传输,以及从寻址的从发送器到主接收器(READ)的数据传输.主器件启动两种类型的数据传输,并在SCL上提供串行时钟脉冲.SMBus接口可以作为主设备或从设备运行,并且支持同一总线上的多个主设备.如果两个或多个主设备尝试同时启动数据传输,则采用仲裁方案,其中单个主设备总是赢得仲裁.
典型的SMBus事务包括START条件后跟地址字节(Bits7-1:7位从机地址;Bit0:R/W方向位),一个或多个字节数据和STOP条件.在高SCL期间,必须通过低SDA确认(通过主机或从机)接收的每个字节(参见图6).如果接收设备没有ACK,则发送设备将读取NACK(不确认),其在高SCL期间是高SDA. TC-RTC固件使用SMBus接口作为从器件,从器件地址为0xD0.可以通过修改”F30x_TCRTC_Interface.h”中的SLA_ADD宏定义来更改此设置.
正在载入评论数据...
相关资讯
- [2024-03-12]FCD-Tech新品FBT0503微型高稳定...
- [2024-03-12]FCD-Tech频率控制元器件产品F25...
- [2024-03-11]QVS石英晶体数据手册QPM2-21AF1...
- [2024-03-11]QVS新产品QCT95-CU3S-26.000发布...
- [2024-03-08]IQD几皮法会破坏你的计时准确性...
- [2024-03-05]GEYER频率控制元器件产品
- [2024-03-04]Jauch推出JTSxxHC系列可满足Str...
- [2024-03-02]NEL超低相位噪声O-CS8系列O-CS8...