摘要:根据坦克半主动悬挂电控单元对定时的需要,文中给出了采用I2 C总线接口实时时钟芯片进行准确定时的设计原理,提出了实时时钟芯片DS1307与单片机接口电路的改进办法,同时给出了通用接口程序实例,最后对DS1307在应用时的一些注意事项进行了必要的说明。
关键词:半主动悬挂;I2C总线;I2C总线虚拟技术;DS1307
1 引言
坦克半主动悬挂技术是坦克行动部分的关键技术,其中的电控单元是坦克悬挂按指定控制规律运动的保障,所以电控单元时钟的选择是至关重要的。
电控单元的时钟基准通常可利用CPU内部定时器作为时钟基准,并通过软件编程和CPU时钟中断来构造一个软时钟。这种方法的优点是无需额外硬件支持,但缺点是时钟的计时精度受CPU主晶振以及与其相连的起振电容的影响而无法做到很高,因此累积误差较大。同时在主电源掉电时为了维持时钟不停摆,系统必须由备用电源给整个CPU供电,这将导致功耗增大。
2 DS1307的特点
DS1307是美国DALLAS公司推出的I2C 总线接口实时时钟芯片,它可独立于CPU工作,不受CPU主晶振及其电容的影响,且计时准确,月累积误差一般小于10秒。芯片还具有主电源掉电情况下的时钟保护电路,DS1307的时钟靠后备电池维持工作,拒绝CPU对其读出和写入访问。同时还具有备用电源自动切换控制电路,因而可在主电源掉电和其它一些恶劣环境场合中保证系统时钟的定时准确性。DS1307具有产生秒、分、时、日、月、年等功能,且具有闰年自动调整功能。同时,DS1307芯片内部还集成有一定容量、具有掉电保护特性的静态RAM,可用于保存一些关键数据。
3 硬件接口电路的改进
按照DALLAS公司推荐的硬件接法,往往需要精度很度的晶体,为了提高其可靠性并节约成本,笔者经过实验,改用如图1的接法,克服了使用普通晶振时DS1307不起振的问题。从而保证了DS1307起振。
图1中R1的作用是给晶振端加一偏置电压,以保证DS1307起振,从而放宽DS1307对晶振的要求。而R2和R3则为I2C总线所需要的上拉电阻。
4 接口程序设计
4 .1 I2C总线的特点
I2C总线是飞利浦公司的一种二线通信专利技术。它可用两根线(SDA数据线和SCL时钟线)连接多个具有I2C总线接口的器件,每类I2C器件都有唯一确定的地址号,以便在器件之间进行数据传送。I2C总线是同步串行数据传输总线,其内部为双向传输电路,端口输出为开漏结构,故总线上必须有上拉电阻,通常可取5~10kΩ。I2C总线上可以连接若干单片机和外围器件,每一个器件由一个唯一的地址 确定,I2C总线的传输速率为100kb/s(改进后的规范为400kb/s),总线驱动能力为400pF。
数据传送位为I2C总线启动后或应答信号启动后的第1~8个时钟脉冲所对应的一个字节的8位数据传送。在脉冲高电平期间,数据进行串行传送,而在低电平期间为数据准备,同时允许总线上的数据进行电平变换。
( 2 )DS1307的数据访问格式D
S1307的一次完整数据操作包括起始(S)、发送寻址字节、应答、发送数据、应答......直到终止(P)。DS1307有两种操作模式:第一种模式为从器件接收模式(DS1307数据写入模式),其数据操作格式如图3所示。第二种模式为从器件发送模式(DS1307数据读出模式),其数据操作格式如图4所示。
4 .4 DS1307的寄存器结构
DS1307中的时间寄存器地址编码为00H-07H,而具有掉电保护的RAM寄存器的地址编码为08H-3FH。当地址指针指向RAM的最后一个地址3FH时,若进行多字节操作,则地址指针将会复位而指向00H,这样原来存在00H的数据将会丢失。DS1307的各类时间数据均以BCD码的格式存贮在相应的时间寄存器中,具体分配为:
0 0H:秒;01H:分;02H:小时;03H;星期04H:日期;05H:月;06H:年;07H:控制字。
D S1307可运行在12/24小时(AM/PM)模式下,并由时间控制器中的相应位来进行控制。
5 DS1307驱动程序编制
在对DS1307进行数据写入时,应先将日历时钟信息存放于单片机内部从45H开始的8个RAM单元,而从DS1307读出的数据同样需存放在其中。下面是根据本文电路编制的驱动程序:
变量定义:
本文关键字:接口 接口电路,单元电路 - 接口电路