DS1302结构与工作原理
DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟,有计时的作用,和日常接触的电子表,万年历差不多,可以对年月日、时分秒、星期计时。可以用单片机往DS1302里面写入时间进行时间设置,也可以用单片机从DS1302中读取时间,读出来的时间也可以放在液晶上显示。这样就可以实现一块电子表的功能了。
DS1302引脚及功能:
X1,X2: 振荡源管脚,外接32.768KHz晶振
GND: 地
RST: 复位/片选线(通过置高电平来启动所有的数据传送。)
IO: 数据输入输出
SCLK: 串行时钟
VCC1: 电池引脚
VCC2: 主电源引脚 (双电源供电,在主电源关闭的情况下,有VCC1的电池供电,也能保持时钟的连续运行)
DS1302的工作原理很简单,它外接32768Hz的晶振提供震荡时钟。芯片内部的电路对晶振频率32768分频后获得周期为1S的秒信号,然后对秒信号计数,获得分钟、小时、天、星期、月、年等的数值。
实现方法:
DS1302的时间信息以寄存器的形式存储在芯片内部。DS1302的通讯接口由3根线组成,即RST,SCLK,I/O。单片机与DS1302通讯,采用的是SPI通讯接口,只不过是半双工了,只能分时进行收发。通过SPI接口,对相应的寄存器进行读操作,可以获得当前时间数值;写操作,可以设定当前时间。
下面介绍怎么对DS1302发号施令。
DS1302的命令字节格式:
一个完整的通讯帧由由2字节组成。第一字节是控制字节,第二字节为数据位。控制字格式如下:
1.bit0:读写标志。高电平为读,第二字节(蓝色圈内)会由DS1302输出数据;低电平为写,第二字节由单片机输出数据, DS1302接收;
2.bit1~5: 5位操作元地址,就是要对哪个寄存器进行操作。寄存器地址列表如图2.1。(红色圈内)
3.bit6:选择RAM区或寄存器区。如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;
4. bit7:必须是逻辑1,如果它为0,则不能把数据写入DS1302中。
图2.1
(CH:时钟停止位;为0时振荡器工作;为1时振荡器停止;AP=1时为下午模式,为0时上午模式。图2.1内还应该有第八个寄存器,地址为8E。它的bit7是需要重视的。bit7是一个保护位,如果这一位是1,那么是禁止给任何其他的寄存器或者那31个字节的RAM写数据的。因此在写数据之前,这一位必须先写成0。)
因为是SPI接口,单片机与DS1302通讯也是上升沿发送(写入1302数据),下降沿接收(读取1302数据)。控制字总是从最低位开始输出。在控制字指令输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从最低位(0位)开始。同样,在紧跟8位的控制字指令后的下一个SCLK脉冲的下降沿,读出DS1302的数据。读出的数据也是从最低位到最高位。数据读写时序如下图:
单片机往DS1302写入数据,先写地址,后写命令/数据。单片机读取DS1302某地址的数据,先写地址,后读命令/数据。
知道了需要控制的指令寄存器,读写的数据寄存器,通讯方式为SPI。所谓欲破曹公,只欠东风。咱是欲破DS1302,只欠实践了。
原理图如下:
以上所有信息仅作为学习交流使用,不作为任何学习和商业标准。若您对文中任何信息有异议,欢迎随时提出,谢谢!
-
DS1302
+关注
关注
8文章
449浏览量
50561
发布评论请先 登录
相关推荐
评论