目录
(6)小时寄存器(85H和84H)的位7是12/24小时制切换控制位
一、基于三线通信的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读出,数据的读出也是从最低位到最高位。