韩 霜
(山东省广播电视局高山台管理中心,济南 250000)
RV8803-C7 是瑞士MicroCrystal 公司生产的一款C7(3.2x1.5mm)封装的实时时钟模块,体积是全世界最小的。具备标准的I2C 接口,具有高精度、温度补偿、低成本、超低功耗、微型封装、宽广的工作温度范围。模块内置32.768KHz 晶振,温度范围-40℃~+85℃,±3 ppm 的时间精度。
W77E516是一个快速8051 兼容微控制器;它的内核经过重新设计,提高了时钟速度和存储器访问周期速度。经过这种改进以后,在相同的时钟频率下,它的指令执行速度比标准8051 要快许多。一般来说,按照指令的类型,W77E516的指令执行速度是标准8051的1.5-3倍。整体来看,W77E516的速度比标准的8051快2.5倍。
RV8803-C7功耗非常低,仅需240毫安,提供标准时钟和日历功能,包括秒、分钟、小时(24)、工作日、日期、月、年(闰年计算)和外部事件的中断功能,周期倒计时定时器,周期性时间更新和报警。
各寄存器的地址分别是:秒寄存器地址0x00;分钟寄存器地址0x01;小时寄存器地址0x02;星期寄存器地址0x03;日期寄存器地址0x04;月份寄存器地址0x05;年寄存器地址0x06。
RV8803-C7的I2C 接口用于不同IC 或模块之间的双向、双线通信。RV-8803-C7访问地址是写0x64/读0x65,并支持快速通讯模式,高达0.4MHz。I2C 接口由两条线组成:一条双向数据线SDA 和一条时钟线SCL。两条线路连接到电源上拉电阻,只有当接口不忙时才启动数据传输。
RV-8803-C7通过W77E516的P1.1引脚和P1.0引脚连接各增加一个47Ω 的限流电阻,C4为一个0.1F 的法拉电容,用于外部供电断开后保证实时时钟的正常运行。
由于W77E516 属于基础型的51 芯片,所以需要编写程序实现I2C 通讯,为此需要编写函数I2C_Start、I2C_Stop,I2C_WriteOneByte,I2C_ReadOneByte 来实现I2C 通讯功能。在实现了I2C 基础的通讯函数后,就可以编写I2C 总线针对特定地址的读写函数,具体实现如下:
由于RV8803-C7对外提供的时间格式为BCD 编码格式,所以需要编写两个函数完成BCD 和Hex 十六进制的互相转换。
BYTE B2H(BYTE bcd){ return (bcd/16*10+bcd%16);}
BYTE H2B(BYTE hex){ return (hex/10*16+hex%10);}
在完成了BCD 和Hex 的互转后,就可以编写实时时钟的读写程序了。RV8803-C7模块的星期数据使用位表示,所以在读取和设置时,可以针对其单独编写switch 语句完成星期数据的正确读写。对于时钟的读写,以秒的读取和设置为例,实现语句参考如下。
Seconds=B2H(I2C_R(0x00)&0x7F);//读 取RV8803 中当前时间的秒。
I2C_W(H2B(Seconds),0x00);//设置RV8803 中当前时间的秒。
本文主要研究了W77E516单片机与RV8803-C7实时时钟的访问及实现方法,并针对51芯片不具备I2C 接口的情况下如何实现I2C 通讯做了详细探讨。