发作品签到
专业版

带有EEPROM的DS3231实时时钟RTC模组

工程标签

560
0
0
0

简介

一款不算太完美,但是效果还是不错的DS3231模组

简介:一款不算太完美,但是效果还是不错的DS3231模组

开源协议

GPL 3.0

(未经作者授权,禁止转载)
创建时间:2024-07-18 13:11:07更新时间:2024-07-18 14:45:40

描述

  远在2022年,我其实做过一个DS3231的板子。那时候焊接技术不行,大量使用直插件;

                                         图1.2022年绘制的DS3231模块

而2年后的2024年,我的焊接技术勉强过得去了,又赶上6月的尾巴,有张卷可以用用,所以有了这个项目。板子长宽:50x25mm,后备电池采用市面上最常见的CR2032电池,它不算是太小巧,但也不大了,可以插在面包板、洞洞板以及直接接入跳线来使用,电路图非常简单,在IIC总线上还加上了一组AT24C02存储器,它可以存放一些运行信息,为了防止与你其它的EEPROM地址重复,R6\R7\R8是用来给你改变它的通信地址的短路块,请按需要将它们拉高或者拉低,后期有计划看看能不能用它自制一个时控开关。

                                      图2.2024年第二次绘制的DS3231模块

  我为这个模块配了几个程序,其中含有一个IIC设备测地址的程序用来确定当前IIC总线上所有设备的地址,以及我自己在2022年写的一个DS3231读写的Arduino库文件,由于我使用的是STM32duino,所以你需要把IIC总线设置到PB6\PB7两个脚进行测试。还有两点需要注意,DS3231最好不要超过3.3V供电,有可能导致烧毁。还有就是我的板子SQW脚没有进行上拉,需要使用SQW点亮LED的话,需要外挂一个上拉电阻,并且减小R9的阻值(你可以看见我板子上加了一个电阻,从3.3到SQW。这样SQW脚即可驱动LED)。

  以下是程序介绍:

1.为啥我要写这个库:其实,在我介绍DS1307那期视频中,那个作者就写了关于DS3231的库文件。本来,我也是想要利用的,不过,它有两个比较严重的问题——问题一就是它返回的数值是字符串,而我们有时需要对时间进行比较,字符串拆分后转换成数字。这需要代码来操作,不怎么方便,而且,外国佬设置时间的方式和格式和我们中国人的习惯不一样,很容易设错,我就是经常性的设错时间;问题二比较致命了,是我现在用STM32duino次数比较多,这些板子在使用老外他们写的库文件的过程中它会报错,导致STM32F用不了这款RTC。其实,还是主要想要学会写库这个技能,毕竟学会可以使自己写的代码简化很多,它也是了解Arduino的一种重要方式;给大家做点贡献也是一个原因,老是白嫖开源的库文件,我也要贡献一下自己的库,让大家白嫖才对嘛!所以,我决定,自己写一个这个库,来从新认识一下这款芯片。

                                                   图3.模块背面

2.这个库文件中的可以执行命令:

写入时间ds3231.SetTime1(a,b,c);这个命令负责把设定时间写入DS3231寄存区;a,b,c均为整数型变量,分别对应小时,分钟,秒钟。

写入时间ds3231.SetTime2(d,e,f,g);这个命令负责把设定的时间写入DS3231寄存区;d,e,f,g均为整数型变量,分别对应年,月,日,周;

写入SQW频率闪烁ds3231.sqw(h);此命令负责设定DS3231 SQW引脚输出一个频率脉冲,h=0时不输出,h=1时输出1Hz脉冲,其它频率脉冲没有做,其实其它频率的脉冲也用不到。

读出时间ds3231.YEAR( );此命令读出DS3231内部寄存区中的年,整数型变量。

读出时间ds3231.MOUNTH( );此命令读出DS3231内部寄存区中的月,整数型变量。

读出时间ds3231.DATE( );此命令读出DS3231内部寄存区中的日,整数型变量。

读出时间ds3231.WEEK( );此命令读出DS3231内部寄存区中的周,整数型变量。

读出时间ds3231.HOUR( );此命令读出DS3231内部寄存区中的时,整数型变量。

读出时间ds3231.MIN( );此命令读出DS3231内部寄存区中的分,整数型变量。

读出时间ds3231.SEC( );此命令读出DS3231内部寄存区中的秒,整数型变量。

读出温度ds3231.temp( );此命令读出DS3231内部寄存区中的温度,浮点型变量。

                                           图4.模块正在使用自制的Nucleo-48川崎镜试车

3.这个库底层是基于Wire库,需要在具有Wire库的情况下进行使用,不过一般你只要下载Arduino IDE,Wire库是自带的;兼容性已测试STM32duino,ATMEGA8A等系列,普通Arduino,均可正常运营。

测试方法:将附件中demo烧录到MCU,打开串口助手后,你将收到如下报文代表测试成功。

                              图5.MCU返回到串口助手的报文(温度/年月日/时分秒)

后续参加CW32的训练营去了,希望训练营的项目可以一次成功!我们下个开源工程再见!多谢各位同志的观看。

 

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
【工程文件】DS3231 RTC模组.zip
12
2
【原理图】DS3231实时时钟RTC模组.pdf
18
3
【BOM表】DS3231实时时钟RTC模组.xlsx
3
4
【制板文件】DS3231&EEPROM Clock 2.0.zip
5
5
【测试程序】IIC总线挂载设备地址查询.zip
12
6
【测试程序】DS3231时钟示例.zip
15
7
【库文件】DS3231时钟库文件.zip
48
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

评论

全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航