"你会迟到, 但时间不会。"
- 本杰明弗兰克林
如果本杰明弗兰克林用石英晶体和实时时钟(RTC)来计时,恐怕他要重新考虑他的这一座右铭。晶体的精度在整个温度范围内变化很大,会使时钟变慢(某些情况下使时钟变快)。
对于绝大多数电子应用,带有32.768kHz音叉晶体的RTC是标准的计时参考方案。RTC通过秒计数确定时间和日期,这需要从32.768kHz晶体振荡器中获取1Hz的时钟信号。当前时间和日期保存在一组寄存器中,通过通信接口进行访问。
问题的根源
用RTC计时本身并没有错,但计时精度取决于参考时钟。遗憾的是,典型的32.768kHz音叉晶体不能够在宽温范围内提供较高精度,在整个温度范围内精度呈抛物线型(图1),室温下(+25°C)精度典型值为±20ppm。相当于每天慢或快1.7秒,即每年误差10.34分钟。图1所示,在高温和低温区域精度变差,精度会低于150ppm (典型值),相当于每天误差13.0秒,每年误差1.3小时。图1. 32.768kHz典型音叉晶体精度随温度的变化曲线
特定频率(f)和温度(T)的典型晶体频率偏差(Δf):
Δf/f = k(T - To)2 + fo
其中,f是晶体标称频率,k是曲率常数,T是温度,To转折温度, fo是转折温度下的相对频偏。
从上式可以看出:只有三个变量控制着每个晶体的温度特性,这三个参数是:曲率常数、转折温度、转折温度下的相对频偏。曲率常数对全温范围内频偏的抛物线形状影响最大,但这个常数本身的偏差很小。不同的转折温度可以将抛物线左/右平移,不同的转折温度下的相对频偏可以将抛物线上下平移。
各种解决方案
对于要求精确计时的系统,有几种选择可以克服晶体的不准确,包括合理选择晶体、集成晶体、校准寄存器或温补晶振。筛选晶体
提高计时精度的方法之一是要求供应商提供室温精度处于指定范围的晶体。这需要供应商在发货前对每个晶体室温下的频偏进行分析,显然,这种方法将大大增加成本。另外,这种方法不会影响晶体精度的抛物线特征。通过筛选,晶体生产厂商可以提供室温下±20ppm至±10ppm,甚至±5ppm的频率精度。但是,这些精度得到提升的晶体并没有改善高温和低温区域的精度。
根据对精度和负载电容的要求,生产中仍然会有部分损耗。结果造成能够满足条件的晶体数量不足。
制造商也可以通过控制晶体切割的角度来控制转折温度,但这种方法不切实际,而且花费很大。尽管晶体厂家尽其所能采用不同的自动生产流程,但仍然不能满足要求。生产厂商为一个非标准器件而打乱生产秩序的可能性非常小。
集成晶体
比晶体筛选进步的一种方法是,将音叉晶体和计时电路放在同一个封装里,把晶体供货的负担转移给了器件厂商。集成晶体解决了设计者选购晶体的难题,也降低了晶体参数符合计时器件要求的难度,同时还简化了PCB布板。一些集成电路公司通常不具备测试和调理晶体参数的能力,他们从供应商那里采购晶体,并将晶体和裸片安装在一个封装内。这种方法一般不会提高精度。Dallas Semiconductor也提供过类似的集成器件,例如DS1337C、DS1338C、DS1339C、DS1340C和DS1374C,这些器件可以很好地工作在精度要求不高的计时产品。
另外,有些能够生产晶体的公司可以将未封装的晶体放入一个小尺寸的密封封装内,并对晶体进行调理使其满足精度要求。如上所述,这种方法并不改变抛物线的特征,仅仅可以提高室温下的精度。高温和低温区域的精度并未得到改善。这种方法的缺点是陶瓷封装和晶体调理增加了总体成本。
温度补偿
为了实现宽温范围内的精确计时,某种形式的温度补偿是必须的。温度补偿需要定期检测温度, 然后根据温度调整晶体的负载,或者是调整时钟源。温度补偿可以用两种方法之一实现。第一种方法是研究一种温度补偿算法,利用温度传感器,由计时器件完成模拟或数字的时钟补偿。这种方法通常需要较大的开发和校准投入。另一种方法是使用现成的温补晶振(TCXO)作为RTC的时钟源。
校准寄存器
某些RTC,例如DS1340,提供了一个数字校准寄存器,可以定时调整时间。这种方法并不改变晶体的任何特性,但可以上下调整32.768kHz抛物线,在指定温度使精度达到0.0ppm。这是通过在振荡器分频链上加、减时钟脉冲实现的。需要减去的时钟脉冲(负校准减时钟),或需要插入的时钟(正校准加时钟)由寄存器的数值设置。加时钟脉冲,时间加快;减时钟脉冲,时间减慢。图2给出的典型曲线表明抛物线上移至精度接近0.0ppm的位置,温度监测点为+55°C。图2. 典型晶体曲线向上平移,使精度接近0.0ppm
带有校准寄存器的RTC配合温度传感器,能够在指定温度达到-2.034ppm到+4.068ppm的计时精度。在高温和低温端点,调整范围为-126ppm至+63ppm,无法将曲线校准到接近0.0ppm。需要处理器周期性地测量温度,对校准寄存器以及其它RTC寄存器进行调节。
这种方法的主要难点在于需要工厂校准。因为每个晶体的特征不同,因此需要对每个RTC提供一个指定温度范围内的校准表,从而花费较大的人力和较长时间。通常采用非易失寄存器保存校准数据,也大大增加了器件成本。另外,校准过程并未补偿晶体的老化,可能存在±3ppm的变化。
尽管校准寄存器不能自动地随着温度的变化进行调整,但它仍然提高了计时精度。
温补晶振
另一种有效提高计时精度的方法是使用具有温度补偿的32.768kHz晶体振荡器(TCXO),如DS32kHz,作为独立的RTC时钟源。这种器件经过工厂校准,在扩展工业级温度范围内(-40°C至+85°C)能够提供±7.5ppm的精度。TCXO的作用是将晶体抛物线变得平坦(图3)。图3. 利用TCXO使晶体特性曲线平坦
TCXO的内置温度传感器可以定时检测器件温度,用得到的温度值在查找表内查询,查找到的参数用来计算并产生内部32.768kHz晶体的负载电容,以达到0.0ppm的精度。查找表置于芯片内,不需要额外的输入。
晶体在生产过程中优化于特定的负载电容,数据资料中提供了相应的规格。如果实际负载电容不符合规格要求,将相对于标称频率产生偏差。这也正是TCXO提高精度的途径。如果知道特定晶体在每个温度点的频偏,TCXO可以通过调整负载电容来调整频偏。
使用现成的TCXO不需要研究算法,也不需要工厂校准。缺点是增加了成本,这种多芯方案也增大了PCB面积。
最精确的方案―集成RTC/TCXO/晶体
理想的精确计时器件是集成了RTC、TCXO和石英晶体的单芯片方案。DS3231S、 DS3232和即将公布的DS3234既是这样的器件。这些器件具有无与伦比的精度:0°C到+40°C范围内精度为±2.0ppm,相当于每年±1.0分钟;-40°C到0°C和+40°C到+85°C范围内为±3.5ppm,相当于每年±1.8分钟。最差情况下所能提供的精度如图4所示。如上所述,集成TCXO使晶体原有的抛物线特性曲线变成较为平坦的曲线。图4. DS3231S在最差情况下的精度
与上述TCXO方案相同,完全集成的器件经过工厂校准,不需要用户校准,也不需要额外的开发投入。它将同样的功能集成在更小的面积上,同时也降低了系统成本。
与独立TCXO不同的是,其内部寄存器可以通过串行接口访问。芯片内部的器件老化寄存器可以提供进一步的负载电容和温度补偿,补偿晶体老化造成的精度损失。