实时时钟ISL1208原理与应用

发布者:好的哎最新更新时间:2012-02-01 来源: 微计算机信息关键字:实时时钟  MCS51  I2C接口  串行通信 手机看文章 扫描二维码
随时随地手机看文章

1.引言

INTERSIL公司推出的ISL1208是一种I2C接口、低成本、低功耗实时时钟,它带有定时与晶体补偿、时钟/日历、电源失效指示器、周期或轮询报警、智能后备电池切换和后备电池供电的SRAM等功能。振荡器采用外部低成本32.768KHz晶振,日历可精确到2099 年,闰年自动修正。其强大的报警功能,可被设置成任意时间点报警或固定频率输出。若采用3.0V/3.6V锂电池供电,供电电流仅为400nA,最多可持续供电长达10年。另外,后备电源输入引脚Vbat还允许断电时使用大容量后备电容供电以保证正常工作几个月左右。

2. ISL1208简介

ISL1208引脚如图1所示:

图1  ISL1208引脚示意图

其中:引脚X1、X2接外部晶振输入端,可直接以32. 768kHz的晶体源驱动;Vbat接后备电源/电容,该引脚不用时接地;SDA为串行数据输入输出端;SCL为串行时钟输入端;IRQ/Fout为中断 /频率输出端,可用作中断/频率输出;Vdd和GND为电源和接地端。

3. ISL1208内部结构及其工作原理

ISL1208内部结构框图如图2。由图可知,ISL1208主要包括:I2C接口控制单元、实时时钟控制逻辑、时钟分频器、电源管理单元和寄存器单元。其中寄存器单元被分成四段:实时时钟、控制与状态、报警寄存器和用户SRAM;这四段寄存器各自含有不同的功能:实时时钟和报警寄存器用于写入/读出时间值和报警值,其写入形式为BCD码;控制与状态寄存器可完成对其他寄存器读写控制、报警与频率输出控制、模拟与数字微调控制等功能,其存储映射图如表1。

图2  ISL1208内部结构框图   

表1  寄存器存储映射图

 

ADDR

 

SECTION

REG

NAME

BIT

7

6

5

4

3

2

1

0

07h

 

Control

and

Status

SR

ASRT

XTOSCB

Reserved

WRTC

Reserved

ALM

BAT

RTCF

08h

INT

IM

ALME

LPMODE

FOBATB

FO3

FO2

FO1

FO0

09h

Reserved

0Ah

ATR

BMATR1

BMATR0

ATR5

ATR4

ATR3

ATR2

ATR1

ATR0

0Bh

DTR

Reserved

 

 

 

 

DTR2

DTR1

DTR0

控制与状态寄存器(Control and Status)

控制与状态寄存器包括状态寄存器、中断与报警寄存器、模拟微调与数字微调寄存器。

状态寄存器(SR):用来控制RTC失效、电池模式、报警触发、时钟计数器写保护、晶体振荡器使能以及状态位的自动复位或者提供相应的状态信息。在时钟上电时,需将写RTC使能位WRTC置“1”,以便启动时钟计数。

中断控制寄存器(INT):主要用于控制时钟的周期性和单事件报警。其中频率输出控制位FO3-FO0使能/禁止频率输出功能,并选择IRQ/FOUT引脚的输出频率(2-5Hz-215Hz)。在频率模式被激活时它将覆盖IRQ/FOUT引脚上的报警模式。报警使能位ALME使能/禁止报警功能,中断/报警模式位IM使能单周期定时事件(IM=0)/周期定时事件(IM=1)。

模拟微调寄存器(ATR):ATR0至ATR5为六位模拟微调位,可调整片内负载电容(CX1、CX2)的值,这一电容值用于RTC的频率补偿,其每一位都有不同的电容调节比重。有效的片内串联负载电容CLOAD 的范围从4.5pF至20.25pF,中间值为12.5pF(默认)。CLOAD可通过X1/X2引脚之间两个数字控制电容器CX1和CX2调节。

数字微调寄存器(DTR):数字微调位DTR0、DTR1和DTR2用来调整每秒钟的平均计数值和平均误差以获取更好的精度。其中DTR2为符号位(DTR2=0频率补偿>0,DTR2=1频率补偿<0),DTR1和DTR0为刻度位:DTR1提供40ppm 调整,DTR0提供20ppm调整。用以上三位可以表示-60ppm至+60ppm的补偿范围。

4. 应用举例

4.1 硬件结构

