AVR单片机与串行时钟器件DS3231的接口设计

发布者:咖啡小熊最新更新时间:2007-06-08 来源: 国外电子元器件关键字:晶体  振荡  寄存  方波 手机看文章 扫描二维码
随时随地手机看文章

1 引言

由单片机构成的测控系统或智能显示屏经常需要用到实时日历或时钟信号。为节省CPU资源,本文介绍了串行时钟器件DS3231的应用及其与AVR单片机ATmega8的接口,该系统具有抗干扰能力强,计时准确且不随季节变化产生误差的特点。

2 DS3231的结构及工作原理

DS3231是低成本、高精度I2C实时时钟(RTC)器件,具有集成的温度补偿晶体振荡器(TCXO)。该器件包含电池输入端,断开主电源时仍可保持精确计时。集成的晶体振荡器可提高器件的长期精确度。DS3231的寄存器能保存秒、分、时、星期、日期、月、年和闹钟设置等信息。少于31天的月份,可自动调整月末日期,包括闰年补偿。时钟的工作格式为24小时或带AM/PM指示的12小时格式。DS3231提供两个可编程日历闹钟和一路可编程方波输出。地址与数据通过I2C双向串行总线传输。

2.1 DS3231的组成及工作原理

如图1所示,DS3231的主要组成部分有8个模块,划分为4个功能组:TCXO、电源控制、按钮复位和RTC。

2.1.1 32 kHz的TCXO

TCXO包括温度传感器、振荡器和控制逻辑。控制器读取片上温度传感器输出,使用查表法确定所需的电容,加上AGE寄存器的老化修正。然后设置电容选择寄存器。仅在温度变化或者用户启动的温度转换完成时,才加载包括AGE寄存器变化的新值。VCC初次上电时就会读取温度值,然后每隔64 s读取一次。

2.1.2 电源控制

电源控制功能由温度补偿电压基准(VPF)和监视VCC电平的比较器电路提供。当VCC高于VPF时,DS3231由VCC供电,当VCC低于VPF但高于VBAT时,DS3231由VCC供电;当VCC低于VPF并低于VBAT时,DS3231由VBAT供电。为保护电池,VBAT首次加到器件时振荡器并不启动,除非加载VCC,或者向器件写入一个有效的I2C地址。典型的振荡器启动时间在1 s以内。在VCC加电后或者有效的I2C地址写入后大约2 s,器件会测量一次温度,并使用计算的修正值校准振荡器。一旦振荡器运行,只要电源(VCC或者VBAT)有效就会一直保持工作状态。器件每隔64 s进行一次温度测量并校准振荡器频率。

2.1.3 按钮复位

DS3231具有连接至RST输出引脚的按钮开关功能。若DS3231不在复位周期,会持续监视RST信号的下降沿。如果检测到一个边沿转换,DS3231通过拉低RST完成开关去抖。内部定时器定时结束后,DS3231继续监视RST信号。如果信号依旧保持低电平,DS3231持续监视信号线以检测上升沿。一旦检测到按钮释放,DS3231强制RST为低电平并保持tRST。RST还可用于指示电源故障报警情况。当VCC低于VPF时,产生内部电源故障报警信号,并强制拉低RST引脚。当VCC返回至超过VPF电平时。RST保持低电平大约250 ms(tREC),使供电电源达到稳定。如果在VCC加载时,振荡器不工作,将跳过tREC,RST立刻变为高电平。

2.1.4 时钟和日历RTC

可以通过读取适当的寄存器字节获得时钟和日历信息。通过写入适当的寄存器字节设定或者初始化时钟和日历数据。时钟和日历寄存器的内容采用二-十进制编码(BCD)格式。DS3231运行于12小时或者24小时模式。小时寄存器的第6位定义为12或24小时模式选择位。该位为高时,选择12小时模式。在12小时模式下,第5位为AM/PM指示位,逻辑高时为PM。

2.1.5 闹钟

