RTC 实时时钟:为什么拔掉电源,表还在走
更新时间:2026-09-12。本文是「集成电路大类 · 芯片设计」**入门层(beginner)**数字逻辑基础第九十二篇。手机、电脑、手表在完全断电几天后再开机,时间依然正确——靠的是一块独立供电的 RTC。它是数字逻辑里「计数器分频链 + 低功耗常开区」最典型的应用,和电源域/always-on、BCD 码紧密相关。
本文要回答的问题
- RTC 为什么主电源断了还能继续计时?备用电池怎么切换?
- 为什么它专用 32.768kHz 晶振,而不是别的频率?
- 秒、分、时、日、月、年是怎么自动进位的?闰年谁来算?
- 时间寄存器为什么常用 BCD 编码?软件怎么转成普通整数?
- 晶振 ±20ppm 意味着一个月差多少秒?温补 RTC 好在哪?
一、独立供电的低功耗计时器
RTC 是芯片/板上一个极省电(微安级)的独立计时单元,有主电源时由系统供电并给备用电池充电(或不充),主电掉电时由一颗 CR2032 等纽扣电池经二极管/电源多路器无缝切换继续供电,维持内部寄存器和振荡。这正是 SoC 里 always-on 电源域的典型成员(见电源域保持、POR/BOR)。它可以是外部芯片(DS3231/PCF8563 走 I2C)或 MCU/SoC 内置的 RTC 外设。
二、32.768kHz 与分频链
RTC 几乎都用 32.768kHz 音叉晶振。原因很数字化:32768 = 2^15,用 15 级二分频就能精确得到 1Hz 秒脉冲,分频链只用一串触发器即可,且这个频率下功耗极低、晶振体积小。秒脉冲驱动后续的时间计数器进位。
32.768kHz ─►[÷2^15 分频]─► 1Hz ─► 秒(0-59) ─► 分(0-59) ─► 时(0-23/1-12)
└► 日(按大小月/闰年) ─► 月(1-12) ─► 年 ─► 星期三、日历进位、闰年与 BCD
RTC 硬件自动处理人用的不规则进位:秒/分 0–59、时 0–23(或 12 小时制)、星期 1–7 循环;日期要按月份 28/30/31 进位,且 2 月要判断闰年(能被 4 整除、逢百需被 400 整除)自动给 29 天,年寄存器溢出到下一世纪。这些规则固化在 RTC 逻辑里,CPU 不必自己算。
时间寄存器普遍用 **BCD(二-十进制)**存放:一个字节高、低各 4 位分别表示十位和个位(如 0x59 = 59 秒),方便直接驱动数码管显示且符合人读习惯;软件读出后用 ((v>>4)*10 + (v&0xF)) 转二进制,写入时反向打包(BCD 概念见码制转换、数制与编码)。读写期间要注意计数器可能正在进位,多数 RTC 提供锁存/影子寄存器或要求在固定窗口读。
四、接口、闹钟与掉电切换
- 接口:外部 RTC 多为低速 I2C/SPI(如 DS3231、PCF8563),SoC/MCU 内置 RTC 则是一组内存映射寄存器;低速串行足够,因为时间每秒才变;
- 闹钟/中断:可设某时某分输出闹钟脉冲,或输出精确 1Hz/方波,用来在低功耗待机时唤醒主系统——主芯片深度睡眠,只有 RTC 常开区在跑,到点拉醒;
- 电源切换:主电与纽扣电池经两个二极管(或专用电源多路 IC)接到 RTC,主电在时由主电供电、掉电自动转电池,切换不能产生毛刺导致时间复位(与 POR 的可靠启动配合)。
五、精度:ppm、温漂与温补
普通 32.768kHz 晶振 ±20ppm 的频率误差意味着每秒差 20µs,一天约 ±1.7s、一个月接近 ±52s;音叉晶振还有明显温度曲线(偏离 25°C 走慢)。高精度场合用 TCXO 温补晶振(DS3231 内置,误差降到约 ±2ppm,一年才一分钟内),或软件按温度/实测频偏做数字校准(很多 RTC 有校准寄存器,周期性增减一个 32k 周期)。RTC 给的是「墙上时间(wall-clock)」,和系统运行计时用的高分辨率 tick/定时器分工不同:前者管年月日、长期连续、低精度即可,后者管延时/调度、高频但断电即失。
与现有篇目的衔接
总结
一句话总结:RTC 是一个微安级、可由 CR2032 纽扣电池在主电源掉电后无缝接替供电的独立计时日历单元,属于芯片的 always-on 电源域,内部用 32.768kHz(恰为 2 的 15 次方)音叉晶振经 15 级二分频精确得到 1Hz 秒脉冲,再驱动秒分时日月年和星期计数器,并由硬件自动完成 59/60、23/24 进位以及含「逢四闰、逢百不闰、逢四百再闰」规则的大小月和闰年日期逻辑;时间多以 BCD 编码(一字节高低半字节分别表示十位个位)方便显示,软件读写时做 BCD 与二进制转换并利用影子/锁存避免读到进位中间态;外部 RTC 常走低速 I2C/SPI、内置 RTC 是内存映射寄存器,可输出闹钟或 1Hz 信号在主系统深度睡眠时唤醒,主电与电池经二极管或电源多路器无毛刺切换;普通晶振 ±20ppm 大约一天差 1.7 秒且有温度漂移,高精度应用用 DS3231 这类内置 TCXO 的温补 RTC 降到约 ±2ppm 或用校准寄存器数字补偿;它提供长期连续但精度中等的墙上时间,与高频但断电即失的系统 tick 定时器分工互补。