一、RTC介绍
实时时钟的缩写是RTC(Real_Time Clock)。RTC 是集成电路,通常称为时钟芯片。
实时时钟芯片是日常生活中应用最为广泛的消费类电子产品之一。它为人们提供精确的实时时间,或者为电子系统提供精确的时间基准,实时时钟芯片大多采用精度较高的晶体振荡器作为时钟源。有些时钟芯片为了在主电源掉电时,还可以工作,需要外加电池供电。
- 那么为什么我们需要一个单独的RTC?
原因是CPU的定时器时钟功能只在“通电时”运行,断电时停止。当然,如果时钟不能连续跟踪时间,则必须手动设置时间。如今,通过接收标准电波(传输各国标准时间的电波)来自动调整时间的手表越来越多,但它是一种不应该在室内携带的电子设备。
RTC有一个与CPU单独分离的电源,如纽扣电池(备用电池),即使主机电源关闭,它也保持滴答作响,随时可以实时显示时间。然后,当计算机再次打开时,计算机内置的定时器时钟从RTC读取当前时间,并在此基础上供电的同时,时间在其自身机制下显示。
同时RTC单元外接32.768 kHZ晶振,具有定时报警功能。
二、I.MX6ull RTC介绍
低功耗(电池支持)部分包含一个安全实时计数器,一个单调计数器和一个通用寄存器。SNVS的LP部分由电池供电,该电池在芯片断电时保持SNVS_LP寄存器的状态。
SNVS_HP部分实现了启用系统通信和SNVS_LP部分配置的所有功能
SNVS_LP部分提供安全存储和保护敏感数据的硬件。
2.1 SNVS_HP (high power domain)
SNVS_HP is partitioned into the following functional units(SNVS_HP分为以下功能单元):
• IP bus interface(IP总线接口)
• SNVS_LP interface(SNVS_LP接口)
• Real time counter with alarm (带报警功能的实时计数器)
• Control and status registers(控制和状态寄存器)
SNVS_HP位于芯片的电源供应域中,因此与芯片的其余部分一起接收电源。SNVS_HP提供了SNVS_LP和系统其余部分之间的接口;除了通过SNVS_HP,没有办法访问SNVS_LP寄存器。为了访问SNVS_LP寄存器,SNVS_HP必须上电。它使用寄存器访问权限策略来确定是否允许访问特定的寄存器。
2.2 SNVS_LP (low power domain)
SNVS_LP是一个数据存储子系统。它的目的是存储和保护系统数据,而不管系统主电源状态如何。
SNVS_LP处于始终上电的域,该域是一个独立的电源域,拥有自己的电源。
2.3 SNVS interrupts and alarms
2.3.1 Time counter alarm
SNVS_HP非安全RTC有自己的时间警报寄存器。任何应用程序都可以更新此寄存器。SNVS_HP时间警报可以生成中断以提醒主机处理器,并可以从其低功耗模式之一唤醒主机处理器。请注意,如果电源关闭,则无法唤醒整个系统,因为此警报也会关闭。
2.3.2 Periodic interrupt
SNVS_HP非安全RTC包含周期性中断。当RTC的选定位发生零到一或一到零转换时,就会产生周期性中断。周期性中断源是根据HP控制寄存器中的PI_FREQ字段设置从HP RTC的16位中选择的。这种位选择还定义了周期性中断的频率。
编程思路
- 设置寄存器访问不受权限限制
- 使能SNVS时钟
- 停止RTC计数器,等待RTC计数器停止成功
- 设置日期
- 开启RTC计数器,等待RTC计数器开启成功