登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

ds1307在电池供电时怎么不计时了

作者:yjk 栏目:单片机
DS1307在电池供电时怎么不计时了
我用的是CR2032给1307供电,断电一段时间之后在上电读取时间日期数据时发现1307在断电时间内未计时,请问谁遇到过这样的问题吗?

2楼: >>参与讨论
lhlsw
断电一段时间之后在上电读取时间日期数据时
是初始的数据还是?


3楼: >>参与讨论
yjk
也不是初始的时间,走了10分钟左右
 
4楼: >>参与讨论
lhlsw
这么说程序因该不会有问题拉,换IC,查电池,晶振看看
 
5楼: >>参与讨论
laobao58
可能是电池供电有问题
 
6楼: >>参与讨论
后学
sign
我手头有个项目也用到DS1307,还没有做

转个文章













I2C总线接口时钟芯片DS1307在坦克半主动悬挂电控单元中的应用


北京理工大学车辆工程学院刘琰李辉顾亮宋媛媛


    摘要:根据坦克半主动悬挂电控单元对定时的需要,文中给出了采用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。




4.2 I2C总线虚拟技术
  普通的微处理器通常无I2C总线接口,这样要驱动DS1307,就必须采用单主方式下的I2C总线虚拟技术。在单主方式的I2C总线系统中,总线上只有一个单片机,其余都是带I2C总线的外围器件,由于总线上只能有一个单片机成为主节点(又称之为主器件),因此该单片机将永远占据总线而不会出现总线竞争,主节点不必有自己的节点地址,在这种情况下,单片机可以没有I2C总线接口,但可以用两根I/O口线来虚拟I2C总线接口,这就是I2C总线虚拟技术。在I2C总线中,发送数据的设备称之为发送器,接收数据的设备称之为接收器。I2C总线上的主器件应是能够在时钟线(SDL)上产生时钟脉冲,而在数据线(SDA)上产生寻址信号、开始条件、停止条件以及建立数据传输的器件,任何被寻址选中的器件都将被看成是从器件。因此,DS1307在I2C总线上应作为从器件.  
4.3  DS1307的时序   
    (1)I2C总线上的信号
  DS1307的操作时序实际上就是I2C总线时序。总线上传送的一帧数据为一个字节。启动I2C总线后,传送的字节数没有限制,它只要求每传送一个字节后,对方回应一个应答位。在发送时,首先发送数据的最高位。每次传送开始均需要有一个起始信号,结束时有一个停止信号。在总线传送完一个字节后,可以通过对时钟线的控制来使传送暂停。I2C总线上的信号如图2所示。由图中可以看出,启动信号(S)出现在时钟SCL为高电平,且数据线SDA由高电平到低电平的变化时。
  停止信号(P)是在时钟SCL为高电平且数据线SDA由低到高电平变化时,可用来停止I2C总线数据的传递。应答信号(A)为I2C总线上的第9个时钟
脉冲对应的应答位。当相应的数据线为低电平时为“应答”信号(),高电平时为“非应答”信号(A)。






  数据传送位为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码的格式存贮在相应的时间寄存器中,具体分配为:
  00H:秒;01H:分;02H:小时;03H;星期04H:日期;05H:月;06H:年;07H:控制字。
  DS1307可运行在12/24小时(AM/PM)模式下,并由时间控制器中的相应位来进行控制。

5  DS1307驱动程序编制

  在对DS1307进行数据写入时,应先将日历时钟信息存放于单片机内部从45H开始的8个RAM单元,而从DS1307读出的数据同样需存放在其中。下面是根据本文电路编制的驱动程序:
    变量定义:

  
  
  
  
  
  
  
  
  
  

    Delay_4:为延时4μs的子程序,可根据选用的主晶振的频率编写
    主调函数;
  
  

6  结束语

  本文提出了对DS1307硬件电路的改进方案,同时设计了DS1307的驱动程序,由于DS1307是I2C器件,所以本驱动程序同样也适用于其它I2C器件的驱动。在使用此程序完全驱动I2C器件24C256(32kEEPROM)时,根据笔者的使用经验,设计时应注意DS1307的VCC脚电压一定要高于Vbat(后备电池)的1.5倍,否则可能会出现时钟虽可继续走动,但是DS1307将拒绝CPU的一切读取和写入操作的现象。

参考文献

1.Dallasproductdata book.2001
2.单片机应用系统设计.北京:北京航空航天大学出版社,1998


7楼: >>参与讨论
yjk
解决了,换了个好点的晶振
换了个晶振(齐斯),换上去就好了

参与讨论
昵称:
讨论内容:
 
 
相关帖子
哪位有MOTOLORA的单片机仿真软件WINIDE免费版本
请教:哪位有SC16C550的中文资料
请教:m38503的芯片资料去哪里找,谢谢?
w78e58b的外部aux-ram在keil中怎么用。
DS12887的问题
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号