您的位置 首页 > 新能源

DS1302的引言

[本站 DS1302的引言DS1302的引言DS1302的介绍关于DS1302介绍说:电源/后背电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力什么意思树莓派基础实验32:DS1302实时时钟模块实验DS1302怎么初始化时钟芯片DS1302…

DS1302的引言

  • DS1302的引言
  • DS1302的介绍
  • 关于DS1302介绍说:电源/后背电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力什么意思
  • 树莓派基础实验32:DS1302实时时钟模块实验
  • DS1302怎么初始化
  • 时钟芯片DS1302功能及具体介绍
  • 求DS1302和超级电容构成的电源备份电路
  • ds1302具有星期几自动计算功能么
  • ds1302时钟芯片工作原理

现在流行的串行时钟电路很多,如DS1302、 DS1307、PCF8485等。这些电路的接口简单、价格低廉、使用方便,被广泛地采用。本文介绍的实时时钟电路DS1302是DALLAS公司的一种具有涓细电流充电能力的电路,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32.768kHz晶振。

DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。

应该是有外接电源和后备电源二种供电方式,在用外接电源供电时,同时提供了对后备电源进行涓细电流充电的功能,使在外接电源断电时后备电源能续上使主机在一定时间内不丢失数据或设置。

??现在有很多流行的串行时钟芯片,如DS1302,DS1307,PCF8485等,由于简单的接口,低成本和易用性,他们被广泛应用于电话、传真、便携式仪器等产品领域。在本实验中,我们将使用DS1302实时时钟(RTC)模块获取当前日期和时间。

??DS1302可以用于数据记录,特别是对某些具有特殊意义的数据点的记录,能实现数据与出现该数据的时间同时记录。这种记录对长时间的连续测控系统结果的分析,及对异常数据出现的原因的查找具有重要意义。

??传统的数据记录方式是隔时采样或定时采样,没有具体的时间记录,因此,只能记录数据而无法准确记录其出现的时间;若采用单片机计时,一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且,某些测控系统可能不允许。但是,如果在系统中采用时钟芯片DS1302,则能很好地解决这个问题。

★Raspberry Pi 3主板*1

★树莓派电源*1

★40P软排线*1

★DS1302实时时钟模块*1

★面包板*1

★跳线若干

??DS1302是DALLAS(达拉斯)公司出的一款涓流充电时钟芯片,2001年DALLAS被MAXIM(美信)收购。
??DS1302实时时钟芯片广泛应用于电话、传真、便携式仪器等产品领域,他的主要性能指标如下:
??1、DS1302是一个实时时钟芯片,可以提供秒、分、小时、日期、月、年等信息,并且还有软年自动调整的能力,可以通过配置AM/PM来决定采用24小时格式还是12小时格式。
??2、拥有31字节数据存储RAM。
??3、串行I/O通信方式,相对并行来说比较节省IO口的使用。
??4、DS1302的工作电压比较宽,大概是2.0V~5.5V都可以正常工作。
??5、DS1302这种时钟芯片功耗一般都很低,它在工作电压2.0V的时候,工作电流小于300nA。
??6、DS1302共有8个引脚,有两种封装形式,一种是DIP-8封装,芯片宽度(不含引脚)是300mil,一种是SOP-8封装,有两 种宽度,一种是150mil,一种是208mil。我们看一下DS1302的引脚封装图:

??7、当供电电压是5V的时候,兼容标准的TTL电平标准,这里的意思是,可以完美的和单片机进行通信。
?? 8、由于DS1302是DS1202的升级版本,所以所有的功能都兼容DS1202。此外DS1302有两个电源输入,一个是主电源, 另外一个是备用电源,比如可以用电池或者大电容,这样是为了保证系统掉电的情况下,我们的时钟还会继续走。如果使用的是充电电池,还可以在正常工作时,设置充电功能,给我们的备用电池进行充电。

??DS1302的特点第二条“拥有31字节数据存储RAM”,这是DS1302额外存在的资源。这31字节的RAM相当于一个存储器一样,我们编写单片机程序的时候,可以把我们想存储的数据存储在DS1302里边,需要的时候读出来,这块功能和EEPROM有点类似,相当于一个掉电丢失数据的“EEPROM”,如果我们的时钟电路加上备用电池,那么这31个字节的RAM就可以替代EEPROM的功能了。

??DS1302一共有8个引脚,下边要根据引脚分布图和典型电路图来介绍一下每个引脚的功能:

??DS1302的电路一个重点就是时钟电路,它所使用的晶振是一个32.768k的晶振,晶振外部也不需要额外添加其他的电容或者电阻电路了。时钟的精度,首先取决于晶振的精度以及晶振的引脚负载电容。如果晶振不准或者负载电容过大过小,都会导致时钟误差过大。在这一切都搞定后,最终一个考虑因素是晶振的温漂。随着温度的变化,晶振往往精度会发生变化,因此,在实际的系统中,其中一种方法就是经常校对。比如我们所用的电脑的时钟,通常我们会设置一个选项“将计算机设置于internet时间同步”。选中这个选项后,一般可以过一段时间,我们的计算机就会和internet时间校准同步一次。

??对DS1302的操作就是对其内部寄存器的操作,DS1302内部共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读/写除充电寄存器以外的寄存器。

??DS1302的一条指令一个字节8位,其中第7位(即最高位)是固定1,这一位如果是0的话,那写进去是无效的。第6位是选择RAM还是CLOCK的,这里主要讲CLOCK时钟的使用,它的RAM功能我们不用,所以如果选择CLOCK功能,第6位是0,如果要用RAM,那第6位就是1。从第5到第1位,决定了寄存器的5位地址,而第0位是读写位,如果要写,这一位就是0,如果要读,这一位就是1。

??DS1302时钟的寄存器,其中8个和时钟有关的,5位地址分别是00000一直到00111这8个地址,还有一个寄存器的地址是01000,这是涓流充电所用的寄存器,我们这里不讲。在DS1302的数据手册里的地址,直接把第7位、第6位和第0位值给出来了,所以指令就成了80H、81H那些了,最低位是1,那么表示读,最低位是0表示写。

??寄存器一:最高位CH是一个时钟停止标志位。如果我们的时钟电路有备用电源部分,上电后,我们要先检测一下这一位,如果这一位是0,那说明我们的时钟在系统掉电后,由于备用电源的供给,时钟是持续正常运行的;如果这一位是1,那么说明我们的时钟在系统掉电后,时钟部分不工作了。若我们的Vcc1悬空或者是电池没电了,当我们下次重新上电时,读取这一位,那这一位就是1,我们可以通过这一位判断时钟在单片机系统掉电后是否持续运行。剩下的7位高3位是秒的十位,低4位是秒的个位,这里注意再提一次,DS1302内部是BCD码,而秒的十位最大是5,所以3个二进制位就够了。
??寄存器二:bit7没意义,剩下的7位高3位是分钟的十位,低4位是分钟的个位。
??寄存器三:bit7是1的话代表是12小时制,是0的话代表是24小时制,bit6固定是0,bit5在12小时制下0代表的是上午,1代表的是下午,在24小时制下和bit4一起代表了小时的十位,低4位代表的是小时的个位。
??寄存器四:高2位固定是0,bit5和bit4是日期的十位,低4位是日期的个位。
??寄存器五:高3位固定是0,bit4是月的十位,低4位是月的个位。
??寄存器六:高5位固定是0,低3位代表了星期。
??寄存器七:高4位代表了年的十位,低4位代表了年的个位。这里特别注意,这里的00到99年指的是2000年到2099年。
??寄存器八:bit7是一个保护位,如果这一位是1,那么是禁止给任何其他的寄存器或者那31个字节的RAM写数据的。因此在写数据之前,这一位必须先写成0。

?? 物理上,DS1302的通信接口由3个口线组成,即RST,SCLK,I/O。其中RST从低电平变成高电平启动一次数据传输过程,SCLK是时钟线,I/O是数据线。这个DS1302的通信线定义和SPI很像,事实上,DS1302的通信是SPI的变异种类,它用了SPI的通信时序,但是通信的时候没有完全按照SPI的规则来,下面我们介绍DS1302的变异SPI通信方式。

??请注意数据是对时钟信号敏感的,而且一般数据是在下降沿写入,上升沿读出。平时SCLK保持低电平,当需要写命令或者写数据时,在时钟输出变为高电平之前先输出数据;当需要读数据时,在时钟输出变为高电平之前采样读取数据。

?? 第1步: 连接电路。

?? 第2步: DS1302的Python程序比较复杂,我们先编写一个模块ds1302.py,在里面创建一个类DS1302(),在里面编写读取时钟信息等方法。

?? 第3步: 编写实际控制程序,导入上面的模块ds1302。运行本文件,不断循环读取并打印时钟信息。

??实验结果示例:

ds1302不用初始化,编写一段程序拷进去,把你需要的初试时间写进去就可以了。ds1302可以接一个纽扣电源,即使断电ds1302内部依然计时
DS1302的在实时显示时间中的应用。它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能。
关键词:时钟电路;实时时钟;单片机;
现在流行的串行时钟电路很多,如DS1302、 DS1307、PCF8485等。这些电路的接口简单、价格低廉、使用方便,被广泛地采用。本文介绍的实时时钟电路DS1302是DALLAS公司的一种具有涓细电流充电能力的电路,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32.768kHz晶振。

摘 要:介绍美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟电路DS1302的结构、工作原理及其在实时显示时间中的应用。它可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿等多种功能。给出DS1302在读写中的C51程序及流程图,以及在调试过程中的注意事项。
关键词:时钟电路;实时时钟;单片机;应用
1 引言
现在流行的串行时钟电路很多,如DS1302、 DS1307、PCF8485等。这些电路的接口简单、价格低廉、使用方便,被广泛地采用。本文介绍的实时时钟电路DS1302是DALLAS公司的一种具有涓细电流充电能力的电路,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32.768kHz晶振。
2 DS1302的结构及工作原理
DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。
2.1 引脚功能及结构
图1示出DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc≥2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),后面有详细说明。SCLK始终是输入端。
2.2 DS1302的控制字节
DS1302 的控制字如图2所示。控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。
2.3 数据输入输出(I/O)
在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。
2.4 DS1302的寄存器
DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表1。
此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。
3 DS1302实时显示时间的软硬件
DS1302与CPU的连接需要三条线,即SCLK(7)、I/O(6)、RST(5)。图3示出DS1302与89C2051的连接图,其中,时钟的显示用LCD。
3.1 DS1302与CPU的连接
实际上,在调试程序时可以不加电容器,只加一个32.768kHz 的晶振即可。只是选择晶振时,不同的晶振,误差也较大。另外,还可以在上面的电路中加入DS18B20,同时显示实时温度。只要占用CPU一个口线即可。 LCD还可以换成LED,还可以使用北京卫信杰科技发展有限公司生产的10位多功能8段液晶显示模块LCM101,内含看门狗(WDT)/时钟发生器及两种频率的蜂鸣器驱动电路,并有内置显示RAM,可显示任意字段笔划,具有3-4线串行接口,可与任何单片机、IC接口。功耗低,显示状态时电流为2μA (典型值),省电模式时小于1μA,工作电压为2.4V~3.3V,显示清晰。
3.2 DS1302实时时间流程
图4示出DS1302的实时时间流程。根据此流程框图,不难采集实时时间。下面结合流程图对DS1302的基本操作进行编程:
根据本人在调试中遇到的问题,特作如下说明:
DS1302 与微处理器进行数据交换时,首先由微处理器向电路发送命令字节,命令字节最高位MSB(D7)必须为逻辑1,如果D7=0,则禁止写DS1302,即写保护;D6=0,指定时钟数据,D6=1,指定RAM数据;D5~D1指定输入或输出的特定寄存器;最低位LSB(D0)为逻辑0,指定写操作(输入), D0=1,指定读操作(输出)。
在DS1302的时钟日历或RAM进行数据传送时,DS1302必须首先发送命令字节。若进行单字节传送,8位命令字节传送结束之后,在下2个SCLK周期的上升沿输入数据字节,或在下8个SCLK周期的下降沿输出数据字节。
DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM寄存器,在此方式下可一次性读、写所有的RAM的31个字节。
要特别说明的是备用电源B1,可以用电池或者超级电容器(0.1F以上)。虽然DS1302在主电源掉电后的耗电很小,但是,如果要长时间保证时钟正常,最好选用小型充电电池。可以用老式电脑主板上的3.6V充电电池。如果断电时间较短(几小时或几天)时,就可以用漏电较小的普通电解电容器代替。100 μF就可以保证1小时的正常走时。DS1302在第一次加电后,必须进行初始化操作。初始化后就可以按正常方法调整时间。
4 结论
DS1302 存在时钟精度不高,易受环境影响,出现时钟混乱等缺点。DS1302可以用于数据记录,特别是对某些具有特殊意义的数据点的记录,能实现数据与出现该数据的时间同时记录。这种记录对长时间的连续测控系统结果的分析及对异常数据出现的原因的查找具有重要意义。传统的数据记录方式是隔时采样或定时采样,没有具体的时间记录,因此,只能记录数据而无法准确记录其出现的时间;若采用单片机计时,一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且,某些测控系统可能不允许。但是,如果在系统中采用时钟芯片DS1302,则能很好地解决这个问题。

