现在很多MCU内部已经集成了内部RTC,但常见的设计中为何很多使用独立的RTC芯片?进行RTC设计选型的依据是什么?应该如何选择?
今天重点介绍一下在进行设计时应该怎么选择RTC功能的实现?真的要回答这个问题至少涉及到以下几点:准确性(RTC精度)、成本、功耗、实现难度、安全性等方面。
一:RTC精度
RTC的主要职责是提供准确的时间基准,计时不准的RTC(不管内部RTCor外部RTC)都毫无价值而言。
RTC的计时精度取决于晶振的选择、晶振负载电容的选择、电路设计、器件放置、阻抗控制、PCB走线规范、温度补偿等多个方面,而不是RTC芯片本身(后面的文章会专门讲解如何提高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。
文章来自:电子发烧友网