给数据记录仪、定时器、闹钟系统加时间戳,最省心的就是RTC实时时钟模块。DS3231算得上其中的尖子生,自带温补晶振和电池座,掉电了还能继续走时,长期稳定性和精度都不是普通时钟芯片能比的。这篇把接线和用库设置时间的路走一遍。
为什么选DS3231而不是别的时钟芯片
DS3231内置了TCXO温补晶振,温度变了频率也不会飘,年误差只有几十秒,远不是DS1302这类老芯片能比的。它还有一个电池接口,主电源断掉后会自动切到电池,靠CR2032纽扣电池继续走时间,重新上电时间还是准的。

它走的就是标准I2C总线,功耗低、接线少,能直接和Arduino、树莓派甚至STM32对接,做个能长时间运行的时间基准很合适。
DS3231怎么接线
四个脚就够:VCC接5V或3.3V都行(工作电压3.3到5.5V)、GND接地、SDA接Arduino的A4、SCL接A5。板上两个输出脚,32K输出恒定32.768kHz方波可做参考时钟,SQW/INT可配置成1Hz方波或闹钟中断,普通计时用不上就先空着。

用库设时间和读取
库用RTClib最省事,构造对象时注意把地址设置成0x68,这是DS3231固定的I2C地址。上电先调adjust()把当前时间写进芯片,之后loop里调now()就能拿到完整年月日时分秒,还能配合测气温(芯片内置温度传感器,精度±3℃)。
踩坑两点
一是纽扣电池方向别插反,反了时间存不住;二是如果同一总线上还挂了别的I2C器件,确认它们的地址不和0x68打架。接线四根、电池放好、地址填对,一颗能长期走时的精密时钟就到手了。


地址0x68,挂别的I2C器件前先查一下不冲突
电池方向别插反,不然断电时间就存不住
TCXO温补真的准,年误差才几十秒,稳