当前位置: 首页 > news >正文

实时时钟芯片DS1302在STM32系列使用详解

1.  DS1302简介

1.1  特点

(1)可对秒,分,时,日,周,月,和年进行计数,对于小于 31 天的月,月末的日期自动进行调整,还具有闰年校正的功能;

(2)用于高速数据暂存的 31 字节的非易失性静态 RAM;

(3)时钟可以采用 24 小时格式或带 AM(上 午)/PM(下午)的 12 小时格式;

(4)宽工作电压:2.0V~5.5V;

(5)2.5V时耗小于300nA;

(6)用于时钟或RAM数据读/写的单字节或多字节数据传输方式;

(7)简单的3线接口与单片机通信;

与时钟/RAM 通信仅需 3 根线:

  • RST(复位)
  • I/O(数据线)
  • SCLK(串行时钟)

(8)TTL兼容(Vcc=5V);

(9)可选地工业温度范围-40℃至85℃;

(10)封装:DIP8和SOP8。

1.2  引脚

管脚序号符号功能
1V_{CC2}主用电源
2X132.768kHz晶振
3X232.768kHz晶振
4GND
5RST复位
6I/O数据输入/输出
7SCLK串行时钟输入
8V_{CC1}备用电源

1.3  工作原理

        如下图,RST 信号有效后,移位寄存器单元会在 SCLK 同步脉冲信号的控制下从 I/O 上串行接收 8 位指令字节,然后将 8 位指令字节进行串并转换并送至 ROM 指令译码单元。由 ROM 指令译码单元对 8 位指令字节进行译码,以决定内部寄存器的地址以及读写状态。然后在接下来的 SCLK 同步脉冲信号的控制下将 8 位数据写进或者读出相应的寄存器。数据传送也可以采用多字节方式,先将 8 位相应的指令字节写入,然后在连续的 SCLK 的脉冲信号同步下,将数据字节连续写入或读出日历/时钟寄存器(或者RAM 单元)。SCLK 脉冲的个数在单字节方式下为 8 加 8,在多字节方式下为 8 加最大可达到 248 的数。

1.4  硬件电路

1.5  时序图

1.5.1  读数据

1.5.2  写数据

2.  DS1302使用

每一数据传送由命令字节初始化:

有效位作用
MSB(位7)必须为逻辑1,如果为0,则禁止写DS1302
RAM/CLK(位6)逻辑0:指定时钟/日历数据
逻辑1:指定RAM数据
A4\A3\A2\A1\A0(位1~5)指定进行输入或输出特定寄存器
LSB(位0)逻辑0:制定进行写操作(输入)
逻辑1:指定进行读操作(输出)

命令字节总是从最低有效LSB位0开始输入。

        通过把 RST 输入驱动至高电平来启动所有的数据传送。

RST 输入有两种功能:

接通控制逻辑:当RST信号被接通时,控制逻辑被激活,允许地址和命令序列被送入移位寄存器。

中止数据传送:RST信号可以在任何时刻中止正在进行的数据传送。

寄存器 0:最高位 CH 是一个时钟停止标志位。停止后为1,正常工作为0。如果 Vcc1 悬空或者是电池没电了,当我们下次重新上电时,读取这一位,那这一位就是 1,我们可以通过这一位判断时钟在单片机系统掉电后是否还正常运行。剩下的 7 位高 3 位是秒的十位,低 4 位是秒的个位。

寄存器 1:最高位未使用,剩下的 7 位中高 3 位是分钟的十位,低 4 位是分钟的个位。

寄存器 2:bit7 是 1 的话代表是 12 小时制,0 代表是 24 小时制;bit6 固定是 0,bit5 在 12 小时制下 0 代表的是上午,1 代表的是下午,在 24 小时制下和 bit4 一起代表了小时的十 位,低 4 位代表的是小时的个位。

寄存器 3:高 2 位固定是 0,bit5 和 bit4 是日期的十位,低 4 位是日期的个位。

寄存器 4:高 3 位固定是 0,bit4 是月的十位,低 4 位是月的个位。

寄存器 5:高 5 位固定是 0,低 3 位代表了星期。

寄存器 6:高 4 位代表了年的十位,低 4 位代表了年的个位。请特别注意,这里的 00~ 99 指的是 2000 年~2099 年。

寄存器 7:最高位一个写保护位,如果这一位是 1,那么是禁止给任何其它寄存器或者 那 31 个字节的 RAM 写数据的。因此在写数据之前,这一位必须先写成 0。


http://www.mrgr.cn/news/59515.html

相关文章:

  • Prompt Engineering (Prompt工程)
  • kafka-clients之mq丢失问题
  • 【微软商店平台】如何将exe打包上传微软商店
  • 【QT】常用控件(四)
  • VsCode插件:前端每日一题
  • C++基础:三个字符串也能搞大小?
  • 2025考研各省市网上确认时间汇总!
  • Leetcode11:盛水最多的容器
  • 【C++刷题】力扣-#495-提莫攻击
  • STATCOM静止同步补偿器原理及MATLAB仿真模型
  • 多文档快速合并
  • LeetCode题练习与总结:回文对--336
  • 008:光盘映像文件处理工具UltraISO安装教程
  • Python实现基于HANTS算法(时间序列谐波分析法)的长时间序列数据去噪、重建、填补
  • 【汇编语言】第一个程序(二)—— 带你真正了解一个源程序的结构是怎样的
  • 背包九讲——二维费用背包问题
  • 基于SSM平面设计课程在线学习系统的设计
  • 504 Gateway Time-outopenresty
  • 684. 冗余连接
  • w~视觉~合集10
  • 深度学习模型预测控制python tensorflow 实现
  • Rust 力扣 - 3. 无重复字符的最长子串
  • Spring Cache-基于注解的缓存
  • 以蚂蚁借呗、抖音放心借、美团借钱为例,聊聊企业如何计算期末资产收益率
  • C++和OpenGL实现3D游戏编程【连载16】——详解三维坐标转二维屏幕坐标(向量和矩阵操作实战)
  • (六)问题记录,simulink仿真出现模型碰撞后穿越