1、 高精度时钟芯片 SD2001E 及其应用_单片机论文单片机论文摘要:介绍一种内置晶振、充电电池、串行 NVRA 的高精度和免调校实时时钟芯片 SD2001E。由该芯片构成的时钟电路具有精度高、外围电路和接口电路简单的特点。文中详细描述芯片的主要特性、引脚说明及其工作原理,给出在嵌入式系统中的应用方法、硬件接口电路及应用程序。 关键词:SD2001E 实时时钟 单片机实时时钟电路在以单片机为核心构成的智能仪器仪表、测控系统、工业控制等领域有着广泛的应用,但现有的时钟电路存在着外围电路(如需外接晶振、电池)和接口电路(并行接口)复杂、功能单一等缺点。SD2001E 则是在内部集成了实时时钟电路、
2、串行非易失性 SRA、可充电电池、晶振及电池管理电路的新型实时时钟芯片。该芯片与单片机的接口电路采用工业标准 I2 总线,从而简化了接口电路设计。利用该芯片无需扩展任何外围元件,即可构成一个高精度实时时钟及具有 256Kb 非易失性 SRA 的数据存储电路。1 主要特性及引脚说明 SD2001E 时钟芯片的主要特性如下:* 年、月、日、星期、时、分、秒的 BD 码输入/输出;*I2 总线接口(包括实时时钟部分和 SRA 部分) ;*自动日历到 2099 年(包括闰年自动换算功能) ;*内置晶振,出厂前已对时钟进行校准,保证精度为410 -6,即时钟年误差小于 2in;* 低功耗,典型值为 1.
3、0A (VDD=3.5V) ;*工作电压为 3.05.5V (其中 NVRA 在 4.55.5V 工作) ;*可设置的两路闹钟输出及 32 768Hz1Hz 的方波信号输出; *可设置的每分钟固定中断输出或选定频率固定中断输出;*内置充电电路和充电电池,充满一次可保持内部时钟走时时间超过 1 年以上,可满充电次数达 200 次;*内置电源管理电路,当 VDD3.0V ,内部电池不耗电;* 内置稳定电路及电池掉电检测电路;* 内置 256Kb 的非易失性 SRA,其擦写次数为 100 亿次,且没有内部写延时。SD2001E 采用 24 脚 DIP 封装形式。各引脚的功能如表 1 所列,其外形及引
4、脚排列如图 1 所示。表 1 SD2001E 引脚说明引脚号标 廖功 能特 征 3TEST 测试内部电池电压检测 4N/FF 打开/关闭 SRA,接低电平为打开 SRA,接高电平时关闭此功能引脚主要用来降低芯片整体功耗10 12GND 接地 13SL 串行时钟输入脚 S 输入(与 VDD 间无保护二极管)14VUT3.3V 稳压输出脚,当 VDD3.4V 时有效可供电流30A ,电压精度 3.3(10.02)V15SDA 串行数据输入/输出脚 N 沟道开路输出(与 VDD 间无保护二极管) S 输入 1、2 、2216 18、 59N 空引脚 19INT1 报警中断 1 输出脚,根据中断寄存器
5、与状态寄存器来设置其工作的模式,当定时时间到达时输出低电平或时钟信号。它可通过重写状态寄存器来禁止 N 沟道开路输出(与 VDD 端之间无保护二极管)20SDAESRA 串行数据输入/ 输出脚开路输出 21SLESRA 串行数据时钟脚 S 输入 23INT2 报警中断 2 输出脚,同 INT1 24VDD 正电源 2 工作原理 SD2001E 内部包括实时时钟与 NVRA 两部分,内部原理框图如图 2 所示。2.1 实时时钟 SD2001E 实时时钟是基于 I2 总线的器件,故对该器件的操作必须严格遵守总线时序。当 PU 发出起始条件,建立与实时时钟连接后,PU 通过 SDA 总线连续输出 4
6、 位器件地址、3 位操作指令和 1 位读/ 写指令,其格式如下:DB7DB6DB5DB5DB3DB2DB1DB00110210R/实时时钟器件的地址固定为 “0110”,接下来的 3位操作指令构成了对实时时钟部分的 8 条操作指令,具体指令含义如表 2 所列。表 2 SD2001E 实时时钟指令表 210 操 作 AK 数目 000 复位 00(年) ,01(月)有,01 (天) ,0(星期)00(分) ,00(秒)1001 状态寄存器存取 2010 实时数据 1(从年数据开始)存取 8011 实时数据 2(从小时数据开始)存取 4100 频率事件设置 1(INT1 脚)3101 频率事件 2
7、(INT1 脚)3110 测试模式开始 1111 测试模式结束 1PU 通过发送不同操作指令,选择相应的寄存器从而完成相应的操作功能。SD2001E 实时时钟部分共包括 4 个寄存器,分别分别如下:(1)实时数据寄存器实时数据寄存器是一个 56 位的存储器。它以 BD 码方式存储,包括年、月、日、星期、时、分、秒的数据,数据格式如图 3 所示。任何读/ 写操作或实时数据存取命令都通过发送或接收年数据的第一位“LBS”执行的。* 年数据(00 99):设置最后两位数字(00 99) ,通过自动日历功能计至 2099 年。*月数据(01 12):每月包含天数通过自动日历功能来更改。1、3 、5、7
8、、8 、10 、12 为1 31;4、6 、9、11 为 130;2 (闰年)为 129;2 (普通)为 128。* 天数(01 31) 。*星期数据(00 06):七进制计数器,对应于星期内每一天来设置。*小时数据(00 23 或 0011):12 小时进制,0 为 A,1 为 P;对于 24 小时进制,这一位没有意义,但必须设置为“0”或“ 1”。*分数据(0059) 。*秒数据(00 59)与测试标志。*TEST:在测试模式变为“1” 。(2)状态寄存器状态寄存器是一个 8 位寄存器。该寄存器用来显示和设置实时时钟的工作模式,状态寄存器格式如下。Per:电源标志位,为只读位。12/24
9、:设置 12 小时制或 24 小时制:0 为 12 小时制;1为 24 小时制。INT1AE :设置从 INT1 脚输出的报警中断的状态。设定报警时间并设此位为“1”时 INT1 寄存器开始有效, 0:报警中断输出禁止; 1:报警中断输出允许。INT1E :确定 INT1 脚的输出为每分钟边沿中断或每分钟固定中断。为了设为每分钟固定中断输出,应将 INT1E 和 INT1FE 置 1。0:报警中断或可选的频率的固定中断输出; 1:每分钟边沿中断或每分钟固定中断输出。INT1FE:设定 INT1 脚的输出为每分钟固定中断(周期 1 分钟,占空比 50%)或选定频率的固定中断。如果选定频率固定中断
10、输出被允许时,INT1 寄存器被认为是频率/事件的数据,0:报警中断或每分钟边沿中断输出;1:每分钟固定中断输出或选定频率固定中断输出。INT2AE、INT2E、INT2FE 位用于设置从 INT2 脚输出的报警中断的状态,各位含义同上。 (3)两组报警时间 /频率事件设置寄存器有两组 16 位报警时间/频率事件设置寄存器,用于设置报警时间或频率事件,由 INTxAE 与 INTxFE 控制。设定的 A/P标志位必须同 12 小时制或 24 小时制相对应,否则,设定的小时数将与报警数据不匹配。该寄存器为只写寄存器(x:1 或 2) 。INTxAE=1 时,INT1 和 INT2 寄存器被认为是
11、报警时间数据,与实时数据寄存器中小时和分钟寄存器设置相同。它们用 BD 码代表小时与分钟。INT1 寄存器内容如图 4(a)所示。INTxFE=1 时,INT1 与 INT2 寄存器被视为是频率事件数据(f0f15 位对应频率为 32 7681Hz ) ,对相应位置“1” ,则对应频率以“与”的方式输出。INT1 寄存器内容如图4( b)所示。2.2 非易失数据寄存器 SD2001E 内部还具有 256Kb 的非易失性数据寄存器。该存储器是一种性能优良的可擦写 100 亿次且无内部写延时的数据存储器,可用于保存系统设置参数及采集的数据。NVRA 的操作方式如下:首先,PU 发出开始信号给 SD
12、2001E,然后 PU 发出包括 4 位控制代码,1 位读/ 写指令的 8 位数据,即“从器件地址” ,前 4 位称为“SRA 器件代码” ,固定为“1010” 。接下来的 3 位在这里固定为 “000”,从器件地址的最低位为读写控制位,该位为“1”表示对从器件进行读操作,为 “0”表示对从器件进行写操作,接下来就可对 SD2001E 进行读写操作。写操作可分为单字节写操作和连续写操作。读操作有三种操作方式:立即地址读操作、同地址读操作、连续读操作。其操作过程和操作时序与 I2 总线 SRA 的读写操作相同,这里不再详述。3 SD2001E 在嵌入式系统中的应用SD2001E 可广泛应用于智能
13、仪器仪表系统、水/ 电/气表等 I 卡应用系统、数据采集系统、工业控制系统、测控系统、门禁系统、家用电器等嵌入式应用领域。利用 SD2001E 可为系统提供以下功能。 (1)实时时钟日历 SD2001E 可为系统提供高精度的时钟及日历功能,以满足具有定时数据采集、输出控制、数据保存及定时报警等功能的嵌入式系统需要,同时也可为系统提供时间及日期显示功能。 (2)数据保存嵌入式系统一般均需要涉及到系统设置参数及采集数据保存的问题。通常的做法是,通过扩展 1 片 E2PR 芯片来保存设置参数及采集的数据,但 E2PR 存在擦写寿命有限及数据存储的可靠性不高等问题;而利用 SD2001E片内 32KB
14、、擦写数为 100 亿次的高性能 NVRA,则几乎不用考虑存储器的擦写寿命及数据存储的可靠性问题。因而,SD2001E 为需频繁读写数据的应用领域提供了很好的解决方案。(3 )频率输出对于需要固定频率输出或需要以 s 或 s 为单位的定时应用领域,可以通过设置频率事件数据给 INT1 寄存器,并置 INT1E 位为“0”和 INT1FE 位为“1 ”。此时,从 INT1引脚将输出频率为 32 768Hz1Hz 的固定频率,利用单片机的计数器或中断次数软件计数的方法可得到以 s 或 s 为单位的任意时间输出。 (4 )定时输出当系统需要以分钟为基本单位的定时输出时(如采集周期固定的多路数据采集、
15、巡回检测系统等) ,可将 SD2001E 状态寄存器的 INT1E 位置为“1” ,INT1FE 位置为“0” ,以选择为每分钟边沿中断输出或将INT1E、INT1FE 位同时置“1”选择为每分钟固定中断输出。通过单片机的计数器或中断次数软件计数的方法,可得到以 in 为单位的任意时间输出。 (5)定时报警对于具有定时报警输出要求的系统,可通过 SD2001E 的 INT1 寄存器来设置报警时间(小时和分钟数据) ,并将状态寄存器中的 INT1AE 位置为“1” 、INT1E 位及 INT1FE 位置为“0 ”来实现。需要指出的是 SD2001E 定时报警中断为每天一或二次。对于需要用到长时间
16、定时的报警系统,如每月或每年一次的报警系统,可通过软件编程的方法设定报警中断的时间。图 5 SD2001E 与单片机硬件连接4 具体应用与软件编程下面以 AT8952 单片机为例,给出 SD2001E 与单片机的典型接口电路。由于 AT8952 单片机没有 I2 总线接口,故这里使用 AT8952 的 P3.3、P3.4 口线,来模拟I2 总线,其中 SDA 与 P3.4 相连, SL 与 P3.3 相连。SD2001E 内部 SRA 的 I2 总线接口 SDAE与 SDA 并联,SLE 与 SL 并联。此外,为了实现定时报警中断输出的功能,还将 SD2001E INT1 端与单片机的 INT
17、0 外中断端相连,具体的硬件连接电路如图 5 所示。网络补充版(http:/.n)给出与上述硬件电路对应的子程序,包括 SD2001E 初始化子程序,实时时钟数据读、写子程序与 INT1 中断输出子程序。程序采用模拟 I2 总线软件包编制。由于SD2001E 高精度时钟日历芯片将可充电池、晶振充电电路及 256Kb 的 NVRA 集成在了一起,又采用了简单的 I2 总线接口,因而该器件无需扩展任何外围元件就可构成一个功能完善的时钟日历电路,同时又可为系统提供一个容量为 32KB 的高性能非易失性数据存储单元,故该器件是嵌入式系统时钟电路的良好选择。下载此论文:高精度时钟芯片 SD2001E 及其应用.dx(rd 文档)