现在很多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的功耗如下:

a5024024-6de7-11ed-8abf-dac502259ad0.png

PCF8563芯片的内部功耗如下:

a5302598-6de7-11ed-8abf-dac502259ad0.png

由以上两个图片的功耗对比可知,使用相同的RTC供电电池的情况下,PCF8563可使用的时间更长,从低功耗的角度来看:应该选择外部RTC。

四:实现难度

从代码实现难度的角度考虑,内部RTC比较容易实现。仍然以STM32为例,现在STM32的底层封装库、cube代码生成器等均可以产生内置RTC的相关代码,实现较简单。外部RTC需要特定的串行协议(I2C或SPI),并且需要将其特殊的格式转换为可用格式。相对代码的实现难度来说,外部RTC更不容易实现。

但是:从目前常用的RTC芯片来看,外部RTC也都会有各种单片机的参考例程,实现起来也较为简单,代码实现难度并不是制约芯片选型的重要参考点。

五:安全性

虽然内部RTC占据了价格又是,单使用内部RTC还有另一个缺点:当代码崩溃或MCU芯片损坏时,内部RTC的时间会丢失,而使用带外置电池的独立RTC芯片可以在MCU代码崩溃时仍然可以全天候运行。从安全性的角度考虑,更应该选择外部RTC。

六:总结

通过以上准确性(RTC精度)、成本、功耗、实现难度、安全性等各方面的比较来看,外部独立RTC更胜一筹,所以现在常见的设计上更多的是使用外部独立RTC。

文章来自:电子发烧友网

Loading

作者 yinhua

发表回复