




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实时时钟ISL1208的原理与应用作者:张道明郝继飞谭国俊转贴自:微计算机信息点击数: 478更新时间:2008-10-16【字体: A】Principle and Application of Real Time Clock ISL1208Abstract: This article introduce the principle、the character、the function and the application of real time clock ISL1208 and then gives the hardware and software design.Keywords: RTC;MCS51;I2C interface;serial communication;C51摘要:简要介绍了实时时钟ISL1208的原理、特点、功能及应用,并给出了与单片机的硬件连接图及控制程序。关键词:实时时钟;MCS51;I2C接口;串行通信;C511.引言INTERSIL公司推出的ISL1208是一种I2C接口、低成本、低功耗实时时钟,它带有定时与晶体补偿、时钟/日历、电源失效指示器、周期或轮询报警、智能后备电池切换和后备电池供电的SRAM等功能。振荡器采用外部低成本32.768KHz晶振,日历可精确到2099年,闰年自动修正。其强大的报警功能,可被设置成任意时间点报警或固定频率输出。若采用3.0V/3.6V锂电池供电,供电电流仅为400nA,最多可持续供电长达10年。另外,后备电源输入引脚Vbat还允许断电时使用大容量后备电容供电以保证正常工作几个月左右。2. ISL1208简介 ISL1208引脚如图1所示:其中:引脚X1、X2接外部晶振输入端,可直接以32. 768kHz的晶体源驱动;Vbat接后备电源/电容,该引脚不用时接地;SDA为串行数据输入输出端;SCL为串行时钟输入端;IRQ/Fout为中断/频率输出端,可用作中断/频率输出;Vdd和GND为电源和接地端。3. ISL1208内部结构及其工作原理 ISL1208内部结构框图如图2。由图可知,ISL1208主要包括:I2C接口控制单元、实时时钟控制逻辑、时钟分频器、电源管理单元和寄存器单元。其中寄存器单元被分成四段:实时时钟、控制与状态、报警寄存器和用户SRAM;这四段寄存器各自含有不同的功能:实时时钟和报警寄存器用于写入/读出时间值和报警值,其写入形式为BCD码;控制与状态寄存器可完成对其他寄存器读写控制、报警与频率输出控制、模拟与数字微调控制等功能,其存储映射图如表1。控制与状态寄存器(Control and Status)控制与状态寄存器包括状态寄存器、中断与报警寄存器、模拟微调与数字微调寄存器。状态寄存器(SR):用来控制RTC失效、电池模式、报警触发、时钟计数器写保护、晶体振荡器使能以及状态位的自动复位或者提供相应的状态信息。在时钟上电时,需将写RTC使能位WRTC置“1”,以便启动时钟计数。中断控制寄存器(INT):主要用于控制时钟的周期性和单事件报警。其中频率输出控制位FO3FO0使能/禁止频率输出功能,并选择IRQ/FOUT引脚的输出频率(2-5Hz215Hz)。在频率模式被激活时它将覆盖IRQ/FOUT引脚上的报警模式。报警使能位ALME使能/禁止报警功能,中断/报警模式位IM使能单周期定时事件(IM0)/周期定时事件(IM1)。模拟微调寄存器(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引脚接后备电容器。4.2 软件设计 由于ISL1208为I2C接口,因此其接口协议也满足I2C规范,这里不再累述。需要提到一点是:在每次访问寄存器时,应先输入一个有效的辨识字节。该字节高7位()为器件辨识符。辨识字节的最后一位定义进行读/写操作,当其为“1”时选择读,为“0”时选择写。图4为ISL1208读/写时序图。图4 读/写ISL1208对于ISL1208来说,由于其内部结构设计,可以很容易的实现2nHz中断输出和每分、每天至每年一次报警,但要求具体几分钟、几小时报警一次还需在程序的编制上要比较注意。以下程序为通过计算机、单片机来控制ISL1208每5秒钟产生一次中断程序,上位机程序由MATLAB编写4,单片机程序由C语言编写,由于篇幅有限仅列出部分单片机程序:#include #define ISLwr 0xde /*写辨识字节*/#define ISLrd 0xdf /*读辨识字节*/*-ISL1208管脚配置-*/sbit ISLSCL=P16; /*时钟*/sbit ISLSDA=P17; /*数据*/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;i8;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;i8;i+) ISLSDA=(bit)(datas&0x80); datas=datas1; 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串行通信. 信
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 自建房赠予协议书
- 智能楼宇管理员岗位职业健康、安全、环保技术规程
- 自由锻锻工职业健康防护知识考核试卷及答案
- 分家协议书要点
- 金属制粉工外部培训转化考核试卷及答案
- 有机介质电容器纸、薄膜金属化工6s考核试卷及答案
- 送配电线路检修工设备安全技术规程
- 2025医疗设备采购合同
- 江苏省仪征市第三中学2026届数学七年级第一学期期末统考模拟试题含解析
- 现代金融体系的形成与资本市场的发展
- 2025河北水发节水有限公司公开招聘工作人员16人笔试参考题库附答案解析
- 新版中华民族共同体概论课件第十二讲民族危亡与中华民族意识觉醒(1840-1919)-2025年版
- 2025-2026学年人教版(2024)九年级物理全册第十四章 内能的利用(单元同步检测练习)(含答案)
- 第1课时 10的加、减法(教学设计)-2024-2025学年一年级上册数学人教版
- 2025至2030中国聚烯烃行业项目调研及市场前景预测评估报告
- 夜间红外成像算法优化-洞察及研究
- 2025四川达州宣汉县国有资产管理服务中心县属国有企业招聘劳动合同职工26人笔试历年参考题库附带答案详解
- 外国戏剧史课件
- (正式版)DB15∕T 4179-2025 《输氢管道工程施工规范》
- DB61T 1188-2018 足部修护技术规范
- 小区内垃圾清运合同范本
评论
0/150
提交评论