DS1302时钟
介绍
DS1302是由美国DALLAS公司推出的具有涓细电流充电能力(即可通过单片机供电来给电池充电)的低功耗实时时钟芯片。它可以对年、月、日、周、时、分、秒进行计时且具有闰年补偿等多种功能
RTC(Real Time Clock):实时时钟,是一种集成电路,通常称为时钟芯片
DS1302 包含于 RTC,优点是精度很高,集成化更强,但价格更贵
单片机的定时器与DS1302相比,会占用CPU时间、精确度也较低、且掉电后无法继续运行,即不能断电
而DS1302时钟芯片带有一个备用电池,当单片机断电时,它内部逻辑判断会将供电源切换到备用电池上,保证走时继续进行,这样单片机下次上电时所显示时间仍正确
引脚定义和应用电路
左图为芯片的两种分装模式,上图为直插分装,下图为贴片分装,二者在集成电路、引脚定义上都没有差别,只是在电路板上的分装方式不同
右图为芯片的应用电路
VCC2:主电源
VCC1:备用电池
GND:电源地
SCLK:串行时钟
X1、X2:32.768KHz(更适合于该芯片,精度更高)晶振,全称为石英晶体增长器
CE:芯片使能
I/O:数据输入/输出
SCLK:串行时钟
CE、I/O、SCLK为通信引脚
内部结构框图
X1、X2连接到外部晶振,通过分频等操作最终以1Hz的频率给时钟发送脉冲,而后时钟进行正常计时
左边的下半部分是用于对时钟进行读写操作的,CE为芯片使能,但实际上使能的是对时钟的读写,而CE的值并不影响时钟的正常工作。I/O为数据输入端,SCLK为串行时钟,还有移位寄存器,它们共同实现了数据的写入/读出,具体功能不再赘述
寄存器定义
上图为时钟芯片中命令字与具体数据的对应关系
Date是几号,Day指星期几
WP:Write Protect 写入保护,当WP为逻辑1时,无法写入数据,但可读出
CH:时钟暂停,置1时时钟停止运行,置0时正常运转
12/24:置1时小时最高到12,置0时24小时制
AM/PM:当12小时制时,此位置0显示AM,置1显示PM
下图为命令字,命令字启动每一次数据传输。MSB(位7)必须是逻辑1.如果是0,则禁止对DS1302进行写入.位6在逻辑0时规定为时钟/日历数据,逻辑1是为RAM数据.位1到位5表示了输入输出的指定寄存器.LSB(位0)在逻辑0时为写操作(输出),逻辑1时为读操作(输入).命令字以LSB(位0)开始总是输入.
命令字决定了对哪个位置进行操作以及进行的操作是输入还是读出
BCD码
BCD码(Binary Coded Decimal),用4位二进制数来表示1位十进制数
例:00010011表示13,1000 0101表示85,0001 1010不合法
在十六进制写法中的体现:0x13表示13,0x85表示85,0x1A不合法
BCD码转十进制:DEC=BCD/1610+BCD%16:(2位BCD)
十进制转BCD码:BCD=DEC/1016+DEC%10:(2位BCD)
时钟的寄存器中各位数据均以BCD码形式存储
时序定义
CE:即时钟使能,在写入过程中要保持高电平,写入操作结束时清零
SCLK:给一个固定的时钟,在时钟的上升沿,I/O口中数据被写入,下降沿DS1302会将其数据输出(时钟数据被读出)
I/O:数据输入端
DS1302中的数据自然不能同时进行写入和读出操作,两种操作的选择是由命令字中的最低位RW决定的
具体流程
CE置1给高电平——I/O口输入命令字的最低位(判断读or写,决定数据传输模式)——SCLK给一个固定时钟
而后若为写入操作:
第一个上升沿,RW位数据写入,SCLK置0,第二个上升沿写入次低位数据,循环往复直至写入命令字的最高位。再输入的即所要写入数据的最低位,再同样循环八次就完成了写入操作
为什么从低位开始写:这里用到的是移位寄存器,其工作原理决定了我们的写入顺序
若为读出操作,则为下降沿时数据被读出,循环次数和数据读取顺序与上述写入操作相同