许多电子系统都会提供实时时钟给不同功能使用,例如系统的日历时间、时间戳记和定时工作的启动,定期唤醒系统执行测量作业。实时时钟已出现多年,但它们从未针对嵌入式应用进行优化。市面上许多解决方案已将实时时钟和完整的“独立”功能整合至微控制器,将微控制器整合的许多好处付诸实现。本文将讨论传统实时时钟与微控制器的结合如何发挥一加一大于二的效果。
日期时间功能
图1是SmaRTClock模块的功能方框图。此电路可以执行实时时钟的所有传统功能以及某些“故障安全”(failsafe) 功能,例如电源故障和时钟源故障的复原。
图1 SmaRTClock模块方框图(略)
SmaRTClock的基本时钟单元是一个47位的自由定时器 (free-running counter),它能使用32.768kHz的石英晶体或是在20kHz或40kHz频率下操作的内部自激振荡器模式
(自激振荡器较省电,但精确度较差)。如果使用外接石英晶体,自由定时器第二个字节的最低有效位每秒就能准确计时。日历时间是由软件根据自由定时器来决定的,因此不需要另一组寄存器以传统格式记录日期时间。采用软件的好处之一是使用者更有能力控制系统操作,因为他们可以根据系统需求使用复杂或简单的算法,例如利用芯片内置的温度传感器把通常相当复杂的温度补偿功能加入算法中。除此之外,若系统不必经常唤醒,那么操作这项控制功能所造成的额外负担就显得微不足道。
SmaRTClock模块中有三个接口寄存器可用来控制内部寄存器,这将系统所需的特殊功能寄存器减至最少,同时提供一个抽象层以避免定时器内容被误改。使用者还可以设定闹铃寄存器
(alarm register),以便在47位自由定时器等于某个默认值时启动硬件中断来执行特定工作。这类功能通常又称为“输出比较”。
微控制器还能提供一种称为“暂停”模式的低耗电模式。在这种模式下,SmaRTClock模块产生的闹铃中断可以在一个系统时钟周期内将系统唤醒
(不需要重新设定器件)。
温度补偿
具备温度补偿的石英振荡器和实时时钟芯片通常比没有温度补偿功能的元器件贵很多,但由于石英振荡器的频率常会随着周围温度、电压和使用时间而改变,所以系统需要某种形式的温度补偿才能在很大的温度范围内提供精确的时间和日期数据。
幸而C8051F410微控制器已如图2所示内建精确度 3%的温度传感器,使得时间日期算法能够利用芯片内建温度传感器传来的信息进行温度补偿。这种做法的好处是系统可以使用不含温度补偿功能的低成本石英振荡器。
图2 C8051F410微控制器(略)
为了进行温度补偿算法,系统必须用芯片内置温度传感器每分钟测量周围温度一次。多数操作环境的温度在这么短时间里通常不会改变太多,因此系统会利用温度测量值来计算误差值
(以ppm表示) 并将结果 (所需补偿的微秒数) 储存至内存。系统会将每分钟传来的误差计算结果累加在一起,等到一天结束后就由算法补偿当天的时间误差。
SmaRTClock还会提供图2所示的许多其他功能,例如电源、电池切换电路、时钟源、备用RAM内存和实时时钟方块本身。然而这套模块的真正优点仍在于它把这些功能整合至一颗芯片,免除了使用多颗不同元器件所造成的芯片间数据互传负担。
|