ISL1208具有I2C接口,使其便于与各类处理器连接且硬件结构十分简单,传输速率最高可达400Hz。硬件结构如图 3。其中时钟输入口SCL、数据输入输出口SDA分别与AT89C51的P1.6、P1.7腿相连,中断输出口IRQ/Fout接外部中断INT0。 AT89C51通过RS232口与计算机相连,通过计算机对实时时钟产生控制。Vbat引脚接后备电容器。

图3  ISL1208与AT89C52连接图

4.2 软件设计

由于ISL1208为I2C接口,因此其接口协议也满足I2C规范,这里不再累述。需要提到一点是:在每次访问寄存器时,应先输入一个有效的辨识字节。该字节高7位(1101111)为器件辨识符。辨识字节的最后一位定义进行读/写操作,当其为“1”时选择读,为“0”时选择写。图4为ISL1208读/写时序图。

图4  读/写ISL1208

对于ISL1208来说,由于其内部结构设计,可以很容易的实现2nHz中断输出和每分、每天至每年一次报警,但要求具体几分钟、几小时报警一次还需在程序的编制上要比较注意。以下程序为通过计算机、单片机来控制ISL1208每5秒钟产生一次中断程序,上位机程序由MATLAB编写[4],单片机程序由C语言编写,由于篇幅有限仅列出部分单片机程序:


 

#include

 #define  ISLwr   0xde  /*写辨识字节*/

 #define  ISLrd   0xdf  /*读辨识字节*/

/*--------ISL1208管脚配置---------*/

 sbit ISLSCL=P1^6;               /*时钟*/

 sbit ISLSDA=P1^7;              /*数据*/

void  sdelay();                  /*短延时*/

 void  ISLstart();                 /*I2C起始位*/

 void  ISLstop();                 /*I2C停止位*/

 void  GetACK();             /*主机等待应答(GACK)*/

 void  OutACK();             /*主机应答(OACK)*/

/*--------读/写ISL1208函数--------*/

 unsigned char  readISL1208();  

 void  writeISL1208(unsigned char datas);

/*-----------读/写寄存器-------------*/

 void  writeREG(unsigned char adds,unsigned char datas);

 unsigned char  readREG(unsigned char adds);

 bit  flag=0;                /*启动时钟报警标志位*/

 unsigned char alarm=0;               /*报警时间参数*/

 main()

{    ………………..     /*初始化*/

      for(;;)           /*等待上位机发送命令*/

    {  if(flag = =1)

         break;   }

/*写状态寄存器,写RTC使能,报警自动复位*/

  writeREG(0x07,0x90);

/*写中断寄存器,单事件报警,中断使能*/

    writeREG(0x08,0x60);

/*写报警寄存器,报警使能*/

    writeREG(0x0c,0x81);

/*写时钟寄存器,启动RTC*/

    writeREG(0x00,0x00);

for(;;);           /*等待*/        }

void writeREG(unsigned char adds,unsigned char datas)

{    ISLstart();

    writeISL1208(ISLwr);

    GetACK();

    writeISL1208(adds);                /*写地址*/

    GetACK();

    writeISL1208(datas);        /*写命令/数据*/

    GetACK();

    ISLstop();         }

 unsigned char  readREG(unsigned char adds)

{   unsigned char reg;

    ISLstart();

    writeISL1208(ISLwr);

    GetACK();

    writeISL1208(adds);            /*写地址*/

    GetACK();

    ISLstart();

    writeISL1208(ISLrd);

    GetACK();

    reg=readISL1208();         /*读就寄存器值*/

    OutACK();

    ISLstop();

    return (reg);             }

 unsigned char  readISL1208()

{   unsigned char i,k=0;

    ISLSDA=1;

    for(i=0;i<8;i++)

    {   ISLSCL=1;

        k=k*2;

        if(ISLSDA==1)

            k=k+1;

        ISLSCL=0;   }

     return (k);              }

 void  writeISL1208(unsigned char datas)

{   unsigned char data i;

    ISLSCL=0;

    for(i=0;i<8;i++)

    {   ISLSDA=(bit)(datas&0x80);

        datas=datas<<1;

        sdelay();

        ISLSCL=1;

        sdelay();

        ISLSCL=0;    }      }

 void int0() interrupt 0 using 1       /*外部中断0处理函数*/

{   unsigned char temp=0,reg;

/*单报警模式,5秒/次报警时间算法*/

    alarm=(alarm+5)%60;

    temp=alarm/10;

    temp<<=4;

    temp=(temp+alarm%10)|0x80;

/*读状态寄存器清除报警标志*/

    reg=readREG(0x07);

/*写报警寄存器,确定下次报警时间*/

    writeREG(0x0c,temp);


 

    }

