I2C串行芯片X1288及其在电子电能表中的应用
摘要:介绍了一种基于I2C总线接口的多功能串行芯片X1288的性能特点和工作原理,给出了X1288在电子电能表设计中的应用方法,同时给出了 X1288和AT89C52的连接电路。实际应用表明:X1288能简化电路设计并可提高硬件的工作效率。 关键词:X1288;I2C总线接口;电子电能表 1 引言 X1288是美国Xicor公司生产的一种集E2PROM、实时时钟、日历、CPU监控和两路报警于一体的多功能集成电路芯片。X1288的时钟采用一种价格低廉的32.768kHz晶振,具有百分秒、秒、分、时、日、月、年及星期信息,并可设定两个报警时间,其时钟和报警寄存器的双通道结构使得它能在读写数据时仍保持时钟的准确性。此外,X1288还可提供32k字节的E2PROM阵列,并具有电源和CPU监控功能。 X1288串行芯片一般采用I2C总线来实现与主控制器的数据交换。I2C是由Philips公司开发的一种用于内部IC控制的双向二线串行总线,通过该总线可很好地解决现代电子系统中众多IC之间,及IC与外界的通信需要,并可大大简化电路设计,提高硬件电路的工作效率。 2 X1288的引脚定义
X1288芯片具有16脚SOIC或14脚TSSOP小体积封装形式。图1为14脚TSSOP封装的引脚示意图,各引脚的定义如下: X1、X2:这两个引脚可分别用作片内振荡器的反相放大器的输入和输出端。应用时需外接一个32.768kHz的石英晶体,其作用是为系统时钟/振荡器提供时间基准。 RESET:复位信号输出端。当看门狗超时或电压跌落到固定的VTRIP门限时,此引脚将向主处理器发送一个低电平有效的漏极开路输出信号,以使电路系统快速复位。 SDA:串行数据端,为漏极开路输出的双向引脚,用于数据的输入输出。实际应用时需接上拉电阻,并应与其它漏极或集电极开路输出端线相或。该端的输入缓冲器总是处于激活状态,输出电路可通过一个斜率控制的下拉控制输出信号的下降时间。设计时通常把电路设计成400kHz的二线接口。 SCL:串行时钟端口。 PHZ/IRQ:可编程频率/中断输出端。当编程为频率输出时,该端接到内部振荡器的输出脚,以输出频率为32.768kHz、4096Hz或1Hz的信号,也可以无信号输出。当编程为中断输出时,该端可在报警发生时激活,以向主机请求中断。
VBACK:备用电源输入端。当VCC小于VBACK-0.2V时,电源控制电路将切换至VBACK供电;而当VCC超过VBACK时,又会自动切回VCC供电方式,图2所示是其电源控制过程示意图。 3X1288的主要寄存器及其功能 X1228中的时钟/控制寄存器(CCR)位于从E2PROM阵列中分离出来的一个区域,地址位于[000]0h~[003]Fh之间。CCR一般被分成5段,可分别用于状态寄存器(1字节)、实时时钟(8字节)、控制寄存器(4字节)、报警寄存器1和报警寄存器0(各8字节)。 3.1 状态寄存器(SR) 状态寄存器是易失性的,其地址是003Fh。表1所列是其命令格式,各命令字的具体含义如下: 表1 状态寄存器(SR) 地址名称 7 6 5 4 3 2 1 0 缺省值 003Fh SR BAT AL1 AL0 0 0 RWEL WEL RTCF 01h BAT:后备电源标志位。当BAT为“1”时,表明器件在使用后备电源。 AL1、AL0:报警选择位。X1288中有两个报警寄存器,若其中的某一报警时间与实时时钟相同时,相应的AL1或AL0位将变为“1”;当读取SR的值后,该位又变为“0”。 RWEL:时钟/控制寄存器(CCR)写入控制位。对CCR进行写操作时,必须先使该位为“1”。 WEL:CCR和E2PROM的写入控制位。在对CCR和E2PROM进行写操作时,必须先使该位为“1”。同理,如果要写入时钟和控制寄存器,也必须先写“02h”至SR(使RWEL为“1”),再写“06h” (使WEL为“1”)。 RTCF:掉电标志位。当全部电源(包括VCC和VBACK)失效后,该位变为 “1”;而在系统再次上电后,如果要对RTC进行第一次有效写操作,则应首先将使该位为“0”。 需要说明的是,虽然SR中的第3、4位没有使用,但这些位必须置“0”。 图4 3.2 实时时钟(RTC) 实时时钟寄存器的地址0030h~0037h分别对应秒、分、时、日、月、年、星期和百分秒,并采用BCD码表示。通过启动一条读命令并确定相应的地址,即可读取时间信息。因为时钟是连续运行的,而每次读操作都需要一定的时间,这就有可能在读操作过程中使时间发生改变。本器件是由读命令将时间锁存在分立的锁存器中,因而可以避免读操作过程中时间发生变化。当一次读出并不是由读操作引起时,系统将发出报警。 可以通过向RTC寄存器中写入数据来设定时间和日期。通过一次不完全连续的写操作可避免改变当前时间,在RTC数据输入字节之前的ACK位时,时钟
- 基于WinCE的I2C驱动程序设计(04-24)
- 一种基于DSP的张力、深度、速度测量系统(04-15)
- DSP虚拟I2C总线软件包的设计及应用实例(05-29)
- 基于DSP和OZ890的电池管理系统设计(01-12)
- 基于DSP和OZ890 的电池管理系统设计(03-13)
- I2C总线及EEPROM的Linux驱动程序的设计(01-05)