树莓派PICO:DS1302时钟芯片(MicroPython)

准备材料

  1. 树莓派PICO(MicroPython)
  2. DS1302时钟模块
  3. 0.96 OLED ![在这里插入图片描述](https://img-blog.img.cn/4b787e6587a54df79fdfc0495ef4ce1a.jpeg#pic_center

DS1302简述

其实作为一个时钟芯片,DS1302的性能不算优异,这次写这篇文章也只是为了记录一下在MicroPython环境下编写的DS1302库文件的过程与中间的一些问题。 具体DS1302的参数和引脚等信息可以参考数据手册(文末 获取)和文章:

遇到问题

GPIO同时读写

首先第一个问题是芯片的DAT(I/O)引脚要同时进行读写操作,在开始的实验中,我发现GPIO在Pin.OUT模式下也可以进行读取,但是在编写程序时读取到的数据总是255(I/O引脚一直高电平),但是在这时如果单独将该引脚接入高低电平还是可以读取到内容。 为了解决这个问题,我用逻辑分析仪对I/O引脚的值进行读取,发现不论芯片I/O引脚输出什么,最终读到的都是高电平,由此才使用了另外一种方式:在每次读取过程时将GPIO重新初始化到Pin.IN模式进行读取。

芯片内部寄存器存储格式

在第一次进行读写操作成功时,我以为芯片的数据存储就是简单的十六进制存储即可,但是后来读出的格式切切实实告诉我我错了。时钟芯片考虑到时分秒与年月日各自的进位关系,对各自寄存器的存储格式也是各有不同,每个寄存器只有按照规定的格式写入,时间的增长方式才会符合预期。

最终效果

资料获取

git:https://github.com/LNfromNorth/DesktopClock/tree/main/OtherPy/DS1302

经验分享 程序员 微信小程序 职场和发展