时钟芯片DS1302可靠起振的方法

转载 2012年03月21日 18:07:55
 

简介 在DS1302的实际使用中,采用辅助电容法,可以解决DS1302在应用中由于晶振的负载电容不匹配而引起的停振问题。

关键词 时钟 负载电容 匹配

概述

  DS1302是Dallas公司生产的一种实时时钟芯片。它通过串行方式与单片机进行数据传送,能够向单片机提供包括秒、分、时、日、月、年等在内的实时时间信息,并可对月末日期、闰年天数自动进行调整;它还拥有用于主电源和备份电源的双电源引脚,在主电源关闭的情况下,也能保持时钟的连续运行。另外,它还能提供31字节的用于高速数据暂存的RAM。鉴于上述特点,DS1302已在许多单片机系统中得到应用,为系统提供所需的实时时钟信息。

一、 DS1302的主要特性

1. 引脚排列

图1 DS1302引脚排列图

  DS1302的引脚排列如图1所示,各引脚的功能如下:

  X1,X2——32768Hz晶振引脚端;
  RST——复位端;
  I/O——数据输入/输出端;
  SCLK——串行时钟端;
  GND——地;
  VCC2,VCC1——主电源与后备电源引脚端。

2. 主要功能

  DS1302时钟芯片内主要包括移位寄存器、控制逻辑电路、振荡器、实时时钟电路以及用于高速暂存的31字节RAM。DS1302与单片机系统的数据传送依靠RST,I/O,SCLK三根端线即可完成。其工作过程可概括为:首先系统RST引脚驱动至高电平,然后在作用于SCLK时钟脉冲的作用下,通过I/O引脚向DS1302输入地址/命令字节,随后再在SCLK时钟脉冲的配合下,从I/O引脚写入或读出相应的数据字节。因此,其与单片机之间的数据传送是十分容易实现的。

二、 时钟的产生及存在的问题

  (1) 在实际使用中,我们发现DS1302的工作情况不够稳定,主要表现在实时时间的传送有时会出现误差,有时甚至整个芯片停止工作。我们对DS1302的工作电路进行了分析,其与单片机系统的连接如图2所示。从图中可以看出,DS1302的外部电路十分简单,惟一外接的元件是32768Hz的晶振。通过实验我们发现:当外接晶振电路振荡时,DS1302计时正确;当外接晶振电路停振时,DS1302计时停止。因此,我们认为32768Hz晶振是造成DS1302工作不稳定的主要原因。


图2 DS1302与单片机系统的连接图

(2) DS1302时钟的产生基于外接的晶体振荡器,振荡器的频率为32768Hz。该晶振通过引脚X1、X2直接连接至DS1302,即DS1302是依靠外部晶振与其内部的电容配合来产生时钟脉冲的。由于DS1302在芯片本身已经集成了6pF的电容,所以,为了获得稳定可靠的时钟,必须选用具有6pF负载电容的晶振。

  然而,许多人在选用晶振时仅仅注意了晶振的额定频率值,而忽视了晶振的负载电容大小,甚至连许多经销商也不能提供所售晶振的负载电容。所以即使在使用中选用了符合32768Hz的晶振,但如果该晶振的负载电容与DS1302提供的6pF不一致时,就会影响晶振的起振或导致振荡频率的偏移,出现上述在应用中的问题。

三、 利用辅助电容实现负载匹配

  (1) 当所选的晶振负载电容不是6pF时,可以采用增加辅助电容的方法提高或降低DS1302振荡器的电容性负载,使之与晶体所需的电容值匹配。如果已知晶体的负载电容为CI,若CI<6pF,则可以增加一个并联电容CS以产生所需的总负载电容CI,即CI=6pF+CS;若CI>6pF,则可以在晶体的一端增加一个串联电容CS,以产生所需的负载电容CI,即1/CI=1/6pF+1/CS,通过计算即可得出应增加的辅助电容大小。辅助电容的接法如图3所示。


图3 CS连接电路图

