一、RTC介绍
·RTC:实时时钟(Real-Time Clock)的缩写,是一种集成电路,通常称为时钟芯片。
·应用:广泛应用于消费类电子产品,提供精确的实时时间或为电子系统提供时间基准。
·工作原理:采用精度较高的晶体振荡器作为时钟源,有些时钟芯片在主电源掉电时需要外加电池供电。
·重要性:CPU的定时器时钟功能在断电时停止,RTC则通过独立电源(如纽扣电池)保持时间的连续跟踪。
二、i.MX6ULL RTC介绍
·SNVS:Secure Non-Volatile Storage,提供RTC功能。
·SNVS结构:
SNVS_HP(高功耗域):
·功能单元:IP总线接口、SNVS_LP接口、带报警功能的实时计数器、控制和状态寄存器。
·作用:提供系统通信和SNVS_LP部分的配置。
SNVS_LP(低功耗域):
·功能单元:非翻转单调计数器、通用寄存器、控制和状态寄存器。
·作用:存储和保护系统数据,不受主电源状态影响。
中断和报警:
·功能中断(active-low)
·实时时钟周期中断
关机(按钮)中断
·时间警报:SNVS_HP非安全RTC有自己的时间警报寄存器,可以生成中断并唤醒主机处理器。
·周期性中断:当RTC的选定位发生零到一或一到零转换时产生,频率由PI_FREQ字段设置。
三、SNVS重点寄存器介绍
·SNVS_HPCommandRegister (SNVS_HPCOMR):允许非特权软件访问所有SNVS寄存器。
·SNVS_HP/SNVS_LPControlRegister (SNVS_HPCR/SNVS_LPCR):控制寄存器。
·SNVS_HP/SNVS_LPStatusregister (SNVS_HPSR/SNVS_LPSR):状态寄存器。
·SNVS_HP/SNVS_LPRealTimeCounterMSBRegister(HPRTCMR/LPSRTCMR):计数器高15位。
·SNVS_HP/SNVSReal-TimeCounterLSBRegister(SNVS_HPRTCLR/SNVS_LPSRTCLR):计数器低17位。
·SNVS_HPTimeAlarmMSBRegister (SNVS_HPTAMR):时间警报高15位。
·SNVS_HPTimeAlarmLSBRegister (SNVS_HPTALR):时间警报低17位。
四、获取RTC时间
编程思路:
1.设置寄存器访问不受权限限制。
2.使能SNVS时钟。
3.停止RTC计数器,等待RTC计数器停止成功。
4.设置日期。
5.开启RTC计数器,等待RTC计数器开启成功。
6.每隔1秒读取RTC数据并输出。
7.日期与秒之间转换:
·convert_datetime_to_seconds:将日期时间转换为秒。
·convert_seconds_to_datetime:将秒转换为日期时间。
五、Alarm中断
·编程思路:
·注册RTC中断。
·设置RTC alarm日期。
·禁用RTC alarm。
·设置日期。
·启用RTC alarm。
·在中断处理函数中判断是否是RTC alarm中断,如果是则输出信息提醒闹钟时间到达。
·清除RTC alarm中断标志。