本文
将介绍实时时钟DS1302与超级电容的应用实例,有助于设计人员使用超级电容完成时钟保持、数据保持等电路的设计。---Dallas半导体公司的DS1302涓流充电时钟芯片是一个可编程3线串行接口时钟芯片,可用超级电容或可充电电池备份系统的时间和日期,还提供31字节的非易失SRAM用于数据存储。由DS1302和超级电容构成的电源备份电路如图1所示:
DS1302的VCC2接主电源,VCC1接超级电容正极。针对不同的电源备份系统,如可充电的镍氢电池、镍镉电池,还有容量不同的超级电容,DS1302专门提供了可编程涓流充电电路,以适应不同的充电电流要求,充电电路如图2所示:
通过设置电路内的DS和RS控制位,可设置不同的最大充电电流IMAX。例如控制字是10100101,则表示选通了一只二极管,同时选通阻值为2kΩ的R1,IMAX计算公式如式1,式中的VDrop是二极管的电压降。IMAX=(VCC2-n·VDrop)/R
n=1,2
(1)
表1列出了IMAX计算值,对应VCC2的值是4.5V、5.0V、5.5V,有1只二极管和2只二极管两种情况,电阻值为2kΩ、42kΩ和82kΩ。充电过程
作为电源备份的元件,超级电容的充、放电特性是关注的重点,结合DS1302的可编程充电电路,在下面给出充电时电压V(t)及电流I(t)与时间的函数及放电时电压V(t)与时间的函数。
超级电容端电压与时间的函数可表示为式2。
V(t)=VMAX
(2)
V(t)为超级电容端电压,VMAX等于VCC2减去n·VDrop,R为内部涓流充电电阻,C是超级电容的容量。超级电容两端电压充电到VMAX的95%所需时间见表2。
充电电流与时间的函数可表示为式3。
I(t)=VMAX/R·e(-t/RC)
(3)
I(t)为充电电流。
超级电容充电特性曲线如图3所示:
放电过程
要知道DS1302使用超级电容放电的时间,则需要了解DS1302的特性参数ICC1T(时间保持电流),ICC1T呈线性变化,这意味着DS1302可以表示为阻性负载RL,超级电容通过此负载来放电。根据DS1302数据手册,在VCC1为2.5V时,ICC1T为0.3μA,这样RL约为8.3MΩ。在不考虑超级电容自放电影响的情况下,超级电容放电特性可表示为式4。
V(t)=VMAX·e(-t/RLC)
(4)
RL为DS1302负载阻抗。电容放电至2V,根据上面公式计算的放电时间值见表3。
超级电容放电电压特性曲线见图4:

