实时时钟(RTC)作为嵌入式系统的"心跳"发生器,在主电源中断时必须依靠备份电源维持计时功能。我曾参与过多个工业级设备的RTC电源设计,深刻体会到备份电源的选择直接影响系统可靠性。以DS1307为例,其典型待机电流仅500nA,但若选错电源类型,可能导致时间丢失或电池漏液等严重问题。
RTC备份电源的核心技术指标包括:
关键提示:选择备份电源时,必须同步考虑生产工艺。例如采用SMT工艺的超级电容可以直接回流焊,而锂原电池则需要后焊或使用电池座。
CR2032等锂锰电池是最常见的RTC备份电源,我在智能电表项目中多次使用。其优势在于:
但存在三个致命限制:
典型应用电路:
c复制// STM32的VBAT引脚配置示例
void RTC_Battery_Config(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
__HAL_RCC_PWR_CLK_ENABLE();
HAL_PWR_EnableBkUpAccess();
__HAL_RCC_BKP_CLK_ENABLE();
// VBAT引脚配置为模拟输入
GPIO_InitStruct.Pin = GPIO_PIN_3;
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}
在需要频繁充放电的场合,我推荐使用超级电容。最近一个车载项目选用Panasonic 5.5V/0.1F黄金电容,实测表现:
设计要点:
code复制C = (I × t) / ΔV
其中:I=RTC电流,t=需备份时间,ΔV=允许电压降
DS1337等带涓流充电的RTC芯片看似适合可充电电池,但实际应用中我踩过这些坑:
血泪教训:某次使用DS1308搭配NiMH电池,未禁用内部充电器导致电池膨胀漏液,整批产品召回!
早期RTC如DS1307采用简单的电压比较切换,我在老旧设备维修时常见这类设计:
circuit复制VCC ──┬───[R1]───┬── VBAT
| |
[D1] [CMP]
| |
GND VOUT
缺陷分析:
新型RTC如DS3234采用带隙基准源,我的实测数据显示:
参数对比表:
| 特性 | DS1307 | DS3234 |
|---|---|---|
| 切换阈值 | 1.25×VBAT | 1.8V(固定) |
| 工作电流 | 500nA | 200nA |
| 充电电流 | 无 | 可编程(0.5-3mA) |
| 温度漂移 | ±100ppm/℃ | ±5ppm/℃ |
去年某批量生产故障让我总结出这些必测项:
在太阳能IoT项目中,我通过以下措施将系统功耗降低60%:
现象:某医疗设备RTC每月快3分钟
排查:
近期测试Maxim的DS3235M发现三个突破:
对于需要极高可靠性的应用,我现在会推荐这种方案组合:
code复制DS3235M + BR1225 + TPS3808(电压监控)
成本虽高,但在-40℃~85℃范围内实测年误差<2分钟。