DS3231包含2个定时/日期闹钟。闹钟1可通过写入寄存器07h~0Ah设定。闹钟2可通过写入寄存器0Bh~0Dh设定。可对闹钟进行编程(通过控制寄存器的闹钟使能位和INTCN位),从而在闹钟匹配条件下触发INT/SQW输出。每个定时/日期闹钟寄存器的第7位是屏蔽位。当每个闹钟的屏蔽位均为逻辑0时,只有当计时寄存器中的值与存储于定时/日期闹钟寄存器中的对应值相匹配时才会告警。闹钟也可以编程为每秒、分、时、星期或日期重复告警。当RTC寄存器值与闹钟寄存器的设定值相匹配时,相应的闹钟标志位A1F或A2F置为逻辑1。如果对应的闹钟中断使能位A1IE或A2IE也置为逻辑1,并且INTCN位置为逻辑1,闹钟条件将会触发INT/SQW信号。RTC在时间和日期寄存器每秒更新时都会检测匹配情况。

2.2 DS3231的内部寄存器及功能

DS3231寄存器地址为00h~12h,分别用于存放秒、分、时、星期、日期及闹钟设置信息。在多字节访问期间,如果地址达到RAM空间的结尾12h处,将发生卷绕,此时定位到开始位置即00h单元。DS3231的时间和日历信息通过读取相应的寄存器来设置和初始化。辅助(用户)缓冲区用于防止内部寄存器更新时可能出现的错误。读取时间和日历寄存器时,用户缓冲区在任何START条件下或者寄存器指针返回到零时与内部寄存器同步。时间信息从这些辅助寄存器读取,此时时钟继续保持运行状态。这样在读操作期间发生主寄存器更新时可以避免重新读取寄存器。以控制寄存器(地址为0EH)为例,可以控制实时时钟、闹钟和方波输出。其各位定义如表1。

BIT7位:使能振荡器(EOEC)。设定为逻辑0时,启动振荡器。如果设定为逻辑1,在DS3231电源切换至VBAT时,振荡器停止。初次上电时该位清零(逻辑0)。当DS3231由VCC供电时,振荡器与EOSC位的状态无关,始终保持工作状态。

BIT6位:电池备份的方波使能(BBSOW)。当设定为逻辑1并且DS3231由VBAT引脚供电时,在没有加载VCC的情况下,该位使能方波输出。当BB-SQW设定为逻辑0时,若VCC降至低于电源故障门限值,则INT/SQW引脚变为高阻抗。初次上电时,该位清零(逻辑0)。

BIT5位:转换温度(CONV)。该位置为1时,强制温度传感器将温度转换成数字,并执行TCXO算法更新振荡器的电容阵列。只在空闲期间有效。状态位BSY=1时,禁止设定转换温度位。用户在强制控制器开始新的TCXO操作之前。应检查状态位BSY。用户启动的温度转换不影响内部64 s更新周期。用户启动的温度转换在大约2 ms内不会影响BSY位。CONV位从写入开始直到转换完成一直保持为1,转换完后,CONV和BSY均变为0。在监视用户启动转换状态时,应使用CONV位。

BIT4和BIT3位:频率选择(RS2和RS1),初次上电时,BIT4和BIT3设置为逻辑1。方波使能时用于控制方波输出的频率。RS1、RS2的逻辑值与方波输出频率的关系如表2所列。

BIT2位:中断控制(INTCN)。该位控制INT/SQW信号。INTCN置为0时,INT/SQW引脚输出方波;INTCN置为1时,若计时寄存器与任一个闹钟寄存器相匹配,则会触发INT/SQW信号(如果也使能闹钟的话)。匹配时相应的闹钟标志总是置位,而与INTCN位的状态无关。初次上电时,INTCN位置为逻辑1。