不可以自动算,你设完了以后,每过一天+1,到7回1。你是自己设的时候没变化,还是她自己走了1天了没变化?自己设要把周也设好,不然不会自己变的。

DS1302结构与工作原理
DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟,有计时的作用,和日常接触的电子表,万年历差不多,可以对年月日、时分秒、星期计时。可以用单片机往DS1302里面写入时间进行时间设置,也可以用单片机从DS1302中读取时间,读出来的时间也可以放在液晶上显示。这样就可以实现一块电子表的功能了。
DS1302引脚及功能:
X1,X2: 振荡源管脚,外接32.768KHz晶振
GND: 地
RST: 复位/片选线(通过置高电平来启动所有的数据传送。)
IO: 数据输入输出
SCLK: 串行时钟
VCC1: 电池引脚
VCC2: 主电源引脚 (双电源供电,在主电源关闭的情况下,有VCC1的电池供电,也能保持时钟的连续运行)
DS1302的工作原理很简单,它外接32768Hz的晶振提供震荡时钟。芯片内部的电路对晶振频率32768分频后获得周期为1S的秒信号,然后对秒信号计数,获得分钟、小时、天、星期、月、年等的数值。
实现方法:
DS1302的时间信息以寄存器的形式存储在芯片内部。DS1302的通讯接口由3根线组成,即RST,SCLK,I/O。单片机与DS1302通讯,采用的是SPI通讯接口,只不过是半双工了,只能分时进行收发。通过SPI接口,对相应的寄存器进行读操作,可以获得当前时间数值;写操作,可以设定当前时间。
下面介绍怎么对DS1302发号施令。
DS1302的命令字节格式:
一个完整的通讯帧由由2字节组成。第一字节是控制字节,第二字节为数据位。控制字格式如下:
1.bit0:读写标志。高电平为读,第二字节(蓝色圈内)会由DS1302输出数据;低电平为写,第二字节由单片机输出数据, DS1302接收;
2.bit1~5: 5位操作元地址,就是要对哪个寄存器进行操作。寄存器地址列表如图2.1。(红色圈内)
3.bit6:选择RAM区或寄存器区。如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;
4. bit7:必须是逻辑1,如果它为0,则不能把数据写入DS1302中。
图2.1
(CH:时钟停止位;为0时振荡器工作;为1时振荡器停止;AP=1时为下午模式,为0时上午模式。图2.1内还应该有第八个寄存器,地址为8E。它的bit7是需要重视的。bit7是一个保护位,如果这一位是1,那么是禁止给任何其他的寄存器或者那31个字节的RAM写数据的。因此在写数据之前,这一位必须先写成0。)
因为是SPI接口,单片机与DS1302通讯也是上升沿发送(写入1302数据),下降沿接收(读取1302数据)。控制字总是从最低位开始输出。在控制字指令输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从最低位(0位)开始。同样,在紧跟8位的控制字指令后的下一个SCLK脉冲的下降沿,读出DS1302的数据。读出的数据也是从最低位到最高位。数据读写时序如下图:


相关tag:ds1302介绍
本站部分资源来源于网络,如果侵犯了您的权益,请联系我们删除1354090129@qq.com

标签:数据   时钟   寄存

本文来自网络,不代表94汽车车网立场,所有(图文、音视频)均由用户自行上传分享,仅供网友学习交流,版权归原作者。若您的权利被侵害,请联系 56325386@qq.com 删除。转载请注明出处:https://94che.com/qc/143374.html

发表回复

您的电子邮箱地址不会被公开。

返回顶部