4.3 后背电容器的使用

具体电路结构如图3。电容器的大小通过计算得出:若后背电容供电时间为两个月且Vcc=5.0V,Vbat电压从4.7V下降到1.8V(时钟最低工作电压)。假定二极管漏电流ILKG很小并可忽略。则电容充电/放电方程为:IBAT=CBAT*dV/dT,整理后得后备供电时间:dT=CBAT*dV/ IBAT。由于IBAT随VBAT基本上呈线性变化,这样IBAT可近似取两点之间的平均值。IBAT与VBAT之间的典型线性关系方程式为:IBAT=1.031E-7* VBAT +1.036E-7  A

若已给出两点电压,则平均电流IBATAVG=5.155E-8*(VBAT2+VBAT1)+1.036E-7   A

结合以上方程整理后得后备供电时间TBACKUP=CBAT*(VBAT2 -VBAT1)/IBATAVG      s

将上述方程改写为:CBAT=TBACKUP* IBATAVG /(VBAT2 -VBAT1)

其中:TBACKUP=60天*86400秒/天=5.18E6 s,IBATAVG=4.387E -7 A,VBAT2=4.7V,VBAT1=1.8V.则CBAT=5.18E6* 4.387E-7 / 2.9 =0.784 F,如果要包括30%的容度,则最坏情况下的电容值应为CBAT=1.3*0.784=1.02 F.

5. 小结

ISL1208是一种小巧(SOIC封装)、低功耗、低成本的实时时钟芯片,集时钟、日历、RAM、电源故障检测、报警功能由于一身,硬件结构简单、编成简便、精度高,在多功能电表、HVAC设备、音频/视频元件、寻呼机/PDA、家用电器及其它工业/医疗/汽车电子产品中都有十分广泛的应用前景。

参考文献

1. INTERSIL I2C Real Time Clock/Calendar ISL1208 Data Sheet. October 29,2004.

2.徐爱钧,彭秀华. 单片机高级语言C51应用程序设计. 电子工业出版社,1998年6月.

3.张道明,郝继飞. 基于MATLAB的MCU串行通信. 信息技术与信息化,2004(5).

关键字:实时时钟  MCS51  I2C接口  串行通信 引用地址:实时时钟ISL1208原理与应用

上一篇:基于C8051F020的远程多点温度监测系统
下一篇:智能型静止进相器中单片机的系统设计

推荐阅读最新更新时间:2024-03-16 12:51

基于VB的霍尔传感器性能测试系统设计
   霍尔传感器 是利用霍尔效应工作的半导体元件。由于霍尔元件转换效率高、响应速度快、动态范围宽、频率特性好、低噪音等特点,使霍尔 传感器 在电机检测、磁场强计、转速控制器、位置检测与自动控制等方面得到广泛的应用。在许多场合,需要了解霍尔传感器的各种性能,本测试系统应用Visual Basic可视化程序设计语言和单片机与 计算机 之间的RS-232 串行通信 ,实现霍尔传感器参数的自动测量与记录、分析。   1 测试系统结构   1.1系统硬件结构与原理   霍尔传感器性能测试系统的硬件结构如图1所示。信号处理电路板一方面接收霍尔传感器的测量信号,并处理成标准信号传送给单片机,另一方面根据单片机传送的数据,产生相应的控
[测试测量]
基于VB的霍尔传感器性能测试系统设计
SPI串行通信模块应用(一)
//SPI串行通信模块应用 //★★★★★★★★★SPI★★★★★★★★★★★\\ //实验目的:熟悉SPI总线以及9346EEPROM的读写 //单片机型号:PIC16F877A //功能描述:RBO键按下时把DATA和DATA2写入到EEPROM中以EE ADDR为地址的单元内, // 完成后,单个数码观显示 9 做为完成标志 // RB1键按下时,读取EEPROM中以EE ADDR为地址的单元,并送数码管显示 #include pic.h //调库函数 __CONFIG(0xf73a); //芯片配置字 #define cs RC2 //特殊引脚的定义 #define clk RC3 #def
[单片机]
MCS51单片机的数据复制程序(ASM)
MCS51单片机的数据复制程序(ASM) ;内部RAM数据复制程序 ;入口 :R0,R7 ;占用资源:A ;堆栈需求:2字节 ;出口 :R1 IBMOV :MOV A,R0 ADD A,R7 MOV R0,A MOV A,R1 ADD A,R7 MOV R1,A IBM1 :DEC R0 DEC R1 MOV A,@R0 MOV @R1,A DJNZ R7,IBM1 RET ;外部RAM数据复制程序 ;入口 :ADDPH,ADDPL,R7 ;占用资源:ACC ;堆栈需求:2字节 ;出口 :R0
[单片机]
基于TLl6C550C的DSP异步串行通信的实现
      摘要:由于TMS320C6416不带异步串行收发接口(UART),无法实现DSP系统常用的通串行通信。为此,本文基于TL16C550C设计了一种通过TMS32C6416实现UART数据通信的方法,同时给出了其硬件设计框图以及通过TMS320C6416初始化TLl6C550C的软件编程方式。       0 引言       高速数字信号处理器(DSP)在图像处理中,特别是视频处理中的应用非常广泛。通常DSP都具有很强的运算能力,但是其外设的接口相对有限。在应用系统中,往往需要DSP与下位机通信或者接受上位机的控制信号时,一般都是采用异步串行通信协议,如RS232或RS422来实现。由于TMS320C6416器件
