【51单片机入门记录】RTC(实时时钟)-DS1302概述

目录

一、基于三线通信的RTC-DS1302

(1)简介

(2)特性

(3)引脚介绍

(4)控制字的格式

(5.0)日历时钟寄存器介绍

(5.1)日历时钟寄存器编写介绍

(5.2)什么是BCD码

(6)小时寄存器(85H和84H)的位7是12/24小时制切换控制位

二、三线通信协议概述

(1)引脚介绍

(2)接口时序的实现

(3)单字节写的时序

(4)单字节读的时序



一、基于三线通信的RTC-DS1302

(1)简介

DS1302是美国DALLAS公司推出的高性能、低功耗的实时时钟,附加31字节的静态RAM,采用三线接口与MCU进行同步通信,并可采用突发方式一次传送多个字节的时钟参数和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小于31天时可以自动调整,并具有闰年补偿功能。

(2)特性

  • 实时时钟计算秒、分、小时,日期,月,日、周,年与闰年补偿有效期至2100年
  • 31x8支持电池的通用RAM
  • 2.0V至5.5V都可运行
  • 在2.0V时使用小于300nA电流
  • 单字节或多字节(突发模式)用于时钟或计算机读-写的数据传输内存数据
  • 简单的3线接口
  • (3)引脚介绍

  • 引脚

    名字

    功能

    1

    Vcc2

    主电源引脚双电源配置。Vcc连接到备用电源,以在没有主电源的情况下保持时间和日期。

    2

    X1

    晶振引脚

    3

    X2

    晶振引脚

    4

    GND

    5

    CE

    输入。在读或写过程中必须将CE信号变为为高电平。这个引脚有一个内部的40k2(typ)下拉电阻到地。

    6

    1/0

    输入/推挽式输出。10引脚是3线接口的双向数据引脚。这个引脚有一个内部的40k2(typ)下拉电阻到地。

    7

    SCLK

    输入。SCLK用于同步串行接口上的数据移动。这个引脚有一个内部的40k2(typ)下拉电阻到地。

    8

    Vcc1

    单电源和电池供电系统的低功耗操作和低功耗电池备份。

(4)控制字的格式

DS1302将地址和读写控制放到一个字节里面,形成一个控制字,格式如下:

B7:必须为1,若为0,则不能把数据写入到DS1302中

B6:0为表示存取日历时钟数据,1表示存取RAM数据。

B5~B1:表示操作单元地址。

B0:0表示写操作,1表示读操作。

(5.0)日历时钟寄存器介绍

  • 时间和日历信息是通过读取适当的寄存器字节获得的。“通过写入适当的寄存器字节来设置或初始化时间和日历。
  • 时间和日历寄存器的内容采用二进制编码的十进制(BCD)格式与星期对应的值是用户定义的,必须是连续的(例如,如果1等于星期天,那么2等于星期一,以此类推)。不合逻辑的时间和日期条目会导致未定义的操作。
  • 当读取或写入时间和日期寄存器时,用户缓冲区用于防止内部寄存器更新时发生错误。当读取时间和日期寄存器时,用户缓冲区被同步到内部寄存器(CE的上升边缘)每当写入秒寄存器时,就会重置倒计时链
  • 第5位是第二个10小时(20-23 小时)位。小时数据必须在 12/24位改变时重新初始化

(5.1)日历时钟寄存器编写介绍

秒寄存器(80H和81H)的位7是时钟暂停标志

        ··CH为1时,时钟振荡停止CH为0时,时钟开始运行

控制寄存器(8EH和8FH)的位7(WP)是写保护位

        ··WP为0时,可以对任何的时钟和RAM寄存器进行写操作

        ··WP为1时,禁止对任意寄存器进行写操作

(5.2)什么是BCD码

用一位十六进制数表示十进制的0-9数字。例如,十六进制数0x13的值为19,但BCD码表示的是整数13。

举例:秒如何表示。

秒钟的个位放在81h的低四位,秒钟的十位放在4、5、6位。即假设我们要表示10秒,1就需要存在4、5、6位中,而0需要存在低四位中。

同理,日期的个位放在低四位,日期的十位放在4、5位表示。

同理,星期只用了0、1、2三位来表示。

同理,年份信息的低四位是个位,高四位是十位。

(6)小时寄存器(85H和84H)的位7是12/24小时制切换控制位

        ··该位为1时,代表12小时制,位5是上下午标识位:1为下午,0为上午

        ··该位为0时,代表24小时制。比赛时一般为24小时制度,如果考到12小时制,可以进行投机取巧(bushi),将给的时间减去12。

        ··小时数据必须在12/24小时制进行切换时必须重新进行初始化

(7)时钟\日期突发模式

二、三线通信协议概述

(1)引脚介绍

引脚

名字

功能

5

CE

输入。在读或写过程中必须将CE信号变为为高电平。这个引脚内部的40k2(typ)下拉电阻到地。

6

1/0

输入/推挽式输出。I0引脚是3线接口的双向数据引脚。这个引脚有一个内部的40k2(typ)下拉电阻到地。

7

SCLK

输入。SCLK用于同步串行接口上的数据移动。这个引脚有一个内部的40k2(typ)下拉电阻到地。

CE管脚:

驱动CE为高,则启动所有数据传输。如果CE输入低,所有的数据传输终止,I/O引脚进入高阻抗状态。CE输入有两个功能:CE打开控制逻辑,允许访问地址/命令序列的移位寄存器。E信号可以终止单字节或多字节数据传输。

I/O管脚:也称SDA引脚,数据传输管脚

SCLK管脚:时钟管脚;时钟周期是由上升沿和下降沿组成的序列。

(2)接口时序的实现

DS1302的基本操作实际上只有两个:其一是设定时间参数,其二是读取实时时间。不管是那个操作,MCU都要通过三线接口进行数据交互。无论是写入还是读出,控制字总是从最低位开始输出。

(3)单字节写的时序

  • CE引脚被设置为高电平的第一个时钟周期的上升沿开始,控制字节/数据被写入DS1302
  • 在控制字指令输入后的下一个SCLK时钟信号的上升沿,数据被写入DS1302数据的输入从最低位开始。

(4)单字节读的时序

  • 在CE引脚被设置为高电平的第一个时钟周期的上升沿开始,控制字节开始被写入DS1302。
  • 在控制字指令输入后的下一个SCLK时钟信号的下降沿,数据从DS1302读出,数据的读出也是从最低位到最高位。

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-04-07 06:06:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-07 06:06:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-07 06:06:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-07 06:06:02       20 阅读

热门阅读

  1. 如何从vue项目界面上看出来node.js版本

    2024-04-07 06:06:02       13 阅读
  2. cycle GAN

    2024-04-07 06:06:02       13 阅读
  3. Pytorch中的nn.Embedding()

    2024-04-07 06:06:02       13 阅读
  4. Redis过期删除策略和内存淘汰机制

    2024-04-07 06:06:02       21 阅读
  5. 前端node使用WebSocket实现实时通信例子

    2024-04-07 06:06:02       12 阅读