基于DS3231的高精度时钟接口设计
2010-07-13方洁陈伟
方洁,陈伟
(武汉理工大学 信息工程学院,湖北 武汉 430070)
随着科技的迅猛发展,一些相应的精密仪器也随之问世,这些仪器中通常都需要设置准确的时钟,以保证时段的正确切换。DS3231是Maxim/Dallas公司生产的一款低成本、超高精度的I2C实时时钟芯片,该器件不仅能够在一定温度范围内提供优于±2 min/a的计时精度,而且省去制造过程中晶体安装和布线校准工序。这里给出一种基于DS3231的高精度时钟接口设计方案。
1 硬件设计
1.1 DS3231器件
DS3231是低成本,高精度I2C实时时钟(RTC),具有集成的温补晶体振荡器(TCXO)和1个32.768 kHz的晶体。该晶体包含电池输入端,断开主电源仍可保持精确计时。集成晶体振荡器可提高器件的长期精确度,并减少生产的元件数。DS3231提供商级和工业级温度范围,采用16引脚、300 mil的SO封装。RTC保持秒、分、时、星期、日期、月和年信息。当遇到少于31天的月份,将自动调整月末日期,包括闰年补偿。时钟的工作格式可以是24小时或带-AM/PM指示的12小时格式。提供2个可编程日历闹钟和1路可编程方波输出。地址与数据通过I2C双向串行传输。通过精密的、经过温度补偿的电压基准和比较器来监视VCC状态,检测电源故障,提供复位输出,并在必要时自动切换到备用电源。另外,监视引脚可作为手动按钮输入,以产生外部复位信号。
DS3231的引脚功能说明[1]如下:32 kHz是32 kHz频率输出;VCC用于主电源的DC引脚;SQW为低电平有效中断或方波输出;是低电平有效复位引脚;N.C.表示无连接,外部必须接地;GND为地;VBAT为备用电源输入;SDA为串行数据输入、输出;SCL为串行时钟输入。
1.2 硬件接口设计
图1为DS3231时钟与微控制器连接的典型接口电路[1-2]。
图1 D3231时钟与微控制器连接的接口电路
微控制器通过I2C总线与DS3231连接,DS3231的RST与微控制器的相连。DS3231的VCC接系统电源VCC,VBAT为备用电池输入,该引脚应连接一个低泄漏电容进行去耦。为低电平有效中断或方波输出,该漏极开路输出要求外接上拉电阻,如果不使用,可保持开路。微控制器主要通过I2C总线向时钟芯片DS3231写时间信息,DS3231以写入的时间信息为基准精确走时。上电后,微控制器从时钟芯片读取时间信息并存入内存供系统使用,器件每隔64 s测量一次温度,通过调节晶体的负载电容,使其在指定温度达到0 ppm的精度,最终达到提高时钟精度的目的[3]。即使系统断电一段时间后重新上电,时钟芯片内的实时数据仍能被正确读出。
2 软件接口程序设计
DS3231采用I2C总线与系统微控制器进行通信,I2C总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备,由于接口直接在组件之上,因此I2C总线占用空间少,减少了电路板的空间和芯片管脚的数量,降低了互联成本。它支持多主控,任何能够进行发送和接收的设备都可以成为主总线[4]。一个主控能够控制信号的传输和时钟频率。I2C总线通过两根连线(串行时钟线SCL和双向传送SDA)实现半双工同步数据传输,确保两器件之间地址和数据信息的双向传输。它采用器件地址的硬件设置方法(即每个器件具有一个确定的ID),通过软件寻址,从而避免器件的片选信号线寻址,使硬件系统扩展灵活简便[5]。为保证通信正常,必须保证I2C总线上的数据能够顺利传送。在数据开始传送前,首先让I2C接口进行初始化。图2为I2C总线初始化流程。
图2 初始化DS3231接口程序流程
DS3231的I2C接口的初始化操作可通过微控制器在总线上发送一个有效START条件来实现,因为微控制器产生的START信号能够终止DS3231的I2C接口当前的数据收、发过程,并将该接口置于START条件后的待命状态。但要发送一个有效的START条件,必须在DS3231释放SDA数据线时才能实现。如果SDA数据线处于低电平状态,这时,可以让系统微控制器产生一个附加的SCL脉冲来迫使DS3231接口送出下一位数据。假设下一位数据仍然为逻辑“0”,就继续产生附加的SCL脉冲,经过多个SCL脉冲后,DS3231就会释放SDA数据总线[6]。
完成I2C总线的初始化后,接着进行控制和状态寄存器的初始化设置,确定正确的数据范围,就可以运行相应的测控程序。
3 结束语
本文首先简介DS3231的特点、工作原理及引脚功能,设计了高精度时钟器件DS3231与微控制器之间通信的硬件接口与软件接口,本设计具有一定的通用性,对应用DS3231器件进行系统设计有一定的借鉴意义[7]。
[1]黄勤河,李景新.RX-8025及其在微机系统中的应用[J].电子设计,2004(5):87-89.
[2]田春雨,张旭辉,赵玉梅,等.实时时钟RX-8025的原理及其应用[J].电测与仪表,2003(5):48-51.
[3]高美珍,毛欲民,刘进军.AVR单片机与串行时钟器件DS3231的接口设计[J].电子设计工程,2007,15(5):47-51.
[4]赵 辉,董德存.I2C总线技术及其应用实例[J].徽型电胎应用,2005,21(4):61-63
[5]杜刚强,张 雪,施明贤,等.实时时钟DS3231读取信息出错的分析[J].单片机与嵌入式,2008(6):70-71.
[6]李根岱.可校准实时时钟芯片的研究和设计[D].武汉:华中科技大学,2007.
[7]陈 斌.RCT DS1511在信息记录中的应用[J].电子设计工程,2009,17(2):85-86.