文章资料来源:《Epson(爱普生) RX8900SA_RX8900CE实时时钟模块 应用手册》
一、模块简介
I2C总线接口实时时钟模块 RX8900 SA / CE
- 内置32.768 kHz DTCXO,稳定性高(Digital Temperature Compensated X'tal(crystal) Oscillator数字温度补偿晶体振荡器,指对振荡谐振器因温度而产生的频率变化进行补偿的晶体振荡器与振荡电路,以便获得高精度的频率)
- 支持I2C总线的高速模式(最高400 kHz)
- 日、日、时、分设置的报警中断功能
- 固定周期定时器中断功能
- 时间更新中断功能(秒、分)
- 带OE功能的32.768kHz温度补偿输出(FOE和FOUT脚)
- 闰年自动修正(从2000年到2099年)
- 宽接口电压范围:2.5 V至5.5 V
- 宽维持时间电压范围:1.6 V至5.5 V
- 低电流消耗:0.70µA/3 V(典型值)
- 内置备用切换电路(涓流充电)
- 通过电池后备切换功能和接口电源输入引脚,RX8900可以支持多种电源电路
- 采用C-MOS工艺制造,电流消耗低,可实现长期的电池备用
二、模块执行逻辑框图
三、封装描述
引脚功能:
四、电性能参数
1. 直流特性
2. 交流特性
SCL时钟频率最大400kHz
SCL低电平时间 Tlow最小1.3us
SCL高电平时间 Thigh最小0.6us
警告:访问该模块时,从发送启动条件到访问后发送停止条件的所有通信应在0.95秒内完成。
如果这种通信需要0.95秒或更长时间,I2C总线接口由内部总线超时功能复位。
当发生总线超时时,SDA转为Hi-Z(高阻态high impedance)输入模式。
注意:在访问时间寄存器期间,时间计数处于等待状态!这意味着,在上述通信不成功的情况下,最多可“丢失”1秒!
在实际传输RTCs从机地址之前,请确保发送了I2C启动条件,否则从机地址将看似被移动了1位!
五、使用方法
1. 寄存器说明
写/读及库选择
地址00h到0Fh:基本时间和日历寄存器…与RX-8803兼容。
地址10h到1Fh:扩展寄存器。
寄存器表(基本时间和日历寄存器)
【注意事项】:
- 在初始通电(0 V)后或VLF位返回“1”,请确保在使用RTC之前正确初始化了所有寄存器。
- 一定要避免输入不正确的日期和时间数据,因为数据或时间数据不正确时,无法保证时钟操作。
- 在初始通电期间,以下是寄存器值的默认设置
初始值为0:TEST、WADA、USEL、TE、FSEL1、FSEL0、TSEL0、UF、TF、AF、CSEL1、UIE、TIE、AIE、RESET VDETOFF、SWOFF、BKSMP1、BKSMP0
初始值为1:TSEL1、VLF、VDET、CSEL0
∗ 此时,所有其他寄存器值都未定义,因此请确保在使用模块之前进行了重置。
- 只有“0”可以写入UF、TF、AF、VLF或VDET位。
- 任何标有“•” 的位,初始化后应与值“0”一起使用。
- 任何标有“•”的位都是RAM位,可用于读取或写入任何数据。
- TEST位是制造商用于测试,写入时请确保将该位设置为“0”。
- 如果未使用报警功能,寄存器08h-0Ah可用作RAM。(AIE:“0”)
- 地址0Bh-0Ch的寄存器值是预设值。如果不使用定时器功能,则0Bh-0Ch寄存器可用作RAM(TE,TIE:“0”)
寄存器表(扩展寄存器)
扩展寄存器列表中寄存器10h到16h的内容等于基本寄存器列表中的寄存器00h到06h。
扩展寄存器列表中寄存器1Bh到1Fh的内容等于基本寄存器列表中的寄存器0Bh到0Fh。
这些寄存器可以在基本寄存器或扩展寄存器列表中寻址。
快速参考
2. 寄存器详述
详见数据手册,以下只列举重要的寄存器。
……
3. 通过I2C总线接口读写数据
硬件系统配置
所有连接到I2C总线的端口必须是开漏或开集电极端口,以便启用和连接到多个设备。
SCL和SDA都通过上拉电阻连接到VDD线路。因此,SCL和SDA在总线释放时(在不执行通信时)都保持在高电平。
从站地址
使用该RTC模块时,诸如CPU之类的控制器被定义为主站,而RTC模块被定义为从站。
I2C总线设备没有像普通逻辑设备中那样的芯片选择引脚,取而代之的是分配给每个设备的从机地址。
所有通信从发送[START标志]+[从机地址(+R/W)]开始,接收设备仅在其接收到的指定从机地址与其自身的从机地址匹配时才响应此通信。
从机地址的固定长度为7位。此RTC的从属地址是[0110 010x].
在8位传输时,向每个7位从机地址添加一个R/W位(上面的“x”)。
报文格式
由于RX8900包含地址自动递增功能,一旦指定了初始地址,RX8900将在后续同一报文中的每次传输数据时自动递增(一个字节)接收地址。
a. 写入数据时的报文
(1) CPU启动条件[S]。
(2) CPU传输RX8900的从机地址,R/W位设置为写入模式。
(3) 检查来自RX8900的确认信号。
(4) CPU将写地址传输到RX8900。
(5) 检查来自RX8900的确认信号。
(6) CPU将写数据传输到上面(4)中指定的地址。
(7) 检查来自RX8900的确认信号。
(8) 如有必要,重复(6)和(7)。地址会自动递增。
(9) CPU传输停止条件[P]。
b. 读取数据时的报文
使用写入模式写入要读取的地址后,将读取模式设置为读取实际数据。
(1) CPU启动条件[S]。
(2) CPU传输RX8900的从机地址,R/W位设置为写入模式。
(3) 检查来自RX8900的确认信号。
(4) CPU传输从RX8900读取的地址。
(5) 检查来自RX8900的确认信号。
(6) CPU传输重启条件[Sr](在这种情况下,CPU不传输停止条件[P])。
(7) CPU传输RX8900的从机地址,R/W位设置为读取模式。
(8) 来自发射机的RX8900信号是来自接收机的RX8900信号。
(9) RX8900输出上述(4)中指定地址的数据。
(10) CPU将ACK信号传输至RX8900。
(11) 如有必要,重复(9)和(10)。读取地址将自动递增。
(12) CPU传输“1”的确认信号。
(13) CPU传输停止条件[P]。
c. 未指定地址时的读取报文
初始设置读取模式后,可以立即读取数据。在这种情况下,每个读取操作的地址是先前访问的地址+1。
(1) CPU启动条件[S]。
(2) CPU传输RX8900的从机地址,R/W位设置为读取模式。
(3) 检查来自RX8900的ACK信号(从这一点开始,CPU是接收器,RX8900是发射器)。
(4) 数据从RX8900输出到之前访问的地址末尾之后的地址。
(5) CPU将ACK信号传输至RX8900。
(6) 如有必要,重复(4)和(5)。读取地址在RX8900中自动递增。
(7) CPU传输“1”的确认信号。
(8) CPU传输停止条件[P]。
d. 地址在读/写操作中自动递增规则
(1) 基本时间及日历寄存器中:
地址递增规则----08-09-0A-0B-0C-0D-0E-0F-00-01-02--
(2) 扩展寄存器中:
地址递增规则----18-19-1A-1B-1C-1D-1E-1F-10-11-12--