[网络通信]
在STM32F103C8微控制器中使用RS-485串行通信
  通信协议是数字电子和嵌入式系统的组成部分。只要有多个微控制器和外围设备的接口,就必须使用通信协议来交换大量数据。有多种类型的串行通信协议可用。RS485 是串行通信协议之一,用于工业项目和重型机械。   本教程是关于在 STM32F103C8 微控制器中使用RS-485 串行通信。   在本教程中,Master STM32F103C8 具有三个按钮,用于通过使用 RS-485 串行通信来控制 Slave Arduino Uno 上的三个 LED 的状态。   RS-485 串行通讯   RS-485 是一种不需要时钟的异步串行通信协议。它使用一种称为差分信号的技术将二进制数据从一个设备传输到另一个设备。   那么这种差
[单片机]
在STM32F103C8微控制器中使用RS-485<font color='red'>串行通信</font>
PCF8563 I2C 实时时钟日历芯片
概述 PCF8563是一款低功耗的CMOS实时时钟/日历芯片,它提供一个可编程时钟输出,一个中断输出和掉电检测器,所有的地址和数据通过I2C总线接口串行传递。最大总线速度为400Kbits/s,每次读写数据后,内嵌的字地址寄存器会自动增加。 特性 低工作电流:典型值为0.25μA(VDD=3.0V,Tamb=25 ℃时); 世纪标志; 大工作电压范围:1.0~5.5V; 低休眠电流;典型值为0.25μA (VDD=3.0V, Tamb=25 ℃); 400KHz 的I2C总线接口(VDD=1.8~5.5V 时); 可编程时钟输出频率为:32.768KHz,1024Hz,32Hz,1Hz; 报警和定时器; 掉电检测器; 内部集成的
[单片机]
PCF8563 I2C <font color='red'>实时时钟</font>日历芯片
基于触摸屏和DSP的串行通信系统设计
  在现代工业控制中,最常用的人机接口界面依然采用的是键盘和液晶相结合的方式,要让触摸屏取代以前的人机接口界面,还存在一定的问题。在实际应用中,触摸屏一般是针对可编程控制器PLC 设计的,所以DSP 与触摸屏不能直接通信,必须根据触摸屏的通信协议开发相应的通信程序。本文研究基于MODBUS 协议的触摸屏和DSP 的通信方法,其中DSP 使用TI公司的TMS320F2812,触摸屏使用维控科技的LEVI700L。   1 DSP 与触摸屏的硬件电路连接   TI 公司的TMS320F2812 芯片有两组SCI 模块,SCIA 和SCIB。根据不同的需要,可以将这两个串口分别设计转换成RS232 和RS485。本文采用RS48
[嵌入式]
基于触摸屏和DSP的<font color='red'>串行通信</font>系统设计
TMS320F24x与PC机串行通信接口设计及应用
  引言   tms320f24x是美国ti公司tms320系列定点数字信号处理器(dsp)之一,tms320f240是f24x系列面向数字控制芯片的典型代表。由于tms320f240并不具备人机界面,在实际使用过程中,需要为它提供一个人机接口或上层控制接口,以便于观察控制效果或传递必要的控制信息。因此,实现tms320f240与pc之间串行通信接口的设计方法,具有较高的实用价值。   串行通信接口的硬件设计   f240芯片内部集成了一个串行通信接口(sci)模块,该模块是一个标准的通用异步接收/发送(uart)通信接口,通信接口有scitxd(sci发送输出引脚)和scirxd(sci接收输入引脚)两个外部引脚,引脚的
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved