现在很多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。END
来源:玩转单片机与嵌入式版权归原作者所有,如有侵权,请联系删除。▍推荐阅读我用这个技术,干掉几千行if else!麒麟9000s,并非来自SMIC,而是...程序员最容易读错的单词,听到status我炸了→点关注,不迷路←