0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

DS1302芯片是如何给我产生时间数据的?

冬至子 来源:单片机技术宅 作者:小代 2023-06-13 14:15 次阅读

1 DS1302****的特点

DS1302是DALLAS公司推出的涓流充电时钟芯片,内含一个实时时钟/日历和31字节静态RAM,可以通过串行接口单片机进行通信。实时时钟/日历电路提供秒、分、时、日、星期、月、年的信息,每个月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM标志位决定采用24或12小时时间格式。

通俗的说,DS1302是时钟芯片,那它就有计时的作用。它和我们日常接触的电子表差不多,可以对年月日、时分秒、星期计时。我们可以用单片机往DS1302里面写入时间进行时间设置,也可以用单片机从DS1302中读取时间,读出来的时间数据我们显示出来,这样我们就可以实现了电子时钟的功能。

2 、DS1302的封装

DS1302有两种封装,一种是DIP8的双列直插式,一种是SOP8贴片式。根据封装的名字我就知道这芯片有8个引脚,引脚分布如图1:

图片

3 、DS1302引脚功能

1.jpg

1-VCC2,主电源引脚,,当Vcc2比Vcc1高0.2V以上时,DS1302由VCC2供电,当Vcc2低于Vcc1时,由Vcc1供电。

2、3-X1、X2,这两个引脚需要接一个32.768K的晶振,给DS1302提供一个基准。特别注意,要求这个晶振的引脚负载电容必须是6pF,而不是要加6pF的电容。如果使用有源晶振的话,接到X1上即可,X2悬空。

4-GND,电源地。

5-CE(注1:有些资料里写的是RST),DS1302的复位引脚。当读写DS1302的时候,这个引脚必须是高电平,低电平表示不让芯片工作。

6-I/O,DS1302的数据输入输出口,这个引脚是一个双向通信引脚,读写数据都是通过这个引脚完成。

7-SCLK,串行时钟信号,用来作为通信的时钟信号。

8-VCC1,备用电源引脚。

DS1302的电路一个重点就是时钟电路,它所使用的晶振是一个32.768k的晶振,晶振外部也不需要额外添加其他的电容或者电阻电路,只需要晶振的引脚的负载电容为6pF。时钟的精度,首先取决于晶振的精度以及晶振的引脚负载电容。如果晶振不准或者负载电容过大过小,都会导致时钟误差过大。在这一切都搞定后,最终一个考虑因素是晶振的温漂。随着温度的变化,晶振往往精度会发生变化,因此,在实际的系统中,其中一种方法就是经常校对。

4 寄存器简介

DS1302的寄存器(读时81h~8Dh,写时80h~8Ch)是存放秒、分,小时、日、月、年、周数据的,存放的数据格式为BCD码形式。它的内部时间寄存器如下表:

图片

上表是DS1302内部的7个与时间、日期有关的寄存器图和一个写保护寄存器,我们要做的就是将初始设置的时间、日期数据写入这几个寄存器,然后再不断地读取这几个寄存器来获取实时时间和日期。现对这几个寄存器的说明如下:

①、秒寄存器(81h、80h)的位7定义为时钟暂停标志(CH)。当初始上电时该位置为1,时钟振荡器停止,DS1302处于低功耗状态;只有将秒寄存器的该位置改写为0时,时钟才能开始运行,一般我们在用的时候是在设置时间完成后吧秒寄存器写入0,这样就启动了芯片的计时功能。

②、小时寄存器(85h、84h)的位7定义为DS1302是运行于12小时模式还是24小时模式。当为1时,选择12小时模式,为0时选择24小时模式。在12小时模式时,位5是标志位 ,为0时表示AM,为1时表示PM。在24小时模式时,位5是第二个10小时位。

③、控制寄存器(8Fh、8Eh)的位7是写保护位(WP),其它7位均置为0。在任何的时候对时钟和RAM的写操作之前,WP位必须为0。当WP位为1时,写保护位防止对任一寄存器的写操作。也就是说在电路上电的初始态WP是1,这时是不能改写上面任何一个时间寄存器的,只有首先将WP改写为0,才能进行其它寄存器的写操作。

其余的寄存器没有什么特殊的说明。对于DS1302芯片还有一个控制字,该控制字控制这芯片的读写操作。具体的内容如下:

