微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > DS1337 时钟芯片在 C8051F 上的实现

DS1337 时钟芯片在 C8051F 上的实现

时间:11-30 来源: 点击:

  一、DS1337介绍

  DS1337串行实时时钟芯片是一种低功耗、全部采用BCD码的时钟日历芯片,它带有两个可编程的定时闹钟和一个可编程的方波输出。其地址和数据可通过I2C总线串行传输,能提供秒、分、时、日、星期、月和年等信息。

  1.1 DS1337的引脚说明

  DS1337的引脚排列示意图如图1所示。各引脚的功能如下:

  

  图1 DS1337引脚示意图

  VCC,GND:直流电源和接地端,VCC的输入范围在1.8~5.5V之间。X1,X2:标准的32.768kHz的石英晶振接入端,内部晶振电路设计要求晶振特定电容负载为6pF。另外,这两个引脚还可以有其它接法,即:X1脚连接外部振荡信号源,而将X2脚悬空。

  SCL:串行时钟输入,用来在总线上同步数据传输。

  SDA:串行数据输入输出,SDA是I2C总线接口的数据输入输出引脚,开漏输出,使用时要求接一个上拉电阻。

  SQW/INTB:方波/中断输出,可通过对DS1337的内部控制寄存器进行编程来控制这个引脚是输出方波还是输出中断信号。该引脚是开漏输出,使用时要接一个外部的上拉电阻。

  INTA:中断输出端,使能时,如果闹钟寄存器的设定值与当前时间匹配,该脚会输出一个低电平。该引脚也是开漏输出,要接上拉电阻。

  1.2 时间寄存器

  常用的时间寄存器地址为00H~06H。设置和初始化时间和日历可通过写相应的寄存器字段来实现,寄存器的数据格式以BCD码表示。DS1337既可以工作在12小时模式下,也可以工作在24小时模式下。小时寄存器的位6被定义为12小时模式或24小时模式选择位,该位为1时,选择12小时模式。在12小时模式时,位5是AM/PM标志位,该位为1时表示PM。当在24小时模式时,位5是第二个十位(表示20到23小时)。月寄存器的第7位是世纪位,当年寄存器从0到99溢出时,该位发生变化。

  1.3 控制寄存器和状态寄存器

  DS1337中有一个控制寄存器和一个状态寄存器,可用于控制实时时钟、闹钟和方波的输出。

  控制寄存器地址为0EH。其中:

  EOSC:振荡器使能位。该位为0,振荡器起振;为1,振荡器停振。刚上电时,该位为0;RS1,RS2:方波输出频率选择位。RS1和RS2共有四种组合,分别对应的方波输出频率为1Hz,4.096kHz,8.192kHz,32.768kHz。在刚加电时,方波输出频率设置是32.768kHz。

  INTCN:中断控制位。用于控制两个闹钟与中断输出脚之间的关系。为1时,两个闹钟在满足定时条件时,各自有独立的中断输出。为0时,两个闹钟共用一个中断输出脚INTA,而脚SQW/INTB为方波输出端。开始上电时,该位为0。

  A1IE:闹钟1中断使能位。为1时,允许状态寄存器的A1F位输出到脚INTA。上电时该位为0,此时不能用A1F位初始化INTA信号。

  A2IE:闹钟2中断使能位,该位的作用与A1IE位相同。

  DS1337的状态寄存器地址为0FH, 各位的作用如下:

  OSF:振荡器停止标志。该位为1,表示振荡器已停止。有四种情况能产生这样的结果:一是芯片刚上电,二是Vcc引脚电压不足,三是EOSC位为1,四是晶振受到外部影响(如噪声等)。

  A1F、A2F:闹钟标志位。为1时,表示闹钟设定时间与当前时间匹配,并产生中断输出。

  

  图2 DS1337寄存器

  1.4 对DS1337的读与写

  

  图3 DS1337 写寄存器

  从上图中,可以看出,主器件发起开始条件,发送从器件的地址和写命令(0xD0|0x00),等待从器件的应答,然后再发送要写的寄存器地址,等待从器件的应答,然后再发送要写的数据,等待从器件的应答,如果写操作完成,主器件发送结束。完成一次写数据过程。

  

  图4 DS1337 读寄存器

  从上图中,可以看出,主器件发起开始条件,发送从器件的地址和写命令(0xD0|0x00),等待从器件的应答,然后再发送要读的寄存器地址,等待从器件的应答,然后主器件再重新发送开始条件,发送从器件的地址和读命令(0xD0|0x01),等待从器件的应答,接收从器件发来的数据,主器件应答。当收到最后一个数据后,主器件发送非应答和结束。完成一次读数据过程。

  二、SMBus总线介绍

  SMBus串行I/O接口是一个双线的双向串行总线,与I2C串行总线兼容。图 5给出了一个典型的SMBus 配置。SMBus 接口的工作电压可以在3.0V和5.0V 之间,总线上不同器件的工作电压可以不同。SCL(串行时钟)和 SDA(串行数据)线是双向的。 必须通过上拉电阻或类似电路将它们连到电源电压。当总线空闲时,这两条线都被拉到高电平。连接在总线上的每个器件的 SCL 和 SDA 都必须是漏极开路或集电极开路的。

  

  图5 SMBus 配置

  2.1握手

SMBus采用多种线路条件作为器件间的握手信号。在一次数据传输中,SDA只

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top