为避免电路系统在上电或断电后出现计时不准确的异常状况,提出采用高精度时钟芯片DS3231的解决方案。介绍DS3231的特点、工作原理以及引脚功能,设计其与微控制器进行通信时的软件、硬件接口,并给出相应的原理图与流程图,此方案对DS3231在一般的电路系统设计中具有通用性。由于DS3231是目前精度最高,并集成有温补振荡器和晶体的实时时钟芯片,因此该方案对那些对计时精度要求极高的应用具有一定的借鉴意义。
关键词:DS3231;I2C总线;实时时钟;接口;通信
随着科技的迅猛发展,一些相应的精密仪器也随之问世,这些仪器中通常都需要设置准确的时钟,以保证时段的正确切换。DS323l是Maxim/Dallas公司生产的一款低成本、超高精度的I2C实时时钟芯片,该器件不仅能够在一定温度范同内提供优于±2 min/a的计时精度,而且省去制造过程中晶体安装和布线校准工序。这里给出一种基于DS323l的高精度时钟接口设计方案。
1 硬件设计
1.1 DS3231器件
DS323l是低成本,高精度I2C实时时钟(RTC),具有集成的温补晶体振荡器(TCXO)和1个32.768 kHz的晶体。该晶体包含电池输入端,断开主电源仍可保持精确计时。集成晶体振荡器可提高器件的长期精确度,并减少生产的元件数。DS3231提供商级和工业级温度范围,采用16引脚、300 mil的SO封装。RTC保持秒、分、时、星期、日期、月和年信息。当遇到少于31天的月份,将自动调整月末日期,包括闰年补偿。时钟的工作格式可以是24小时或带-AM/PM指示的12小时格式。提供2个可编程日历闹钟和l路可编程方波输出。地址与数据通过I2C双向串行传输。通过精密的、经过温度补偿的电压基准和比较器来监视VCC状态,检测电源故障,提供复位输出,并在必要时自动切换到备用电源。另外,监视引脚可作为手动按钮输入。以产生外部复位信号。
DS323l的引脚功能说明如下:32 kHz是32 kHz频率输出;VCC用于主电源的DC引脚;为低电平有效中断或方波输出:是低电平有效复位引脚;N.C.表示无连接,外部必须接地;GND为地;VBAT为备用电源输入;SDA为串行数据输入、输出;SCL为串行时钟输入。
1.2硬件接口设计
图1为DS323l时钟与微控制器连接的典型接口电路。
微控制器通过I2C总线与DS3231连接,DS3231的与微控制器的相连。DS3231的VCC接系统电源VCC,VBAT为备用电池输入,该引脚应连接一个低泄漏电容进行去耦。为低电平有效中断或方波输出,该漏极开路输出要求外接上拉电阻,如果不使用,可保持开路。微控制器主要通过I2C总线向时钟芯片DS323l写时间信息,DS323l以写入的时间信息为基准精确走时。上电后,微控制器从时钟芯片读取时间信息并存入内存供系统使用,器件每隔64 s测量一次温度,通过调节晶体的负载电容,使其在指定温度达到O ppm的精度,最终达到提高时钟精度的目的。即使系统断电一段时间后重新上电,时钟芯片内的实时数据仍能被正确读出。
2 软件接口程序设计
DS323l采用I2C总线与系统微控制器进行通信,I2C总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备,由于接口直接在组件之上,因此I2C总线占用空间少。减少了电路板的空间和芯片管脚的数量,降低了互联成本。它支持多主控,任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。
I2C总线通过两根连线(串行时钟线SCL和双向传送SDA)实现半双工同步数据传输,确保两器件之间地址和数据信息的双向传输。它采用器件地址的硬件设置方法(即每个器件具有一个确定的ID),通过软件寻址,从而避免器件的片选信号线寻址,使硬件系统扩展灵活简便。为保证通信正常,必须保证I2C总线上的数据能够顺利传送。在数据开始传送前,首先让I2C接口进行初始化。图2为I2C总线初始化流程。
DS3231的I2C接口的初始化操作可通过微控制器在总线上发送一个有效START条件来实现,因为微控制器产生的START信号能够终止DS3231的I2C接口当前的数据收、发过程,并将该接口置于START条件后的待命状态。但要发送一个有效的START条件,必须在DS323l释放SDA数据线时才能实现。如果SDA数据线处于低电平状态,这时,可以让系统微控制器产生一个附加的SCL脉冲来迫使DS323l接口送出下一位数据。假设下一位数据仍然为逻辑“0”,就继续产生附加的SCL脉冲,经过多个SCL脉冲后,DS323l就会释放SDA数据总线。
完成I2C总线的初始化后,接着进行控制和状态寄存器的初始化设置,确定正确的数据范围,就可以运行相应的测控程序。
3 结束语
本文首先简介DS323l的特点、工作原理及引脚功能,设计了高精度时钟器件DS3231与微控制器之间通信的硬件接口与软件接口,本设计具有一定的通用性,对应用DS3231器件进行系统设计有一定的借鉴意义。