摘 要 本文介绍了嵌入式系统的RTC/WatchDog实现方案、系统功能和特点,该方案使用了X1227 芯片,并阐述了如何通过I2C总线实现对X1227的控制,并给出了其应用的实例。
关键词 RTC/WatchDog 嵌入式系统 通信协议
概 述
嵌入式系统在工业控制及消费类产品中的应用越来越广泛,也逐步趋向高端平台,如CPU用Strong ARM SA1110 ,OS用WINCE。
但嵌入式系统的可靠工作离不开RTC/WatchDog, 而SA1110这款32位的CPU并没有硬件上的RTC/WatchDog,因此必须外扩一个RTC/
WatchDog芯片。
我们在设计以Strong ARM SA1110为CPU的多媒体电话实验板时,采用的RTC/ WatchDog芯片是Xicor 公司的X1227
,X1227是专门为嵌入式系统设计,使用I2C串行总线接口,芯片的体积小,工作电流1.25 A,工耗很低,并用32.768KHz的晶振为输入,以秒、分、时、天、月、年为时间单位,并有记录星期的功能。WatchDog
的喂狗时间可在0.25s、0.75s、1.75s和关闭之间调整。X1227内还有4KB的EEPROM可存放系统的自检程序。此芯片可工作于3.3V,正好与SA1110的工作电压一致,SA1110可直接与X1227连接不必电平转换。
X1227有SOIC和TSSOP两种封装,SOIC的封装如图1所示。
引脚定义如下:
X1、X2 : 晶振的输入,输出端,为系统提供用于时钟的32.768KHz晶振接在这两个引脚上。
RESET/n:复位信号输出端,当WatchDog定时时间到,此引脚产生低电平。工作时,通过5K的电阻上拉,如不用WatchDog最好接地。
Vback: 后备电源输入,接Vcc或接电池,也可接大电容,确保系统掉电时,X1227可继续工作。
SCL:I2C总线的时钟输入端。
SDA:I2C总线的数据输入/输出端。
I2C总线的通信协议
X1227通过串行的I2C总线实现与系统的通信,SDA用来接受和发送数据,SCL接收产生的同步脉冲,当SCL为低时SDA的上数据变化,SCL为高时表明SDA上的数据可以接收。如图2所示。
任何命令的执行必须有一个启始位,通信的启始位条件是:当SCL为高时,SDA线上有一个下降沿。任何命令的结束传输必须有一个停止位,通信的停止位条件是:当SCL为高时,SDA线上有一个上升沿。如图3所示。
应答信号是是用于表明数据传输成功的信号。当发送的设备发送了启始位和8位数据之后,在第9个SCL有效时,接收设备将使SDA为低电平产生有效的应答信号,说明数据已成功接收,这时发送设备有两种选择可继续发送数据或发送停止位结束发送。如发送设备没有收到接收设备的应答信号,说明发送失败,需要重新发送。如图4所示。
因为系统的I2C总线上可同时接多个设备,因此每个I2C设备都有自己的地址,X1227也不例外,X1227有两个从设备地址,1010
为访问4KB EEPROM, 1101为访问CCR(时钟/控制寄存器),用于控制RTC和WatchDog。
完成一次字节访问的操作如图5所示。一共由四个字节组成,一个从地址字节,一个要访问的地址字(16位),一个8位的操作数,从地址字节最后一位决定了此次操作是读还是写,读是1,写是0。
X1227的主要功能
通过X1227的I2C接口可将RTC写入X1227的CCR中,注意在CCR中存放的是BCD码,如在CCR的HR(小时)寄存器写入23点时,必须写为0010
0011,读RTC的时钟也得到BCD码,使用前必须转换。在X1227中有两个报警寄存器,当报警寄存器定时的时间与RTC的时间一致时,会自动设置CCR中的SR(状态)寄存器中的相应位为1,实现定时报警功能。报警寄存器的精度到秒。通过写CCR中的BL(块保护)寄存器中的WD1,WD0两位实现对WatchDog的设置,控制喂狗的最短时间,见表1,
注意上电缺省为00,在初期的调试阶段,必须先用程序将其改为11,使WatchDog无效,系统才能在不喂狗时正常工作。使WatchDog定时器清零采用的喂狗指令是通过I2C接口送一个启始位给X1227,为是X1227进入Stand
By 模式必须再送一个停止位,两个信号的时间间隔要小于WatchDog定时器设置的时间,才可将WatchDog定时器清零。
X1227还为系统提供了4K EEPROM 可用于存放自检程序,或系统关键的数据,当系统掉电时关键数据不会丢失。
应用实例
在以SA1110为CPU的多媒体电话终端上,保证系统死机时可自动复位和系统时间的正确性,及通话费率的可靠保存并可灵活更改,成为此系统可靠运行的关键。
采用X1227便可实现以上功能,用X1227的RTC保证系统时间的正确性,用其WatchDog对系统监控,当系统死机或程序异常时,不能及时喂狗,在X1227的RESET/n引脚将输出一个250ms的低电平信号,使SA1110可靠复位。通话费率等系统关键数据,写入X1227的EEPROM中,一旦系统完全掉电,数据也不会丢失,并可在资费调整时通过写X1227的EEPROM,实现对资费标准的灵活修改。
X1227可在3.3V电压正常工作,因此X1227可直接与SA1110连接。连线关系如图6。
SDA接SA1110的GPIO25, SCL接SA1110的GPIO26,通过软件模拟的方式,实现SA1110与X1227的I2C接口通信,完成对X1227的控制。X1227的RESET/n接SA1110的RESET/n,确保在当系统异常时,X1227的WatchDog可使系统复位。软件工作流程图如图7。
影响,并使设计工程师的创造性提高到了新的水平。
|