BIT1位:闹钟2中断使能(A2IE)。该位置为逻辑1时,允许状态寄存器中的闹钟2标志位(A2F)触发INT/SQW信号(当INTCN=1时)。当A2IE位置为0或者INTCN置为0时,A2F位不启动中断信号。初次上电时,A2IE位清零(逻辑0)。

BIT0位:闹钟1中断使能(A1IE)。该位置为逻辑1时,允许状态寄存器中的闹钟1标志位(A1F)触发INT/SQW信号(当INTCN=1时)。当A1IE位置为0或者INTCN置为0时,A1F位不启动INT/SQW信号。初次上电时,A1IE位清零(逻辑0)。

2.3 DS3231的数据交换及其格式

DS3231在I2C总线上作为从器件。通过执行START命令并且在验证器件地址后才可以访问。然后寄存器可以被访问直到执行一个STOP命令为止。

所有在I2C总线上传输的地址包长度均为9位,它包括7个地址位,1个R/W控制位和1个应答位ACK,如果R/W为1,则执行读操作;如果R/W为0,则执行写操作。从机寻址后,必须在第9个SCL(ACK)周期通过拉低SDA做出应答,若从机忙或者无法响应主机,则应在ACK周期内保持SDA为高。然后主机发出STOP状态或者REP START状态重新开始发送。地址包包括从机地址和称为SLA+R或者SLA+W的READ或者WRITE位。地址字节的MSB首先被发送。所有1111xxxx的地址均保留。以便将来使用。

所有在I2C总线上传送的数据包长度均为9位,它包括8个数据位和1个应答位。在数据传送中,主机产生时钟及START与STOP状态,而接收器响应接收。应答是由ACK在第9个SCL周期拉低SDA实现的。如果接收器拉高SDA,则发送NACK信号。如果接收器由于某种原因不能接收更多数据,应在最后一个数据字节后发出NACK信号告诉发送器停止发送,首先发送数据的MSB。

DS3231通过双向数据线SDA和时钟线SCL与外界进行数据交换,从其时序关系可看出,DS3231有两种操作方式:

(1) 写操作:把SDA数据线上的数据按RAM指定的首地址(Word Address)依次写入N个字节数据。主器件首先传输从器件的地址字节,紧跟着是一系列数据字节。从器件每收到一个字节后返回一个应答位ACK。其格式如图2所示。

(2) 读操作:按RAM指定的首地址依次读取N个字节数据,主器件首先传送从器件地址。从器件返回一个应答位。随后是从器件传输的一系列数据字节。主器件收到除最后一个字节外的所有字节后返回一个应答位。在收到最后一个字节后,返回一个“非应答位”NACK。其格式如图3所示。

上述读写操作信号中:S为起始信号(START),1101 000为DS1307的口地址,A为应答信号ACK,A为非应答信号NACK,P为停止信号(STOP)。主器件产生所有的串行时钟和START、STOP条件,通过传输STOP和重发START条件使其停止。

3 DS3231与AVR单片机的硬件接口

ATmega系列单片机片内集成2线制串行接口模块。Atmel称其为TWI接口。事实上,TWI与Philips的I2C总线是一回事。AVR硬件实现的TWI接口是面向字节和基于中断的,相对软件模拟I2C总线有更好的实时性和代码效率,引脚输入部分还具有毛刺抑制单元,可去除高频干扰。图4是DS3231与AVR单片机ATmega8的硬件接口电路原理图。

4 DS3231与AVR单片机的软件接口

软件设计中,首先要对AVR单片机ATMega8与实时钟器件DS3231进行初始化。给DS3231准确的日期和时间。不论主控模式还是被控模式,都应当将TWI控制寄存器TWCR的TWEN位置为1,从而使能TWI模块。TWEN位被置位后,I/O引脚 PC5和PC4转换成SCL和SDA,对TWI 控制寄存器TWCR的操作可在总线上产生START和STOP信号,从START到STOP认为是主控模式的行为。将TWI地址寄存器TWAR的第一位TWGCE置为有效,同时将TWI控制寄存器TWCR的TWEA(应答允许)位置1,TWI模块就可以在总线上对其寻址做出应答,并置状态字。对TWI模块的操作均为寄存器的读写操作,Avr-libc没有提供专门的API,可以利用基于US-ART的标准I/O实现对DS3231读写日历和时钟的操作。下面的程序是DS3231与AVR单片机接口部分代码:



