做带时间显示或者要记录时间戳的项目,单片机自己跑时基本靠不住。晶振有误差,断电就归零,温度一变走时还飘。这时候就得上一颗专用的实时时钟芯片,RX8025是这类芯片里性价比比较高的一个选择,网上模块卖得也便宜。
RX8025本质上是个带I2C接口的日历时钟芯片,内部集成晶振、分频、日历计数和电池切换电路。它能输出年月日时分秒,还带闰年补偿,2000年到2099年之间不用管闰年的事。工作电压范围宽,主电源掉电以后自动切到备用电池,靠一颗纽扣电池能撑好几年。
接线其实很简单,四根线:VCC、GND、SDA、SCL。SDA和SCL要接上拉电阻,一般4.7k到10k之间,模块上通常已经焊好了,自己画板的话别忘了。备用电池接在VBAT脚,用CR2032就够。要注意的是电池正极别接反,反接会直接把芯片内部电路烧掉。
I2C地址是固定的,读地址0x65,写地址0x64,跟常见的EEPROM不冲突。寄存器按BCD码存时间,秒、分、时、日、星期、月、年依次排开,读出来直接就是十进制显示的数值,不用再转换。第一次上电要初始化一次,把年月日和星期写进去,之后就不用管了,除非要改时间。
实际用下来最容易踩的坑是备用电池没电还以为是芯片坏了。纽扣电池放久了电压掉到2V以下,芯片切不过去,一断电时间就乱。判断方法很简单:断电十分钟再上电,读出来的时间如果回到默认值,基本就是电池的问题。
另一个坑是晶振精度。RX8025内部用的是32.768kHz晶振,常温下精度一般在正负5ppm左右,算下来一个月误差几秒钟。如果项目对时间精度要求高,比如要跟服务器对时,可以在软件里定期校准,或者选带温度补偿的型号RX8025T,精度能好一个数量级,当然价格也贵一些。
软件上建议做一个简单的对时机制:开机读一次时间,如果跟网络或者上位机给的时间差超过阈值,就写回芯片。平时读时间只读寄存器,不要频繁写,写操作多了会增加功耗,也容易出现I2C总线卡死。总线卡死的时候拉几次SCL时钟通常就能解开。
总的来说RX8025属于那种用起来省心的小芯片,接线少、驱动简单、成本低。做电表、门禁、数据记录仪、智能插座这类需要记时间的产品,选它不会出错。真要说缺点,就是封装偏小,手工焊接要有点耐心。
下一篇:没有了