I2C串行芯片X1288及其在电子电能表中的应用
的下降沿会将当前的时间值装载到分立的缓冲器中,以使时钟继续运行。而此时新的串行输入数据将取代缓冲器的值。当有效的写操作结束后,系统产生停止位时,这个新值才被装载到RTC寄存器中。向RTC写入单个字节并不对其它字节的数据产生影响。 当X1288在VCC和VBACK都失效以后,即使再次上电后,其时钟也将停止增加,直到在时钟寄存器中进行至少一个字节的写操作以后。 读出和设定时钟应注意:百分秒寄存器(SSEC)是只读的;小时寄存器(HR)中的MIL位是12/24时制选择位“1”为24时制,“0”为12时制,H21位是AM/PM标志位“1”代表PM,“0”代表AM;星期中的七天只用三位(DY0~2)来计数,其值在0~6之间循环,数字所代表星期中的哪一天可由设计者决定,缺省值为0。 3.3 控制寄存器 表2所示是4个控制寄存器的命令字列表,其中的DTR是数字化微调寄存器,它的作用是调整每秒的计数值和ppm误差,以便在长时间内获得更好的计时精度。DTR2是符号位,“1”为正补偿,“0”为负补偿;DTR1、DTR0可分别提供10ppm、20ppm的补偿。由DTR0~DTR2三位可表示-30ppm~+30ppm的补偿范围。 表2 控制寄存器 地址名称 7 6 5 4 3 2 1 0 缺省值 0013h DTR 0 0 0 0 0 DTR2 DTR1 DTR0 00h 0012h ATR 0 0 ATR5 ATR4 ATR3 ATR2 ATR1 ATR0 00h 0011h INT IM AL1E AL0E FO1 FO0 只读只读只读 00h 0010h BL BP2 BP1 BP0 WD1 WD0 只读只读只读 00h ATR寄存器用来微调X1和X2之间的片内负载电容,其范围从+116ppm~-37ppm,具体电容值的大小可由下式计算: CART=[(ATR的十进制值)%26;#215;0.25]+11.0pF 实际上,数字和模拟结合起来的微调范围可高达+146ppm。BL中的BP2~BP0位是块保护位,这些位可用来决定对E2 PROM阵列中8个保护段的某些具体段提供写保护(参见表3所列);WD1、WD0用来设置看门狗时限。 表3 块保护位与E2PROM阵列保护区 BP2 BP1 BP0 被保护的地址阵列中被锁部分 0 0 0 无无 0 0 1 6000h~7FFFh 高端1/4 0 1 0 4000h~7FFFh 高端1/2 0 1 1 0000h~7FFFh 全阵列 1 0 0 0000h~007Fh 第一页 1 0 1 0000h~00FFh 第二页 1 1 0 0000h~01FFh 前四页 1 1 1 0000h~03FFh 前八页INT是中断控制和频率输出寄存器,其中AL1E和AL0E是报警中断信号(IRQ)的输出使能位,这两位分别结合SR中的AL1和AL0,可用来指示报警是否发生;IM是脉冲中断方式控制位,当报警条件匹配时,IRQ将输出一个单次脉冲,若IM设为“1”,则脉冲输出是周期性的;FO1和FO0是频率输出控制位,主要用于选择内部振荡器的三种分频输出之一并在PHZ端输出。 3.4 报警寄存器 X1288有两个报警寄存器,地址分别在0000h~0007h和0008h~000Fh,通过这两个报警寄存器可设置两个报警时间。报警寄存器的内容与RTC很类似,不同之处在于其最高位被设置为使能位,而取消了HR中的12/24时制控制位。使能位规定了哪些寄存器可用来与实时时钟寄存器作比较。通过设置EMOn位并结合其它使能位和特定的报警时间,用户可以建立在每年的同一时间(精确到秒)触发一次报警。用户可以通过轮询AL0和AL1软标志来确定一次报警的发生,或者使能IRQ输出作为一个硬件报警标志。当所有的使能位都被设置成“0”时,整个系统无报警。 4I2C总线数据传送方式 X1288在应用时一般作为从器件通过串行I2C总线来实现与主控制器的通信。其中,SDA用来接收、发送数据;SCL用于接收产生的同步脉冲,当SCL为低时,SDA上的数据发生变化,为高时表明可以接收SDA上的数据。 I2C总线在SCL为高且SDA线上出现一个下降沿时启动;而在SCL为高且SDA线上出现一个上升沿时停止。启动和停止信号都由主控器产生,这样,总线上带有I2C接口的器件就能很容易地检测到这些信号。但对于不具备这种接口的单片机来说,为了能够准确地检测到这些信号,必须保证在总线的一个时钟周期内对SDA线至少进行两次采样。 I2C总线上的应答信号是用于表明数据传输成功的信号。当发送的设备发送了启动位和8位数据之后,在第9个SCL有效时,接收设备将使SDA为低以产生有效的应答信号,该信号可用来说明数据已成功接收。当接收设备发送了表明数据已成功接收的应答信号之后,发送设备可选择继续发送数据或发送停止位以结束发送,如发送设备没有收到接收设备的应答信号,则说明发送失败,此时应重发。 一般情况下,I2C总线上可同时接多个设备,每个器件都有唯一的地址。X1
- 基于WinCE的I2C驱动程序设计(04-24)
- 一种基于DSP的张力、深度、速度测量系统(04-15)
- DSP虚拟I2C总线软件包的设计及应用实例(05-29)
- 基于DSP和OZ890的电池管理系统设计(01-12)
- 基于DSP和OZ890 的电池管理系统设计(03-13)
- I2C总线及EEPROM的Linux驱动程序的设计(01-05)