(2) 在使用前对晶体的负载电容并不知道的情况下,通过测定晶体振荡频率的方法可以确定该晶体的负载电容。

  对于晶体振荡器来说,其振荡频率与负载电容之间的关系是确定的。以本文讨论的DS1302使用的32768Hz晶振为例:当它工作于所要求的负载电容时,能较准确地产生 32768Hz的频率;

当它的负载电容小于6pF时,其振荡频率会正向偏移;

当它的负载电容大于6pF时,其振荡频率就会负向偏移

因此,对于未知负载电容的晶体应首先采用实验的方法,在其两端加入辅助电容使晶体起振,然后用频率计测出振荡频率。若测得频率大于32768Hz,说明负载电容偏小;若测得频率小于32768Hz,说明负载电容偏大。对辅助电容逐步调整,最终使振荡频率尽可能接近32768Hz,则此时晶体端所接负载电容的总和就是适合该晶体的负载电容。

结论

  以上方法经我们在实际工作中多次使用,证明确实有效。它放宽了DS1302在使用中对晶振的条件要求,增强了DS1302在工作中的稳定性,对DS1302更广泛地应用具有积极的意义。


相关文章推荐

简单解释SSH框架中Action、Service、Dao、struts、Spring之间的关系

首先,先看下ssh框架的目录结构: 这个是简单的SSH框架,由于之前学习过经典三层框架,现在结合着三层框架来理解下SSH框架中的各个层之间的关系: 一、Action       看一下这个...

SSH的Dao层封装

一、先来看代码1.准备好所需要的Jar包 antlr-2.7.6.jar aopalliance-1.0.jar c3p0-0.9.1.2.jar commons-collect...

浅谈单片机c语言模块化编程-附ds1302时钟芯片驱动程序

在单片机c语言编程中,模块化编程显得非常重要。我觉得,模块化恰恰体现了c语言很好的可移植性。嵌入式编程中,硬件模块区分非常明显,所以驱动程序用模块化编程显得十分方便简洁。         详细规则不...

DS1302 时钟芯片的程序

DS1302 时钟芯片的程序 DS1302 时钟芯片的程序 #include  sbit T_CLK = P2^7; /*实时时钟时钟线引脚 */  sbit T_IO = P1^4;...

事无巨细,时钟芯片DS1302

第13/15原创:事无巨细,时钟芯片DS1302 原文地址:: http://bbs.eeworld.com.cn/thread-99612-1-1.html 事无巨细,时钟芯片DS1302 ...
  • jinn3
  • jinn3
  • 2012年03月23日 09:40
  • 1416

DS1302时钟芯片使用心得

这是我毕业后接触到的第一个时钟芯片,编写这个时间模块程序,可是费了不少周折,刚开始阅读厂家的数据手册,都弄不懂怎么回事,后来居然发现一个重大问题,原厂家的英文数据手册居然和国内厂家中文版手册有出入,是...
  • And_w
  • And_w
  • 2016年03月04日 21:18
  • 3874

时钟芯片ds1302的使用

实时时钟芯片DS1302应用,DS18B20应用实例——可调时钟,LCD1602显示:(时间+温度) 说明:需要按程序中定义的接口。按自己接口,只要在程序中修改接口定义即可。 1、DS1302引脚...
  • mdy09
  • mdy09
  • 2014年07月26日 01:48
  • 559

(16)给树莓派B+ 安装一个实时时钟芯片DS1302

在这里首先感谢glgoo在google被墙的情况下提供搜索功能,还要感谢 http://wiringpi.com/ 以及github,尽管自己眼瞎,几经波折还是发现了尘封已久的少林“七十二绝技”,没...

STC单片机学习------DS1302时钟芯片

把DS1302调试出来了,写个记录吧,下次用着时候省得再重新满大街的找资料。         芯片介绍就不写了,度娘一搜一大把,写几点笔记: 1、向寄存器写入数据前,要先关闭写保护,即向 0x8E 写...

单片机控制SPI协议时钟芯片DS1302之模块化编程及待解决的问题(持续更新中)

这里将我编写的STC12C5A60S2单片机控制SPI协议时钟芯片ds1302的程序共享一下,是希望前辈们给予斧正 。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:时钟芯片DS1302可靠起振的方法
举报原因:
原因补充:

(最多只允许输入30个字)