一. RTC实时时钟简介
实时时钟是很常用的一个外设,通过实时时钟我们就可以知道年、月、日和时间等信息。
因此在需要记录时间的场合,可以使用专用的实时时钟芯片来完成此功能。
但是,现在大多数的 MCU 或者 MPU 内部就已经自带了实时时钟外设模块。
I.MX6U 内部的 SNVS 就提供了 RTC 功能,本章我们就学习如何使用 I.MX6U 内部的 RTC 来完成实时时钟功能。
这个 RTC是属于 IMX6ULL芯片内部的外设。
注意:
I.MX6U
内部也有个
RTC
模块,但是不叫作“
RTC
”,而是叫做“
SNVS
”,这一点要注意!本章我们参考《
I.MX6UL
参考手册》,而不是《
I.MX6ULL
参考手册》,因为《
I.MX6ULL
参考手册》很多
SNVS
相关的
寄存器并没有给出来,不知道是为何?但是《
I.MX6UL
参考手册》里面是完整的。
二. RTC实验
I.MX6ULL-ALPHA 开发板上有一个纽扣电池,这个纽扣电池就是在主电源关闭以后为 SNVS 供电的。
SNVS 有两部分:SNVS_HP 和 SNVS_LP(恩智浦设计如此!没啥办法。。。)。
SNVS章节有些是跟加密有关的,需要与NXP签订NDA协议才可以拿到。
RTC分为SNVS_LP和SNVS_HP。
参考《I.MX6UL 参考手册》如下:
可以得出:
SNVS_LP:需要后备电源,即需要纽扣电池持续给其供电就可以工作。系统主电源和备用电源都可以为其供电。
SNVS_HP:整个开发板要给6ULL整个芯片供电后才工作。一旦开发板掉电之后,SNVS_HP停止工作(即这个RTC被全部清零)。
左大神提示:
如果做产品,千万不要用恩智浦内部的 RTC。可以使用外置RTC芯片,PCF8563。
首先外置RTC芯片的精度会高一点,内置的RTC精度会差一点。