5 结束语

选用实时时钟器件DS3231和AVR单片机ATmega8设计了一个日历时钟系统,该系统体积小,通用性强。DS3231具有集成的温度补偿晶体振荡器(TCXO),计时准确且不随季节的变化而产生误差。该系统适用于智能显示屏以及实时测控系统。

关键字:晶体  振荡  寄存  方波 引用地址:AVR单片机与串行时钟器件DS3231的接口设计

上一篇:基于单片机的智能电话报警系统
下一篇:基于单片机PIC18F66J10的主动放线机设计

推荐阅读最新更新时间:2024-03-16 12:22

ARM汇编编程基础之一 —— 寄存
ARM的汇编编程,本质上就是针对CPU寄存器的编程,所以我们首先要弄清楚ARM有哪些寄存器?这些寄存器都是如何使用的? ARM寄存器分为2类,普通寄存器和状态寄存器 寄存器类别 寄存器在汇编中的名称 各模式下实际访问的寄存器 用户 系统 管理 中止 未定义 中断 快中断 通用寄存器和程序计数器 R0(a1) R0 R1(a2) R1 R2(a3) R2 R3(a4) R3 R4(v1) R4 R5(v2) R5 R6(v3) R6 R7(v4) R7 R8(v5) R8 R8_fiq R9(SB,v6) R9 R9_fiq R10(S
[单片机]
东芝将采用最新工艺技术开发新型晶体管阵列系列
通过采用DMOS FET 型输出驱动器来扩大高效晶体管阵列阵容 东京—东芝公司(TOKYO:6502)今天宣布,该公司正在开发BiCD 晶体管阵列TB62xxxA系列,以取代其双极晶体管阵列TD62xxx系列。后者在一系列广泛的应用中使用,包括电机、继电器和LED驱动。新一代系列产品将搭载采用最新的BiCD工艺技术开发的DMOS FET型输出驱动器。样品出货和量产计划于2015年6月启动。 相比现有的双极晶体管阵列,新产品将提供更快的切换速度并减少输入电流,同时有助于提高功率效率。 东芝供应双极晶体管阵列的历史已逾40年,且目前中压(约50V)TD62xxx系列包含100多款装置。随着近来客户对金属氧化物半导体场效
[模拟电子]
STM8 CPU寄存器描述
简介 STM8S是基于8位框架结构的微控制器,其CPU内核有6个内部寄存器,通过这些寄存器可高效 地进行数据处理。STM8S的指令集支持80条基本 20种寻址模式,而且CPU的6个内部寄 存器都拥有可寻址的地址。如果想了解全部STM8S指令集,请参考STM8 微控制器家族编程手册 (PM0044)。 CPU寄存器 在图1所示的编程模型中可以看到6个CPU寄存器。在一个中断发生后,寄存器以图2所示顺序入栈,它们以相反的顺序出栈。如果需要的话,中断服务程序可使用POP和PUSH指令来对之进行操作。 CPU寄存器描述 累加器(A) 累加器是一个8位通用目的寄存器,用于保存算术运算、逻辑运算以及数据操作的操作数及结果。 索引寄存
[单片机]
STM8 CPU<font color='red'>寄存</font>器描述
使用双输出电流控制传输器的振荡
前十年里,工程师们在使用第二代电流传输器设计和实现电流模式电路时做了大量工作,这种传输器比其前一代有较高的信号带宽、更好的线性度、较大的动态范围、较简单的电路,以及较低的功耗。最近,出现了第二代双输出的电流控制传输器。该器件是一种有源构建块(图1),由下列方程描述其特性:IY=0、VX=VY+IXRX和IZ+=IX、IZ–=–IX。终端X的寄生电阻为RX=(VT/2IB),其中VT是热电压,而IB是可以在数十倍内调整的传输器偏置电流。                                     图2是用少量元件的电流控制振荡器,它只使用了两只双输出电流控制传输器和两只接地电容。这些器件没有外接电阻,终端X的寄生电阻
[电源管理]
使用双输出电流控制传输器的<font color='red'>振荡</font>器
2440-中断寄存器详解
S3C2440的中断寄存器: 1.中断分两大类:内部中断和外部中断。 2.外部中断。24个外部中断占用GPF0-GPF7(EINT0-EINT7),GPG0-GPG15(EINT8-EINT23)。用这些脚做中断输入,则必须配置引脚为中断,并且不要上拉。具体参考datesheet数据手册。 寄存器:EXTINT0-EXTINT2:三个寄存器设定EINT0-EINT23的触发方式。 EINTFLT0-EINTFLT3:控制滤波时钟和滤波宽度。 EINTPEND:这个是中断挂起寄存器,清除时要写1,后面还有几个是写1清除。当一个外部中断(EINT4-EINT23)发生后,那么相应的位会被置1。为什么没有EI
[单片机]
2440-中断<font color='red'>寄存</font>器详解
晶盛机电:公司碳化硅长晶炉成功生长出6英寸碳化硅晶体
7月5日,晶盛机电在投资者互动平台表示,公司的碳化硅长晶炉已成功生长出6英寸碳化硅晶体,同时8英寸碳化硅晶体生长已在研发中。 公司称,近年布局的第三代半导体材料碳化硅的研发取得关键进展,碳化硅外延设备已通过客户验证。同时在碳化硅晶体生长、切片、抛光环节规划建立测试线,以实现装备和工艺技术的领先,目前测试线进展顺利,设备分批进厂安装调试中。 晶盛机电表示,海康威视是公司重要的合作伙伴。根据公司2016年9月7日发布的公告,公司于2016年9月6日与杭州海康威视数字技术股份有限公司在杭州签署了《海康威视&晶盛机电战略合作协议》,双方本着优势互补、平等互利和长期合作的原则,共同决定在工业机器人、智能装备、智能物流、智慧物联工厂等领域展开
[手机便携]
与51单片机定时/计数器相关的三个控制寄存
   1、TMOD(方式控制寄存器)   GATE:设置定时/计数器的启动或停止是否需要外部中断引脚参与控制      GATE=0,不需要外部中断引脚参与控制。      GATE=1,定时/计数器由TR1/TR0 和外部中断引脚共同控制。      C/T:设定定时/计数器的状态      C/T=1 设定为计数器      C/T=0 设定为定时器      M1、M0:设定计数器的长度      00:13 位      01:16 位   10:8 位自动重装      11:8 位      2、TCON(定时/计数器控制寄存器)      TF1、TF0:定时/计数器溢出中断标志位,由系统自动置位或清零,用户不能
[单片机]
TDK宣布停产陶瓷振荡器产品
日本电子元件巨擘TDK 28日发布新闻稿宣布,将于2012年9月停产陶瓷谐振器(Ceramic Resonator)产品,主因竞争对手采取低价攻势,导致获利持续恶化。TDK指出,随着陶瓷谐振器停产,该公司也计划于2012年9月底关闭旗下TDK庄内(TDK Shonai)所属的游佐工厂(山形县游佐町)。TDK表示,此次的关厂/停产措施,为之前公布的结构改革措施的一环。 TDK社长上釜健宏于10月31日宣布,因日圆飙涨、泰国洪灾冲击、加上全球景气低迷导致业绩恶化,故该公司计划于今后1-2年内整编日本国内外(全球)生产体制,于全球裁撤1.1万名员工,裁员人数占该公司整体员工比重达13%。
[模拟电子]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved