1 概念:
RTC(real time clock)实时时钟,主要作用是给Linux系统提供时间。RTC因为是电池供电的,所以掉电后时间不丢失。Linux内核把RTC用作“离线”的时间与日期维护器
2 首先介绍一下RTC的硬件原理:
从网上整理的资料,个人感觉概念和功能说的还算比较全:
在系统掉电的情况下,RTC单元可由后备电池供电,保证RTC的继续运行。RTC可通过STRB/LDRB指令向中央处理器传送8位BCD数据,这些数据包括秒、分、时、星期、日、月、年等。在S3C44B0嵌入式系统中,RTC单元时钟源采用单独外部晶振32.768kHz提供。RTC的系统框架图如图1所示
(1) rtc的特性:
个人总结rtc的特性只包含两部分:
- 可以将时间写入和读出,因为里面有独立的电池,所以系统在掉电的时候可以准确的读取出时间。
- 毫秒级别的报警器,可以作为定时中断的发生器,作为手机等产品的关机闹钟。
RTC的特性包括:
-包括秒、分、时、日、月、年的BCD数据
这些数据都是直接读/写RTC模块中的寄存器,这些寄存器包括:BCDSEC(秒)、BCDMIN(分)、BCDHOUR(时)、BCDDAY(日)、BCDDATE(星期)、BCDMON(月)、BCDYEAR(年)。
- 闰年发生器
闰年发生器是根据BCDDAY、BCDMON和BCDYEAR的数据来决定每个月的天数是28、29、30或31天。因为一个8位计数器只能表示2个BCD数据,因此不能直接判断00是否为闰年。例如,它不能区分1900年和2000年哪一个为闰年,而在S3C44B0中有可以处理这种闰年的硬件逻辑。
- 秒、毫秒中断报警
RTC可以根据用户的需求设定时间,并在设定的时间内产生一个报警信号。在正常操作模式下,产生报警中断;在掉电模式下,电源管理器唤醒信号和中断信号。
- 解决了“千年虫”问题
由于具有解决闰年的硬件逻辑,所以解决了“千年虫”问题。
- 独立的供电电源
RTC逻辑可用备用电池驱动,即使在系统掉电的情况下,RTC也可以通过它的独立供电电源向RTC模块供电。在此需要说明的是,在系统掉电的情况下,处理器和RTC逻辑间的接口应关闭,备用电池只驱动晶振电路和BCD计数器,这样才能将系统的功耗降到最低。
- 循环复位功能
循环复位功能是由RTC循环复位寄存器RTCRST执行的。
3 都有哪些RTC的芯片
DS323 mmu
HYMB563TS robot
DS1302需要使用外置晶振,且没有温度补偿,误差较大
SD2200
https://wenku.baidu.com/view/b80ea64bcf84b9d528ea7a13.html
带温度补偿的rtc 芯片:
EPSON公司的RX8025T
https://wenku.baidu.com/view/470e9855482fb4daa58d4bcf.html
Maxim公司的DS3231
DS3231内置晶振且有内部温度补偿,误差可做到1分钟每年
https://blog.youkuaiyun.com/dpjcn1990/article/details/92831577
SDIC公司的SD3025T
暂无资料
4 下面继续讲一些时钟同步的方法
网络标识和时区(英语:Network Identity and Time Zone,缩写NITZ)是一种通过无线网络向移动设备提供本地日期和时间、时区、夏时制偏移,以及网络提供商身份信息的机制,这通常用于移动电话自动更新系统时间。NITZ技术自GSM 阶段2 Release 96版本开始成为官方标准的可选部分之一。
使用GPS同步来授时能使时间分辨率达到毫秒级,NITZ标识则“对于时间只能精确到数分钟”
设置时区:
将时区文件 copy到这里 /etc/localtime