DS1302菜鸟级讲解

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

慧争电子免费共享资料、欢迎复制共享、没有版权。HJ-2G多功能AVR/51二合一开发板学习笔记慧净小店:开发板超市:第12章DS130212.112.112.112.1概述DS1302实时时钟芯片我真的为她着迷呀。什么原因导致我为她着迷?自己接触后您自然而然会明白的。本片笔记的手法与前几章写笔记的手法明显而外的不同,因为介绍DS1302芯片不像是介绍单片机内部的资源一样,都有参考步骤可言,但设置DS1302的方法太多样化了,让新手很不容易。12.212.212.212.2芯片介绍我在看视频教程时,老时觉得很奇怪的,为什么老师会把RST信号说成片选信号呢?这也难怪的,因为在DS1302的时序图,RST信号的角色有如片选信号。众多的芯片中,往往最后的PIN都是工作电源的输入。可是DS1302却是很奇特,VCC2是工作电源的输入而VCC1却是后备电源的输入,或者是充电的电流的经过,更详细的介绍在后面的内容会继续介绍。SCLK是串行时钟信号的输入,而I/O则是串行数据输入输出。X1,X2是晶振32.768kHz的输入,数据手册中有记录晶振的两端需无极电容,手册中的记录是6pf,但是在众多的AVR学习板中会看到23pf,27pf的出现。12.312.312.312.3时序分析以上是DS1302一个字节写入的时序图。第一个字节是地址字节,第二个字节是数据字节。RST信号必须拉高,否则数据的输入是无效的。换一句话说,RST信号控制数据|时间信号输入的开始和结束。地址字节和数据字节的读取时上升沿有效,而且是由LSB开始读入。VCC2工作电源GND电源地VCC1后备电源SCLK时钟信号I/O数据输入输出RST复位信号|片选信号慧争电子免费共享资料、欢迎复制共享、没有版权。HJ-2G多功能AVR/51二合一开发板学习笔记慧净小店:开发板超市:读一个字节和写一个字节有明显的不一样,先是写地址字节,然后再读数据字节,写地址字节时上升沿有效,而读数据字节时下降沿有效,当然前提是RST信号必须拉高。写地址字节和读数据字节同是LSB开始。再重申一次,读一个字节和写一个字节是不一样,在写一个字节的时候,AVR的IO口一直保持输出状态,相反的在读一个字节的时候AVR的IO口先是输出状态,然后是输入状态,且必须改变时钟信号的顺序。(补充一点题外话,我在编辑时序的时候,由于疏忽了一点“小错误”,后果却是很严重。)12.312.312.312.3DS1302DS1302DS1302DS1302时钟||||日期||||控制||||爆发寄存器在介绍DS1302的时序图中不都是,先地址字节,然后数据字节码?那么地址字节和数据字节又有什么关系呢?(看看下面的图)慧争电子免费共享资料、欢迎复制共享、没有版权。HJ-2G多功能AVR/51二合一开发板学习笔记慧净小店:开发板超市:上面的图说明了每个寄存器的定义和地址字节,而每个地址字节的LSB可以是0或者1,逻辑0代表写,逻辑1代表读。如果忽略每个地址字节的LSB,十六进制则是0x80+i,而i每一次累加2。我们一个一个寄存器来看吧:第一:秒钟寄存器地址字节;0x80其实呀,我很佩服该芯片的设计人员,将芯片设计得很贴心,为什么呢?因为秒钟寄存器,除了记录秒钟以外,还控制了DS1302的时钟开关(晶振开始工作,或者晶振禁止工作)。该位第7位CH,当写入逻辑1时DS1302停止工作,时间的计时保持最后一次的状态,如果写入逻辑0DS1302则开始工作,时间从最后一次状态中继续计时。换成另一句话说,每一次写入秒钟,都会使DS1302工作,但这又是为什么呢?秒钟寄存器是八位寄存器,高四位中的BIT4~BIT6(BIT7除外)记录十位,而低四位记录个位。秒钟的计算最多也是59,如果换成十六进制的话是0x59。所以呢,最高位基本上都是用不到,但我们每一次向秒钟寄存器进行初始化的时候,都会很自然的把最高位BIT7记录成0,CH位为逻辑0,DS1302就开始工作。第二:分钟寄存器地址字节;0x82八位寄存器,高四位记录十位(BIT7除外),低四位记录个位第三:时钟寄存器地址字节;0x84八位寄存器,高四位记录十位(BIT7,BIT6除外),低四位记录个位。时钟寄存器的最高位,决定了时间是以24小时制,还是12小时制。逻辑1为12小时致,逻辑0为24小时致。至于24小时致是默认的,为什么这么说呢?该解释与秒钟寄存器很相似,因为每一次我们为时钟寄存器赋值的时候,由于时钟最大值是23小时(0x23),还是11小时(0x11),自然而然最高位我们都会赋0值。第四:日寄存器地址字节:0x86八位寄存器,高四位记录十位(实际上仅有BIT4~5被使用),低四位记录个位。第五:月寄存器地址字节:0x88八位寄存器,高四位记录十位(实际上仅有BIT4被使用),低四位记录个位。第六:周寄存器地址字节:0x8A八位寄存器,仅有低四位被使用(BIT0~3),用来记录个位。第七:年寄存器地址字节:0x8C八位寄存器,高四位记录十位,低四位记录个位。第八:控制寄存器地址字节:0x8E八位寄存器,仅BIT7有用,BIT7亦即WP位(WriteProtect),逻辑0解除写保护,逻辑1开启写保护。换一句话说,每一次写其他寄存器WP位必须先置0。慧争电子免费共享资料、欢迎复制共享、没有版权。HJ-2G多功能AVR/51二合一开发板学习笔记慧净小店:开发板超市:第九:充电寄存器?(TrickleCharge)地址字节:0x90这是开启细流充电的寄存器,写保留。后面有详细的解释。第十:爆发寄存器?(BurstMode)地址字节:0x92这个寄存器的功能可以用软件来模拟,无视他把。12121212.4.4.4.4DS1302DS1302DS1302DS1302的RAMRAMRAMRAMDS1302真的很厚道,还设立了31个字节的RAM空间,RAM空间的开始地址字节是0x94。RAM空间可以让使用着任意发挥,你可以把它当做外存储器,但是前提DS1302必须一直供电。要访问任意空间也很简单,如下表:嗯,使用RAM空间的方法很自由,自己发挥想象力吧。12.512.512.512.5细流充电TrickleTrickleTrickleTrickleChargeChargeChargeCharge在前几个Article,介绍了DS1302有后备供电的输入,亦即VCC1引脚,DS1302允许透过控制内部的充电寄存器,经VCC2向VCC1流入的充电细流(很小很小的电流)。我们看一看Hj-2G的硬件布局吧:VCC2连接的5v是工作电压,VCC1连接的3v是后备工作电压。充电寄存器就控制VCC2流向VCC1之间的“阻值”和“二极管的降压”。在这里补充一些题外话:当VCC2有电源输入时,VCC1是停止供电的,但同一时间也可以为VCC1进行细流充电(这要看VCC1是否连接着可充电电池)。一旦VCC2停止供电,VCC1就开始工作,与此同时细流充电就变成没有意义了。地址字节第N个0x90+0第0个RAM0x90+1第1个RAM............0x90+31第31个RAM慧争电子免费共享资料、欢迎复制共享、没有版权。HJ-2G多功能AVR/51二合一开发板学习笔记慧净小店:开发板超市:以上是TrickleCharge的概念图,充电控制寄存器的高四位(BIT7~4)是TCS,TrickleChargerSelect位,仅1010才会开启充电功能。而BIT3~2是DS,DiodeSelect位,01选择一个diode,10选择两个diode串联。BIT1~0是RS,ResistorSelect位,两位组成了3个阻值的选择。浏览下表:渴求细流的公式可以由上右表求出,阻值位R1,diodedrop为二极管的降压,0.7v(一个二极管),1.4(串联二极管)。不过我比较有爱,将他分成六个等级,为了编程更方便。#defineLV60xA5//0.7降压,2k阻值,2.15mA#defineLV50xA9//1.4降压,2k阻值,1.80mA#defineLV40xA6//0.7降压,4k阻值,1.07mA#defineLV30xAA//1.7降压,4k阻值,0.90mA#defineLV20xA7//0.7降压,8k阻值,0.50mA#defineLV10xAB//1.4降压,8k阻值,0.45mA12.612.612.612.6DS1302DS1302DS1302DS1302的地址字节DS1302的地址字节,也可以作为命令字节。A0~A4是用来选择地址的位,而BIT0是制定该地址字节是写入还是读取,BIT6是作为选择RAM还是CLOCK的区别。其实这也没有什么困难的啦。RS位组合的阻值选择表细流公式慧争电子免费共享资料、欢迎复制共享、没有版权。HJ-2G多功能AVR/51二合一开发板学习笔记慧净小店:开发板超市:简单归纳控制DS1302的是RST信号,拉低无效,拉高有效。而DS1302是串行输入,串行读入。写入一个字节和读取一个字节的时序不同。写入一个字节都是上跳沿有效,读入一个字节先是上跳沿有效,然后下降沿有效。地址字节也可称为命令字节,BIT6控制了对RAM/CLOCK的访问控制,而BIT0决定了地址|命令字节的写入还是读出的特性。DS1302有31个字节的RAM空间。除此之外,还有细流充电的功能。秒寄存器决定了DS1302开始工作与否,而时钟寄存器有12小时制和24小时制之分。每当要写入任何一个寄存器|RAM空间,写入控制寄存器的WP位必须置0,解除写保护。12121212.8.8.8.8DS1302DS1302DS1302DS1302头文件的理解自带来的DS1302头文件,没有自己定义的好。这一章笔记,主要是以头文件的方式解释。这是我认为,新手最简单习得的办法。//命令,地址#defineSEC0x80#defineMIN0x82#defineHOUR0x84#defineDAY0x86#defineMONTH0x88#defineWEEK0x8A#defineYEAR0x8C#defineCTRL0x8E#defineCHRG0x90#defineBRUST0xBE#defineRAM0xC0首先是按寄存器的地址字节,声明的宏定义。SEC为开始,亦即0x80,随后都是+2。宏定义中的地址字节没有包括了,BIT0写/读的控制位。//配置#defineCLKOFF0x80#defineCLKON0x00#defineT120x80#defineT240x00#defineLOCK0x80#defineUNLOCK0x00#defineLV60xA5#defineLV50xA9#defineLV40xA6#defineLV30xAA#defineLV20xA7#defineLV10xAB以上的宏定义,是作为配置时使用的。自己看着明白吧,很简单而已。慧争电子免费共享资料、欢迎复制共享、没有版权。HJ-2G多功能AVR/51二合一开发板学习笔记慧净小店:开发板超市:定义#defineSCLKPB7#def

1 / 20
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功