新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > AVR单片机与串行时钟器件DS3231的应用设计

AVR单片机与串行时钟器件DS3231的应用设计

作者:时间:2012-06-07来源:网络收藏

BIT6位:电池备份的方波使能(BBSOW)。当设定为逻辑1并且由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 的数据交换及其格式

在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与的硬件接口

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

点击在新窗口中浏览产品

4 DS3231与的软件接口

软件设计中,首先要对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单片机接口部分代码:



评论


相关推荐

技术专区

关闭