准备材料
树莓派PICO(MicroPython)DS1302时钟模块0.96 OLED![在这里插入图片描述](https://img-/4b787e6587a54df79fdfc0495ef4ce1a.jpeg#pic_center
DS1302简述
其实作为一个时钟芯片,DS1302的性能不算优异,这次写这篇文章也只是为了记录一下在MicroPython环境下编写的DS1302库文件的过程与中间的一些问题。
具体DS1302的参数和引脚等信息可以参考数据手册(文末 获取)和文章: 51单片机DS1302实时时钟
遇到问题
GPIO同时读写
首先第一个问题是芯片的DAT(I/O)引脚要同时进行读写操作,在开始的实验中,我发现GPIO在Pin.OUT模式下也可以进行读取,但是在编写程序时读取到的数据总是255(I/O引脚一直高电平),但是在这时如果单独将该引脚接入高低电平还是可以读取到内容。
为了解决这个问题,我用逻辑分析仪对I/O引脚的值进行读取,发现不论芯片I/O引脚输出什么,最终读到的都是高电平,由此才使用了另外一种方式:在每次读取过程时将GPIO重新初始化到Pin.IN模式进行读取。
芯片内部寄存器存储格式
在第一次进行读写操作成功时,我以为芯片的数据存储就是简单的十六进制存储即可,但是后来读出的格式切切实实告诉我我错了。时钟芯片考虑到时分秒与年月日各自的进位关系,对各自寄存器的存储格式也是各有不同,每个寄存器只有按照规定的格式写入,时间的增长方式才会符合预期。
最终效果
资料获取
git:/LNfromNorth/DesktopClock/tree/main/OtherPy/DS1302