许多电子系统都会提供实时时钟给不同功能使用,例如系统的日历时间、时间戳记和定时工作的启动,定期唤醒系统执行测量作业。实时时钟已出现多年,但它们从未针对嵌入式应用进行优化。市面上许多解决方案已将实时时钟和完整的“独立”功能整合至微控制器,将微控制器整合的许多好处付诸实现。本文将讨论传统实时时钟与微控制器的结合如何发挥一加一大于二的效果。
日期时间功能
图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内存和实时时钟方块本身。然而这套模块的真正优点仍在于它把这些功能整合至一颗芯片,免除了使用多颗不同元器件所造成的芯片间数据互传负担。
电源故障处理
芯片内置稳压器能连接至2.0~5.25V的任何电压。处理器实际使用2.5V电源,但它会与芯片的I/O系统电源分开,这样微控制器就能在不需要任何中间界面的情形下用于2.0~5.25V的各种系统。VIO接脚可连接至系统电压供应,让I/O和系统的其他装置使用相同的电压操作。除了主电源供应外,VBAT输入还能连接至电压最低1.0V的电池,由它做为SmaRTClock的备用电源。
整合式SmaRTClock的第一个优点是系统电源供应若降至VBAT电压以下,芯片内含的电池切换电路就会从SmaRTClock自动切换至备用电池。这表示实时时钟能在电源故障时继续操作,SmaRTClock模块内的专属备用RAM内存也能继续保持它们的数据。系统只要利用简单软件将系统状态定时储存至这个备用RAM内存,就能在主电源供应恢复正常后让系统回到已知状态,系统测量所得的重要数据也不会遗失。微控制器重置时,系统会执行一个例程来检查重置资源寄存器
(reset sources register) 以便判断系统电源是否曾经中断,重置例程接着会读取备用RAM内存的内容并将处理器和工作寄存器的重要内容复原。举例来说,这颗元器件若用于电表,它很容易就能追踪停电的日期时间和长短,同时精确保存停电前的用电信息。等到主电源恢复后,电池切换电路会将微控制器切换回主电源,然后将电池备用电源切断以确保备用电池拥有最长的寿命。
时钟故障处理
对于使用独立元器件的传统系统而言,时钟故障的危害性可能还超过电源故障。C8051F410通常会将芯片内建振荡器产生的24.5MHz信号倍频成为49MHz的系统频率,同时确保它在整个操作电压和温度范围内都能达到2%的精确度。它也能使用外接石英晶体,但这种做法并无必要,因为芯片内建振荡器的精确度已足以让内部功能和序列通讯操作达到规格要求。SmaRTClock可透过XTAL3和XTAL4管脚连接低成本的32.768kHz石英晶体,无论SmaRTClock电源来自系统主电源或备用电池,石英晶体都会透过SmaRTClock模块从这些管脚汲取电源。
在传统系统中,如果32.768kHz石英晶体出现问题,系统就会随着实时时钟源消失而遭受无法复原的故障。整合式SmaRTClock提供独立的时钟消失侦测电路,石英晶体故障会让元器件执行重置动作,同时设定重置资源寄存器里的某个标志来显示石英晶体故障。等到微控制器完成重置动作后,系统即可从仍由备用电池供电的备用RAM内存里取出最后一次储存的系统状态信息。
32.768kHz石英晶体还能切换成主系统频率,使得微控制器能在低频率下操作。这能用于需要定时进入睡眠状态、但仍须在低速和低耗电模式下继续工作的系统。
把常用功能整合至微控制器还能带来其他明显好处,例如电表、销售点终端装置和数据记录器等许多系统都会用到定时唤醒、服务提醒和时间戳记等功能。增加“故障安全”功能也有很大好处,它能在电源或时钟故障时将系统复原,同时保存“最后一次已知”的系统状态信息。
SmaRTClock增加了许多有用功能,因为它能在1个系统时钟周期内从暂停操作模式迅速回到最高系统频率的全速操作模式,同时提供3项重要的故障安全功能:确保时钟功能在电源故障时继续运作、确保系统在时钟故障时继续运作、以及将系统还原为最后已知状态以便让它们从故障中复原。
|