DIY一块DS3231的高精度时钟模块,让时钟DS3231/DS1302自动识别
来源:互联网 发布:密码破译软件 编辑:程序博客网 时间:2024/05/19 01:58
[DIY]DIY一块DS3231的高精度时钟模块,让时钟DS3231/DS1302自动识别
水晶城堡在设计之初,采用全直插设计理念,保证玩家在自行DIY的过程中,不会因为焊接贴片元器件而烦恼。所以水晶城堡电路板上使用的所有原器件都是直插封装,所有IC都是DIP封装。
其中RTC模块采用的是达拉斯DS1302,配合5PPM的石英晶体。
虽然水晶城堡的走时精度已经能满足一般需要,但对于追求高精度的用户来讲,DS3231SN才是最佳选择。
DS3231SN最大的特点是:1. 内部集成温度补偿晶体(TCXO);
2. 采用高速(400KHz)IIC通讯总线;
3. 工业级标准,工作温度-40至85摄氏度;并且在0至+40的温度范围内,能够提供最大1分钟每年的及时精度。所以DIY了一块使用了DS3231SN作为主要器件的高精度RTC模块。
其实在我的其他时钟上,用得都是DS3231SN这颗RTC芯片(比如我的QS18-12辉光钟,YS13-3荧光钟,LED点阵动画时钟等等),经过大量实践证明,温补晶振的确准却度高。
虽然官方数据是±1分钟每年,但是实际我感觉在室内温度变化不大的情况下,能够做到20秒/年。
模块上集成了3.3V LDO模块,为DS3231提供工作电压。并且集成了稳压和上拉电阻。
该模块专门为IV-11荧光管电子钟【水晶城堡】设计,直接将DS1302摘下,将该模块装入即可。
装入后,MCU会自动识别当前的RTC模块是DS1302还是DS3231,并采用不同方式进行通讯并正确运行。
当然,这需要程序上做好相应的检测功能及相应的功能函数。
SHOW一下该模块的实物图片以及安装到水晶城堡电路板上以后的效果:
其实在自动识别方面,做起来也不难,需要在开机的时候检测一下是DS1302还是DS3231芯片。
大致思路是这样:
1、需要一个全局变量,用于开机时存储检测结果,以便以后的操作识别是DS3231还是DS1302;
2、硬件上DS1302需要3跟I/O口,DS3231只需要两根;
3、开机瞬间,首先默认为DS1302,因为DS1302内部有RAM,所以可以选择2-3个字节进行写操作。写完以后立即读取内容,如果内容与写入的内容一致,则表示当前安装的是DS1302,否则即认为是DS3231。
经过反复测试,这个检测方法很好用。
其次是程序读写这两种芯片:
对于主函数来讲,对于获取时间和日期以及设定时间和日期,统统交给同一个函数来处理,在这个函数里面,再分别针对不同的芯片进行相应操作。
下面我贴出来我的获取时间日期和设定时间日期的函数。
鸡鸣狗盗而已,欢迎拍砖!
其中RTC模块采用的是达拉斯DS1302,配合5PPM的石英晶体。
虽然水晶城堡的走时精度已经能满足一般需要,但对于追求高精度的用户来讲,DS3231SN才是最佳选择。
DS3231SN最大的特点是:1. 内部集成温度补偿晶体(TCXO);
2. 采用高速(400KHz)IIC通讯总线;
3. 工业级标准,工作温度-40至85摄氏度;并且在0至+40的温度范围内,能够提供最大1分钟每年的及时精度。所以DIY了一块使用了DS3231SN作为主要器件的高精度RTC模块。
其实在我的其他时钟上,用得都是DS3231SN这颗RTC芯片(比如我的QS18-12辉光钟,YS13-3荧光钟,LED点阵动画时钟等等),经过大量实践证明,温补晶振的确准却度高。
虽然官方数据是±1分钟每年,但是实际我感觉在室内温度变化不大的情况下,能够做到20秒/年。
模块上集成了3.3V LDO模块,为DS3231提供工作电压。并且集成了稳压和上拉电阻。
该模块专门为IV-11荧光管电子钟【水晶城堡】设计,直接将DS1302摘下,将该模块装入即可。
装入后,MCU会自动识别当前的RTC模块是DS1302还是DS3231,并采用不同方式进行通讯并正确运行。
当然,这需要程序上做好相应的检测功能及相应的功能函数。
SHOW一下该模块的实物图片以及安装到水晶城堡电路板上以后的效果:
其实在自动识别方面,做起来也不难,需要在开机的时候检测一下是DS1302还是DS3231芯片。
大致思路是这样:
1、需要一个全局变量,用于开机时存储检测结果,以便以后的操作识别是DS3231还是DS1302;
2、硬件上DS1302需要3跟I/O口,DS3231只需要两根;
3、开机瞬间,首先默认为DS1302,因为DS1302内部有RAM,所以可以选择2-3个字节进行写操作。写完以后立即读取内容,如果内容与写入的内容一致,则表示当前安装的是DS1302,否则即认为是DS3231。
经过反复测试,这个检测方法很好用。
其次是程序读写这两种芯片:
对于主函数来讲,对于获取时间和日期以及设定时间和日期,统统交给同一个函数来处理,在这个函数里面,再分别针对不同的芯片进行相应操作。
下面我贴出来我的获取时间日期和设定时间日期的函数。
鸡鸣狗盗而已,欢迎拍砖!
0 0
- DIY一块DS3231的高精度时钟模块,让时钟DS3231/DS1302自动识别
- DS3231时钟模块应用的一点感悟
- 树莓派 加时钟模块DS3231
- 为树莓派增加时钟模块ds3231
- 树莓派添加RTC时钟模块DS3231
- PCF8563/DS1302/DS1307/DS3231等常见时钟芯片驱动程序
- Arduino UNO DS3231高精度RTC芯片 制作时钟
- rpi3 添加实时时钟DS3231
- 实时时钟芯片DS3231应用笔记,使用指南,FAQ全集
- 树莓派使用上RTC实时时钟(DS3231,I2C接口)
- DS1302时钟
- MSP430F5438A+TM1650+DS3231模块时间显示
- DS1302时钟芯片的学习
- 时钟芯片ds1302的使用
- DS1302 时钟芯片的程序
- 关于实时时钟模块DS1302使用心得
- 51的DS1302(时钟)功能函数
- 基于STM32的DS1302时钟芯片驱动
- 字节序问题--大端法小端法
- Using Putty on Windows to login Linux securely via OpenSSH
- STM32 USB DFU设备固件升级 工程讲解
- STM32 USB 使用芯片内部flash模拟U盘
- Android学习笔记:Service的调用与音乐播放
- DIY一块DS3231的高精度时钟模块,让时钟DS3231/DS1302自动识别
- DMA学习资料
- The OS for Car
- 大数据推理
- UVA 11134 - Fabled Rooks(贪心+优先队列)
- 草根站长的你是感觉自豪还是苦逼
- Hibernate的session.flush做了什么呢?
- opengl
- Python单例模式的4种实现方法