DS1302说明文档

个人博客:http://brainware360.cn/



DS1302是由DALLAS公司出品的具有涓流充电(Trickle-Charge)能力的低功耗实时计时芯片。它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿(2100)等多种功能。

以下就是它的外观:

DS1302说明文档

Figure 1 DS1302外形图

主要性能特征如下:

Ø  拥有 31 字节数据存储 RAM

Ø  串行 I/O 通信方式,相对并行来说比较节省 IO 口的使用

Ø   2.05.5V 的范围内都可以正常工作

Ø  低功耗,工作电压 2.0V 的时候,工作电流小于300nA

Ø  当供电电压是 5V 的时候,兼容标准的 TTL 电平标准,这里的意思是,可以完美的和单片机进行通信

Ø  由于 DS1302  DS1202 的升级版本,所以所有的功能都兼容 DS1202

一个典型的DS1302搭接电路如下图所示:

DS1302说明文档

Figure 2 DS1302搭接电路

引脚及功能:

Ø  VCC2:主电源

Ø  X1X2:接外部晶振,它所使用的是一个 32.768k 的晶振

Ø  GND:接地

Ø  VCC1:辅助电源

Ø  SCLK:与MCU通信时的同步时钟

Ø  I/O:与MCU通信时的数据输入输出接口

 

Ø  CE:使能接口,高电平时使能DS1302

DS1302说明文档

Figure 3 DS1302指令字节

DS1302进行读写的指令字节共有8位,第七位固定为“1”,第六位是选择位,为1时选择RAM,为0时选择CLOCK,接下来的五位时地址位,最后一位是选择位,为1时选择读操作,为0时选择写操作。

DS1302说明文档

Figure 4 单字节读取

以上是MCU读取DS1302一个字节的时序图。当CE由低电平变成高电平时,读操作开始(这里需要注意的是,当CE由低变高时,SCLK需要处于低电平),这里从低位开始读。指令字节是在SCLK上升沿读取,数据则是在下降沿。

DS1302说明文档

Figure 5 单字节写操作

以上是MCUDS1302一个字节的时序图。

由于RAM部分只是相当于一个掉电丢失的EEPROM,本文档至对CLOCk部分进行阐述,所以RAM部分寄存器自动跳过。以下是DS1302RTC寄存器:

DS1302说明文档

Figure 6 RTC寄存器

第一个寄存器读写地址分别为0x810x80,其最高位CH用来判断系统上一次掉电后时钟是否仍然在正常工作,为1则系统掉电后备用电源没电或其他原因导致的时钟部分未正常工作,为0则掉电后DS1302正常使用备用电源。第六位至第四位表示的是秒数的十位数,最后四位则表示秒数的个位数,表示范围0~59

第二个寄存器读写地址分别为0x830x82,最高位保留,后面七位同第一个寄存器一致,但表示结果是分数。

第三个寄存器读写地址分别为0x850x84,最高位为1表示使用12小时制,当选择12小时制时,第五位为0表示AM,为1表示PM,最高位为0时使用24小时制,第五位和第四位一块表示小时的十位数,最后四位则表示小时的个位数。

第四个寄存器读写地址分别为0x870x86,第五位和第四位表示日数的十位数,后四位表示日数的个位数。

第五个寄存器读写地址分别为0x890x88,第四位表示月份的十位数,后四位表示月份的个位数。

第六个寄存器读写地址分别为0x8B0x8A,后三位表示星期几。

第七个寄存器读写地址分别为0x8D0x8C,前四位表示年份的十位数,后四位表示年份的个位数,这里的0~99表示范围2000~2099

这七个寄存器的数据需要同时读出,才能确保所读数据的准确性。举个不同时读取的例子,读秒数是59,分钟数是0,当下一次读分钟时,分钟变成了1,读出的时间可能是01:59,而实际时间却是00:59,显然是不正确的。为此,DS1302提供了一个burst模式一次性读出这七个寄存器的所有数据。burst模式读写地址分别为0xBF0xBEDS1302收到这两个指令后,将时间信息一并存入缓存器,从而保证了时间信息的准确性。