图片

如上表所示,位0就是读写位,当位0为1时,就是告诉DS1302,下面是进行读出操作,而当位0为0时就是写入操作。

位0-位5是要进行操作的DS1302寄存器地址。

位6就是告诉DS1302,是要对RAM进行操作还是对时间寄存器进行操作,0就是对时间寄存器操作,一般我们都是对时间寄存器进行操作。

位7就是固定的1。

现在就知道为什么控制字80H是写秒寄存器,而81H是读秒寄存器了吧。80H换成二进制就是10000000。而81H的二进制就是10000001,一个是写操作,另一个是读操作嘛!

现在,我们来总结下如何对DS1302操作:

1 )首先要通过8eH将写保护去掉,这样我们才能将日期,时间的初值写时各个寄存器。

2 )然后就可以对80H、82H、84H、86H、88H、8AH、8CH进行初值的写入。同时也通过秒寄存器将位7的CH值改成0,这样DS1302就开始走时运行了。

3 )将写保护寄存器再写为80H,防止误改写寄存器的值。

4)不断读取80H-8CH的值,将他们转化为十进制后显示出来就可以啦,之前我们说过,DS1302读出的数据是BCD码,所以需要转换一下。

5 、读写时序

上面说到的寄存器,控制字。最终都是需要单片机控制DS1302的引进写进或读出芯片的。那现在就说说这读写的时序问题。

物理上,DS1302的通讯接口由3个口线组成,即CE(有些资料写为RST),SCLK,I/O。其中CE(RST)从低电平变成高电平启动一次数据传输过程,SCLK是时钟线,I/O是数据线。具体的读写时序参考下图,但是请注意,无论是哪种同步通讯类型的串行接口,都是对时钟信号敏感的,而且一般数据写入有效是在上升沿,读出有效是在下降沿(DS1302正是如此的,但是在芯片手册里没有明确说明),如果不是特别确定,则把程序设计成这样:平时SCLK保持低电平,在时钟变动前设置数据,在时钟变动后读取数据,即数据操作总是在SCLK保持为低电平的时候,相邻的操作之间间隔有一个上升沿和一个下降沿。

图片

DS1302****的数据读写是通过I/O串行进行的。当进行一次读写操作时最少得读写两个字节,第一个字节是控制字节,就是一个命令,告诉DS1302是读还是写操作,是对RAM还是对CLOK寄存器操作,以及操作的地址。第二个字节就是要读或写的数据了。

我们先看单字节写:在进行操作之前先得将CE(也可说是RST)置高电平,然后单片机将控制字的位0放到I/O上,当I/O的数据稳定后,将SCLK置高电平,DS1302检测到SCLK的上升沿后就将I/O上的数据读取,然后单片机将SCLK置为低电平,再将控制字的位1放到I/O上,如此反复,将一个字节控制字的8个位传给DS1302。接下来就是传一个字节的数据给DS1302,当传完数据后,单片机将CE置为低电平,操作结束。

单字节读操作的一开始写控制字的过程和上面的单字节写操作是一样,但是单字节读操作在写控制字的最后一个位,SCLK还在高电平时,DS1302就将数据放到I/O上,单片机将SCLK置为低电平后数据锁存,单机机就可以读取I/O上的数据。如此反复,将一个字节的数据读入单片机。读与写操作的不同就在于,写操作是在SCLK低电平时单片机将数据放到IO上,当SCLK上升沿时,DS1302读取。而读操作是在SCLK高电平时DS1302放数据到IO上,将SCLK置为低电平后,单片机就可从IO上读取数据。

在单字节读操作时,在写控制字的最后一个位也就是位7时,DS1302已将它的寄存器数据位0放到IO上了,要是控制字的位7是0的话,DS1302就无法将它的随后的数据放到IO上了,所以控制字的7位为固定的1,原因在这里哦。

6 、典型运用电路

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6001

    文章

    43978

    浏览量

    620871
  • 时钟芯片
    +关注

    关注

    2

    文章

    229

    浏览量

    39577
  • DS1302
    +关注

    关注

    8

    文章

    448

    浏览量

    50227
  • RST
    RST
    +关注

    关注

    0

    文章

    30

    浏览量

    7323
  • 负载电容
    +关注

    关注

    0

    文章

    128

    浏览量

    10276
