现在很多MCU内部都集成了内部RTC,但常见的设计中,为什么很多使用独立的RTC芯片?进行RTC设计选型的依据是什么?又该如何选择?
今天,我们重点介绍一下在进行设计时,应该如何选择RTC功能的实现?
真的要回答这个问题,至少涉及到准确性(RTC精度)、成本、功耗、实现难度、安全性等几个方面。
一、RTC精度
RTC的主要职责是提供准确的时间基准,计时不准的RTC(不管内部RTCor外部RTC)都毫无价值而言。
RTC的计时精度取决于晶振的选择、晶振负载电容的选择、电路设计、器件放置、阻抗控制、PCB走线规范、温度补偿等多个方面,而不是RTC芯片本身。
内部RTC和外部RTC相比较:
内部RTC更难达到更高的精度,因为目前很多的RTC芯片已经集成了温度补偿器,不需要为提高RTC精度而自行设计温度补偿;但内置与MCU内部的RTC大部分未设计温度补偿器。
单纯从RTC精度的方面来考虑,更应该选择外部RTC。
二、成本
相对于价格昂贵的温度补偿振荡器(±2~±5ppm),内部RTC±20ppm的精度在可接受范围内时(每天最多1.7s、一年大约10分钟),可以选择内部RTC。
使用内部RTC不需要单独的RTC芯片,有些芯片的内部RCT经过内部的温度补偿、精度校准等软件操作也可以达到相对可以接受的计时精度。
毫无疑问,从降低成本的角度考虑,更应该选择内部RTC。
三、功耗
以STM32和PCB8563的功耗来比较分析,STM32内部RTC的功耗如下:
PCF8563芯片的内部功耗如下:
由以上两个图片的功耗对比可知,使用相同的RTC供电电池的情况下,PCF8563可使用的时间更长,从低功耗的角度来看,应该选择外部RTC。
四、实现难度
从代码实现难度的角度考虑,内部RTC比较容易实现。仍然以STM32为例,现在STM32的底层封装库、cube代码生成器等均可以产生内置RTC的相关代码,实现较简单。
外部RTC需要特定的串行协议(I2C或SPI),并且需要将其特殊的格式转换为可用格式。相对代码的实现难度来说,外部RTC更不容易实现。
但是,从目前常用的RTC芯片来看,外部RTC也都会有各种单片机的参考例程,实现起来也较为简单,代码实现难度并不是制约芯片选型的重要参考点。
五、安全性
虽然内部RTC占据了价格又是,单使用内部RTC还有另一个缺点,那就是当代码崩溃或MCU芯片损坏时,内部RTC的时间会丢失,而使用带外置电池的独立RTC芯片可以在MCU代码崩溃时仍然可以全天候运行。
从安全性的角度考虑,更应该选择外部RTC。
六、小结
通过以上准确性(RTC精度)、成本、功耗、实现难度、安全性等各方面的比较来看,外部独立RTC更胜一筹,所以现在常见的设计上,更多的是使用外部独立RTC。