基于实时时钟芯片X1227的电源控制器设计
摘要:介绍多功能实时时钟芯片X1228的内部结构、功能、特点以及在开放式实验室管理系统中电源控制器部分的应用。
关键词:实时时钟 I2C接口 单片机 电源控制器
引言
X1228是美国XICOR公司最新推出的实时时钟(RTC)芯片。与其它RTC芯片相比,X1228除有基本的时钟和报警功能外,还有4K位E2PROM存储器和复位输出、电压监控、看门狗定时、频率输出等功能。
X1228可以准确地用秒、分、时、日、星期、月、年来显示时间和日期,具有世纪字节,解决了两千年问题,自动实现闰年调整;有2路报警,可设置为按秒、分、时、日、月和星期任意组合的定时报警;还有1个可编程的频率输出引脚(PHZ),用于输出一个固定频率的方波信号;内部的4K位E2PROM存储器,可用于存储用户的设置参数或其它数据,其内容在电源失效时不会丢失;采用I2C总线与单片机接口,一次可传送多个字节的数据,数据传送的速率为400kHz;内部有电源监控电源监控电路,用于监测电源电压,并能在上电和掉电时输出复位信号,片内的看门狗定时器可编程为3个超时时间和关闭,还提供一个备用电源输入引脚(VBACK),接一电池作为备用电源,可在主电源(VCC)失效时保证芯片正常工作和时钟的连续运行。X1228因其计时准确、体积小、功能强,且与单片机接口方便、性价比高,在我们研制的开放式实验室管理系统电源控制器中得到了有效的应用。
图1 X1228内部结构框图
1 X1228的内部结构及工作原理
实时时钟芯片X1228的内部结构如图1所示,按功能基本分为实时时钟及报警、存储器和复位监控电路3个主要部分。
1.1 实时时钟及报警
X1228对时钟和报警的访问和设置都是通过时钟/控制寄存器CCR来实现的。CCR分为五个部分:
①报警寄存器0(Alarm 0)为8字节,地址0000H~0007H,非易失性E2PROM存储器;
②报警寄存器1(Alarm 1)为8字节,地址0008~000FH,非易失性E2PROM存储器;
③控制寄存器(Control)为4字节,地址0010H~0013H,非易失性E2PROM存储器;
④实时时钟(RTC)为8字节,地址0030H~0037H,易失性RAM存储器;
⑤状态寄存器(Status)为1字节,地址为003FH,易失性RAM存储器。
实时时钟(RTC)外部仅使用1个32.768kHz晶体来保持年、月、星期、日、时、分和秒的精确的内部表示。启动读命令并指定对应于RTC寄存器的地址可以读RTC,也可以通过写RTC寄存器来设置时间和日期。模拟微调寄存器ATR(低6位)用来调整X1和X2引脚间的片内负载电容,为5~39.5pF,这将使晶体选择有较大的余地。数字微调寄存器DTR(低3位)用来调整RTC的误差,达到长时间的高精度。
javascript:window.open(this.src);" style="cursor:pointer;"/>
两组报警寄存器的结构与内容和RTC寄存器相同,只是增加了使能位(在MSB位)。通过使能位和实时寄存器的设置,可以确定报警时间。例如:在表1中,通过把EDWn、EHRn、EMNn使能位置“1”,并把DWAn、HRAn、MNAn报警警察寄存器置为星期三8:00AM,即把X1228设置为每星期三8:00AM报警。当把EHRn、EMNn使能位置“1”,并把HRAn、MNAn报警寄存器置为9:15PM时,即把X1228设置为每天9:15PM报警。设置EMOn,并结合其它使能位和特定的报警时间,用户可以把X1228设置为每年同样的时间报警。控制寄存器INT中位IM为中断方式位,“0”为中断方式,“1”为脉冲方式;位AL1E和AL0E分别用来使能报警中断信号IRQ的输出;位FO1和FO0为可编程频率输出控制位,用来选择PHZ引脚上的振荡频率输出。
表1 时钟/控制寄存器CCR映像表
地址 | 名称 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 范围 |
003FH | SR | BAT | AL1 | AL0 | 0 | 0 | RWEL | WEL | RTCF | |
0037H | Y2K | 0 | 0 | Y2K21 | Y2K20 | Y2K13 | 0 | 0 | Y2K10 | 19/20 |
0036H | DW | 0 | 0 | 0 | 0 | 0 | DY2 | DY1 | DY0 | 0~6 |
0035H | YR | Y23 | Y22 | Y21 | Y20 | Y13 | Y12 | Y11 | Y10 | 0~99 |
0034H | MO | 0 | 0 | 0 | G20 | G3 | G12 | G11 | G10 | 1~12 |
0033H | DT | 0 | 0 | D21 | D20 | D13 | D12 | D11 | D10 | 1~31 |
0032H | HR | T24 | 0 | H21 | H20 | H13 | H12 | H11 | H10 | 0~23 |
0031H | MN | 0 | M22 | M21 | M20 | M13 | M12 | M11 | M10 | 0~59 |
0030H | SC | 0 | S22 | S21 | S20 | S13 | S12 | S11 | S10 | 0~59 |
0013H | DTR | 0 | 0 | 0 | 0 | 0 | DTR2 | DTR1 | DTR0 | |
0012H | ATR | 0 | 0 | ATR5 | ATR4 | ATR3 | ATR2 | ATR1 | ATR0 | |
0011H | INT | IM | AL1E | AL0E | F01 | F00 | X | X | X | |
0010H | BL | BP2 | BP1 | BP0 | WD1 | WD0 | 0 | 0 | 0 | |
000FH | Y2K1 | 0 | 0 | A1Y2K21 | A1Y2K20 | A1Y2K13 | 0 | 0 | A1Y2K10 | 19/20 |
000EH | DWA1 | EDW1 | 0 | 0 | 0 | 0 | DY2 | DY1 | DY0 | 0~6 |
000DH | 未使用,默认为RTC年字节(YR) | |||||||||
000CH | MOA1 | EMO1 | 0 | 0 | A1G20 | A1G13 | A1G12 | A1G11 | A1G10 | 1~12 |
000BH | DTA1 | EDT1 | 0 | A1D21 | A1D20 | A1D13 | A1D12 | A1D11 | A1D10 | 1~31 |
000AH | HRA1 | EHR1 | 0 | A1H21 | A1H20 | A1H13 | A1H12 | A1H11 | A1H10 | 0~23 |
0009H | MNA1 | EMN1 | A1M22 | A1M21 | A1M20 | A1M13 | A1M12 | A1M11 | A1M10 | 0~59 |
0008H | SCA1 | ESC1 | A1S22 | A1S21 | A1S20 | A1S13 | A1S12 | A1S11 | A1S10 | 0~59 |
0007H | Y2K0 | 0 | 0 | A0Y2K21 | A0Y2K20 | A0Y2K13 | 0 | 0 | A0Y2K10 | 19/20 |
0006H | DWA0 | EDW0 | 0 | 0 | 0 | 0 | DY2 | DY1 | DY0 | 0~6 |
0005H | 未使用,默认为RTC年字节(YR) | |||||||||
0004H | MOA0 | EMO0 | 0 | 0 | A0G20 | A0G13 | A0G12 | A0G11 | A0G10 | 1~12 |
0003H | DTA0 | EDT0 | 0 | A0D21 | A0D20 | A0D13 | A0D12 | A0D11 | A0D10 | 1~31 |
0002H | HRA0 | EHR0 | 0 | A0H21 | A0H20 | A0M13 | A0D12 | A0D11 | A0M10 | 0~23 |
0001H | MNA0 | EMN0 | A0M22 | A0M21 | A0M20 | A0M13 | A0M12 | A0M11 | A0M10 | 0~59 |
0000H | SCA0 | ESC0 | A0S22 | A0S21 | A0S20 | A0S13 | A0S12 | A0S11 | A0S10 | 0~59 |
状态寄存器SR中位BAT为“1”,表示由电池VBACK供电,硬件置位/复位;位AL1、AL0为报警指示位,“1”为发生报警,状态寄存器读操作复位读标志;位RWEL为寄存器写使能锁存,位WEL为写使能锁存,上电时均为“0”,禁止状态。注意:要对CCR或存储器进行任何非易失性写操作,须首先写“02H”至SR,将WEL位置“1”,其次写“06H”至SR,将RWEL和WEL都置“1”,然后才能写实际数据到CCR或存储器。
1.2 复位监控电路与看门狗定时器
X1228电源控制电路接收从Vcc和VBACK引脚输入的电源,当Vcc<VBACK-0.2V时,电源控制电路将电源自动切换至VBACK。上电时,在Vcc超过复位门限值250ms后,RESET脚产生一个200ms的低电平脉冲为系统提供复位信号。X1228内部有一个检测预置门限电压的比较器监视Vcc引脚上的电压,当发生电源失效时,在RESET脚发出一个复位脉冲。注意:当产生复位脉冲时,正在进行的任何非易失性写操作不受影响,继续操作直到完成。
看门狗定时器可通过向BL寄存器中WD1、WD0这两位的“写入”,设置为3种不同超时间隔或不工作,“00”为1.75s,“01”为750ms,“10”为250ms,“11”为不工作。看门狗启动时,必须在规定间隔内对它进行刷新,方法是在SCL线为高时SDA线产生下降沿。如果看门狗在规定间隔内没有被刷新,则RESET脚变为有效。注意:如果使用开始条件来刷新看门狗定时器,必须跟着一个结束条件以复位X1228。
1.3 存储器访问
X1228支持I2C总线协议,与CPU的连接很简单。如图2所示,AT89C51为主器件,X1228为从器件。SCL为串行移位时钟输入,P3.4接SCL模拟时钟信号;SDA为串行数据输入输出,P3.5与SDA相连以实现AT89C51与X1229的数据通信。X1228工作在中断方式,由IRO引脚定时发出中断信号,作为AT89C51 INT1的输入信号。
主器件在发出开始条件后必须接着输出一个地址字节。从地址字节的高4位是标识位,规定了访问E2PROM阵列还是访问CCR,“1010”表示访问E2PROM阵列,“1101”表示访问CCR;从地址字节的位3~位1是选择位(I2C器件级联时使用),X1228这3位总是“111”;从地址字节的最后一位R/W位定义操作类型。
块保护控制寄存器BL中位BP2、BP1、BP0决定了E2PROM存储器阵列中哪些块是写保护的,“000”表示“无写保护”,“001”表示地址0180H~01FFH写保护,“010”表示地址0100H~01FFH写保护,“011”表示“全地址写保护”,“100”表示地址0000H~003FH(第1页)写保护,“101”表示地址0000H~007FH(前2页)写保护,“110”表示地址0000H~00FFH(前4页)写保护,“111”表示地址0000H~01FFH(前8页)写保护。
对X1228存储器的访问有随机读、顺序读、当前地址读和字节写、页写等,其操作均与标准I2C总线器件相同,在此不作重述。
javascript:window.open(this.src);" style="cursor:pointer;"/>
2 X1228在电源控制器中的应用
为了充分利用实验室资源,让学生能够自主选择实验内容与时间,从而激发学生积极参与科学实验的兴趣,提高分析问题、解决问题的能力,同时也为了缓解近年来高校扩招对实验室的压力,实现高校部分实验室的开放式管理势在必行。我们研制的开放式实验室管理系统,再配上有经验的指导教师精心制作的实验教学课件,为实验室的无人值守化管理提供了物质基础。该开放式实验室管理系统由一个管理中心和一个门禁控制器及若干个实验组电源控制器组成,系统框图如图3所示。学生进入开放式实验室做实验,必须先刷卡,得到允许后方可进入。若实验时间超过预定时间(前10分钟发提示警告信息),则实验组仪器设备的供电会自动切断。
管理中心由1台计算机、报表打印机和管理软件组成。完成的功能有:①IC卡的发放、实验室仪器设备配置情况和实验安排情况预置;②通过门禁控制器获取实验学生的有关信息,根据存储在机内的仪器设备使用配置情况及预置的实验安排情况,决策该学生当前是否能参与实验并分配实验组号;③向门禁控制器回发信息;④若允许学生进入实验室,则发指令至相应的实验组电源控制器,以便及时为该组仪器设备供电;⑤对学生实验时间、仪器设备使用情况进行存储管理,为实验指导教师掌握学生实验情、实验技术人员进行仪器设备的维护维修提供依据;⑥各种报表输出。
门禁控制器主要负责:①对学生所持有的IC卡刷卡,以获取与实验有关的信息,通过RS485总线传输至上位机,以决定是否允许该学生进入实验室;②接收上位机发来的允许否信息,通过LCD显示器显示并执行;③学生实验完毕,需再次刷卡,并通过门禁控制器所携带的小键盘,对实验组仪器则认为该实验在规定时间内未完成,需重做。
实验组电源控制器主要是接收上位机指令,控制每个实验组仪器设备的供电情况,并在预定实验结束时间的前10分钟向学生发提示报警信息。
在实验组电源控制器中,我们采用了AT89C51单片机控制实时时钟芯片X1228(如图2)来实现对每个实验组仪器设备的供电情况定时控制,采用OCMJ2X8的LCD显示模块显示实时时间。AT89C51从串行口接收来自PC的2字节命令,由P1.5输出高电平,通过一只固态继电器(SSR)SAP4010来接通220V交流供电电路;接收8字节BCD码,写入X1228的RTC寄存器,对X1228进行校时;从串行口接收8字节写入Alarm0来设置X1228的报警输出,在单片机的外中断1服务程序中,通过P3.2口接的1只有源讯响器,在预定实验结束时间的前10分钟向学生发提示报警信息;实验时间到,P1.5输出高电平,通过SAP4010切断220V交供电电流。管理中心上位机与电源控制器之间采用MAX3082构成的RS485总线进行通信。因总线上允许最大节点数为256个,故完全能满足实际应用需要。
结语
在开放式实验室管理系统的电源控制器中,由于采用了I2C总线的实时时钟芯片X1228,它集成时时钟、报警输出、电源监控和看门狗定时器于一体,从而大大减小了系统成本和电路板空间。该电源控制器若稍做改进,也可广泛地应用地需要进行定时开关机的家用电器中。