DS1302异常 秒数超过60 走时过快问题

2023/02/28

问题描述

最近实验室学弟在使用蓝桥杯51开发板时,发现部分开发板DS1302时钟模块出现异常。具体表现为:主控芯片从DS1302中读取的秒数大于60,且DS1302走时过快(读取的“分”约一秒加一,也就是说从模块中读取的时间比正常时间快约60~80倍),用示波器测量后发现DS1302的 32.768K 晶振并未起振。

解决方法

经过测试后发现是DS1302寄存器写入数据越界出现的问题。例如,当我们写入 2023-16-28 13:50:50 时,由于16月超过最大值12月,即出现此问题。
此时,我们只需要将正确的时间写入对应的寄存器即可解决此问题。例如将 2023-16-28 13:50:50 改为2023-2-28 13:50:50 。
DS1302寄存器地址

总结与闲谈

由于将同一个hex文件下载到同时购买的六块开发板中后两块正常四块异常,加之出现异常的开发板中DS1302的晶振均未起振,所以一开始怀疑是同一批次产品中的DS1302硬件出现问题。向客服询问后得知并未收到类似问题的反馈,那绝大概率还是自己配置的问题。下载售后提供的测试hex后发现时钟模块恢复正常,再次查看DS1302的数据手册后也并未发现相应的控制寄存器,当时真是百思不得其解。于是去百度搜索DS1302晶振不起振的相关案例,直到发现 DS1302无法正常工作 文章,大体得知当寄存器的数据越界时可能会导致DS1302的晶振异常。于是自己尝试往正常板子中写入 7时59分90秒 果然成功稳定复现该问题。
此时可以大体得出结论:DS1302芯片在出厂时寄存器内带有不正确的时间数据,但新购买的板子是自带有测试程序的,当不同同学拿到板子后,有的同学运行了DS1302的测试程序,测试程序将正确的年月日时分秒写入了DS1302的寄存器。也有的同学直接用自己的代码覆盖了测试程序,该部分同学只将正确的时分秒写入了寄存器中,但错误的年月日依旧没有被重新写入,进而导致了同样的hex文件(该文件只往DS1302写入了时分秒数据)在有的板子上是正常运行的,有的板子上是异常的。
该问题真的是挺离谱的吧,真的没有想到寄存器数据越界还会导致晶振不起振,自己也跟开发板的售后客服聊了好久,最终算是解决了这个问题。
今天写下这篇文章算是自己经验总结的同时也希望为各位参加蓝桥杯或使用DS1302做项目的同学避一下坑吧。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值