收藏 人收藏

    评论

    相关推荐

    【急】DS1302不能写入时间

    成功修改。reset之后不能初始化时间,重新烧录也不能,貌似DS1302被固化了,时间动不了。//向DS302写入时钟数据void
    发表于 01-21 22:26

    【转】stm32驱动DS1302芯片

    电流充电的能力。DS1302的外部引脚分配如下图所示。DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该
    发表于 01-15 17:33

    DS1302时钟芯片原理

       九层妖塔 起于垒土【蓝桥杯】—{模块}—{DS1302时钟芯片}1、原理图2、典型工作电路3、框图4、引脚说明引脚名称功能1VCC2VCC_2VCC2​双电源配置中的主电源引脚。 VCC1连接
    发表于 12-07 12:30

    何为DS1302时钟芯片

    标题 单片机外设之一(时钟芯片DS1302)何为DS1302?DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片
    发表于 12-08 08:15

    DS1302时钟芯片的相关资料分享

    蓝桥杯STC基础代码上一章-蓝桥杯STC基础代码-串口通信时钟芯片-DS1302配置过程写数据数据代码下载下一章-温度芯片-
    发表于 02-18 06:05

    DS1302实时时钟芯片介绍

    文章目录实时时钟芯片 DS1302 介绍DS1302 的特点实时时钟芯片 DS1302 介绍DS1302
    发表于 02-18 07:57

    DS1302芯片驱动的使用

    马上就要比赛了,毕竟比赛不像是自己在实验室写,没有自己写好的驱动代码,不过官方会提供驱动代码的。以下就是官方的ds1302驱动的使用。DS1302芯片以下是官方提供的ds1302驱动代
    发表于 02-24 06:56

    ds1302 pdf

    ds1302 pdf 本文概括介绍了DS1302 时钟芯片的特点和基本组成通过实例详细说明了有关功能的应用软件关于 DS1302 各寄存器的详细位控功能请参考DALLAS 达拉斯公司
    发表于 01-14 13:22 57次下载

    利用DS1302 时钟芯片实现“时间锁”的方法

    利用DS1302 时钟芯片实现“时间锁”的方法
    发表于 05-15 13:44 143次下载

    基于DS1302芯片的时钟设计

    基于DS1302芯片的时钟设计
    发表于 03-01 12:21 11次下载

    ds1302晶振不起振_ds1302晶振电路图

    晶振。DS1302时钟的产生基于外接的晶体振荡器,振荡器的频率为32.768Hz。DS1302引脚X1、X2接晶振引脚端,DS1302内置电容的,外部接电容的话可以增加
    发表于 08-26 18:31 1.7w次阅读
    <b class='flag-5'>ds1302</b>晶振不起振_<b class='flag-5'>ds1302</b>晶振电路图

    ds1302芯片介绍,ds1302工作原理解析

    时钟小编相信大家见怪不怪了,那么时钟芯片大家知道是什么吗?今天我们就来谈谈最常用时钟芯片ds1302,主要通过ds1302芯片的介绍和
    发表于 10-18 16:19 4.3w次阅读

    DS1302芯片的使用,时钟芯片DS1302功能汇总

    DS1302大家都知道他是时钟芯片,知道了原理肯定想知道功能和操作方法,这篇文章就是主要来说DS1302芯片的功能以及时钟芯片
    发表于 10-19 10:43 8967次阅读

    ds1302引脚图,ds1302引脚图功能详解

    DS1302是时钟芯片,有计时的作用,和日常接触的电子表差不多,可以对年月日、时分秒、星期计时。可以用单片机往DS1302里面写入时间进行时间
    发表于 10-19 15:39 7.1w次阅读
    <b class='flag-5'>ds1302</b>引脚图,<b class='flag-5'>ds1302</b>引脚图功能详解

    DS1302时钟芯片的电路原理

    DS1302时钟芯片内部的时钟电路原理是基于晶振的振荡原理。晶振是一种利用晶体的共振特性产生稳定的振荡信号的元件。在DS1302中,晶振的频率为32.768kHz,这是一个非常稳定的频
    的头像 发表于 11-18 09:40 1238次阅读