《实时时钟芯片ds1302在某测试记录仪设计中的应用》由会员分享,可在线阅读,更多相关《实时时钟芯片ds1302在某测试记录仪设计中的应用(4页珍藏版)》请在金锄头文库上搜索。
1、图6 仿真波形图实时时钟芯片DS1302在某 测试记录仪设计中的应用西安中国飞行试验研究院(710089) 高培先 中国人民解放军93942部队(712000) 张 相摘 要 文章着重介绍了DS1302作为系统实时时钟与微控制器PIC 16C74在某便携式测试记录 仪设计中的软、 硬件实现方法以及研制过程中遇到的问题及处理措施。 关键词 DS1302 实时时钟 驱动程序传统的实时时钟芯片如DS1287、MC146868、LM8365等虽各有特点,但它们大多数体积大、 占用口线多,因而应用受到了一定的限制。由美国Dal2las公司生产的串行实时时钟芯片DS1302以其体积小、 功耗低、 性价比高
2、等特性深受工程设计人员的青睐,在国内外各种测试设备,特别是在二次仪表开发中得到了广泛地应用。1 与微控制器通信1. 1 DS1302基本特性DS1302实时时钟芯片具有实时钟/日历和31字节静态RAM ,能够提供秒、 分、 时、 日、 月、 星期和年等日历信息(至2100年) ,并对闰年和小于31天的月份进行自动调节。另外,该芯片还具有可编程涓流充电功能,从而使外围硬件电路设计得到了大大简化。该芯片引脚分配如图1所示,其中X1、X2为32. 768kHz晶振端;GND为地;RST为复位端,高电平时允许I/ O端进行数据传输,低电平则禁止数据传送且使I/ O端呈高阻状态; I/ O为串行数据输入
3、、 输出端,所有输入、 输出数据的传送顺序均以最低位LSB打头,最高位MSB结束;SCL K为同步时 钟脉 冲 端,其 上 升 沿 将I/ O端 数 据 按 位 写 入DS1302 ,下降沿使DS1302按位输出数据至I/ O端;VCC2、VCC1为主电源和备份电源端,当主电源VCC2大于备份电源VCC1+ 0. 2V时,由VCC2对芯片供电,否 则,由VCC1对芯片供电。另外,如果选择了涓流充 电功能,在正常情况下,主电源还对备份电源进行慢速充电。图1 DS1302引脚分配1. 2 与微控制器通信DS1302所进行的一切工作均由命令字决定,命34电子技术2003年第7期器件应用中国传感器ht
4、tp :/ / www. 1995-2004 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.令字组成如图2所示,各位定义如下:bit7正常读、 写时,该位必须为 “1”,为 “0” 时则无法进行读、 写操 作。bit6为 “0” 标志传送的是日历型数据,否则为RAM型数据。此处所谓日历型数据即数据格式为 压缩型BCD码,且数值必须在它的定义域内,例如,“月份” 的定义域为112 ,“秒” 的定义域为059 等等。所谓RAM型数据即指一般16进制数据。bit5bit1为读、 写寄存器地址。DS1302有单字节 和多字节
5、两种读、 写方式。所谓单字节读、 写方式即 每次只能从DS1302中读、 写1字节数据。所谓多字节读、 写方式则每次可从DS1302中连续读、 写若 干字节数据。当bit5bit1各位均为 “1” 时,DS1302 为多字节读、 写方式。bit0为 “0” 表示写操作,否则 为读操作。图2 DS1302地址/命令字微控制器与DS1302之间的基本通信过程是:首先由微控制器置RST为高电平,使DS1302处于通信状态。其次,由微控制器向DS1302发送命令字,DS1302根据接收到的命令字来确定当前所要进行的具体工作。如果命令字为 “写” 操作,则DS1302在同步时钟脉冲SCL K的上升沿,将
6、微控制器发送至I/ O端的串行数据按位写入命令字所指定的寄存器中。如果命令字为 “读” 操作,则DS1302在同步时钟脉冲SCL K的下降沿,从命令字所指定的寄存器中按位输出串行数据至微控制器。最后,微控制器置RST为低电平,结束通信。2 在便携式测试记录仪设计中的应用本文所述记录仪的基本工作原理是采用动态、异步、 定时中断方法实现对现场中的物理量进行采样、 处理、 保存。所谓动态、 异步、 定时中断即根据实际应用特点,使系统大部分时间处于休眠状态,以减少功耗。当由外部晶振驱动的定时器 “时间” 到时,则由外部异步中断唤醒系统进入中断服务响应序列,完成如下功能:(1)采集现场中的物理量,并将采
7、样的物理量与采样时刻对应的日历信息 年、 月、 日、 时、 分、秒、 星期等组合成一个记录存入系统EEPROM ;(2)将当前采样次数作为采样时间函数的变量来修正下次采样时间间隔,其变化规律是随着采样次数的增大,采样时间间隔会愈来愈长;(3)使系统处于休眠状态,准备下次采样;(4)当数据记满时,系统自动提示用户将记录数据通过RS232口下载至PC数据库,以供技术人 员分析和作历史文档保存。 由此可见,实时时钟的可靠性、 精确度对该记录仪系统影响之大。2. 1 硬件实现 该记录仪系统实时时钟电路如图3所示。其微 控制器采用Microchip公司的中档产品PIC16C74 , 该微控制器具有4K1
8、4程序存贮器及SPI、IIC、SCI等丰富的外围接口。由于DS1302之串口协议 与SPI串口协议相悖,因此该记录仪采用软件方法 实现双方通信,程序虽然较复杂,但可靠性高。图3 便携式测试记录仪系统实时时钟电路2. 2 软件实现 本文以下所提到的 “发送” 即指由PIC16C74将数据写入到DS1302相关寄存器中;所提到的 “接 收” 即为PIC16C74接收来自DS1302相关寄存器中 的数据。2. 2. 1 发送日历信息软件 在该记录仪系统投入使用之前,首先应将日历信息初值 秒、 分、 时、 日、 月、 星期、 年等按序写入 到DS1302相关寄存器中,此后,时钟便以此初值为 基准进行计
9、时,只要主电源VCC2和备份电源VCC1尚 有一个工作正常,则计时就不会终止。发送日历信 息软件分为三部分:(1)发送 “解除写保护” 命令字10001110和内容00000000 ,以开放DS1302写操作。 (2)发送 “涓流充电” 命令字10010000和内容10101011 ,以开放DS1302内部充电电路。本系统 选择DS1302内部充电电路为两只串联二极管和8k限流电阻,因此常规情况下,主电源VCC2对备 份电源VCC1之最大充电电流为Imax= (VDD-二极44器件应用电子技术2003年第7期中国传感器http :/ / www. 1995-2004 Tsinghua Ton
10、gfang Optical Disc Co., Ltd. All rights reserved.管压降)/限流电阻= (5 - 20. 7)8 = 0. 45mA。 (3)发送“多字节写日历型数据” 命令字10111110和日历信息初值。日历信息初值以压缩 型BCD码型式存放在PIC16C74连续的8字节存贮 单元中,其存贮顺序为秒、 分、 时、 日、 月、 星期、 年、80H ,其中年无最高两位,80H(“H” 表示16进制)为 写保护内容。上述第1、 第2部分属于对DS1302内部功能寄 存器操作,因此必须以 “单字节” 方式进行发送;而第3部分属于对DS1302一般寄存器操作,故可以采
11、用“多字节” 方式发送,以便提高效率。这里,无论采用 “单字节” 还是 “多字节” 方式发送,其技术关键是和硬件密切相联的发送驱动程序T-DRIV的设计。 该驱动程序的功能是产生正确的同步时钟脉冲,并 在同步时钟脉冲上升沿将数据按位写入DS1302 ,从而完成1字节数据的发送。其汇编语言实现如下: 其中,入口参数发送缓冲器TRBUF ,存放欲发送的数据。 发送驱动子程T-DRIV如下:bcf PORTC ,SCL ;保持同步时钟脉冲为低电平movlw 0x08 ;同步时钟脉冲个数存至同步时钟脉冲计数器PCOUNTmovwf PCOUNTTRAN bcf PORTC ,SD0 ;置SD0为 “0
12、”,即假设当前发送的串行数据为 “0”btfsc RTBUF ,LSB ;确认实际发送的数据是否为“0”,若是,则跳转下下行bsf PORTC ,SD0 ;实际发送的数据不为 “0”,故置SD0为 “1”bsf PORTC ,SCL ;以 下3条语句产生宽度为1s的同步时钟脉冲,其上升沿将SD0端状态写入DS1302nopbcf PORTC ,SCLrrf RTBUF ;发送缓冲器右移1位,准备发送新的数据decfsz PCOUNT ;发送完否?若发送完,则跳出循环返回主程goto TRAN ;未发送完,转至TRAN处继续循环发送return ;1字节日历型数据发送完毕,返回主程序尽管发送日历
13、信息初值在该记录仪终生使用过 程中仅操作1次,但将日历信息初值写入PIC16C74 相应缓冲区需要专门的开发工具和一定的专业知 识,比较麻烦。为简化操作,作者利用该记录仪系统 本身具有与PC通信的功能,在PC上专门设计了初始化参数安装软件,当进入Windows 98下的安装软 件之后,可按人们书写习惯键入当前的年、 月、 日、 时、 分、 秒和星期,然后再按回车键即可完成对DS1302初值的发送,非常方便。2. 2. 2 接收日历信息软件接收日历信息软件完成从DS1302中读取当前 的日历信息 秒、 分、 时、 日、 月、 星期和年至日历缓冲区中,这是该系统需要频繁操作的一项功能,因 此,既要
14、可靠、 准确,又要追求软件的时效性。基本操作分为发送“多字节读日历型数据” 命令字10111111和循环7次调用接收驱动子程R-DRIV , 依序读出秒、 分、 时、 日、 月、 星期、 年等日历信息。这里,能否可靠、 准确地读出这些信息,关键是R-DRIV的设计。R-DRIV的功能是产生正确的同步时钟脉冲,并在同步时钟脉冲的下降沿按位从DS1302中读出日历型数据,其汇编语言实现如下,需要特别指出的是读 “秒” 与读 “分” 、“时” 、“日” 、 “月” 、“星期” 、“年” 等参数的时序有所不同。前者只 需7个同步时钟脉冲,而后者均要产生8个同步时钟脉冲。接收驱动子程R-DRIV如下:入
15、口参数:标志寄存器(FLAG)之位5 (bit5)为 “1” 时标志读 “秒”,为 “0” 时标志读其他日历信息出口参数:接收缓冲器REBUF暂存接收的日历型数据(1字节压缩型BCD码)btfsc FLAG, bit5 ;确认是否读 “秒”?若是则跳转下下行goto QTRL ;非读 “秒”,转至OTRL处执行Movlw 0x07 ;读 “秒” 所需要的7个同步脉冲存至脉冲计数器PCOUNTmovwf PCOUNTbsf REBUF ,MSB ;置REBUF最高位为 “1”,即假设DS1302输出为 “1”btfss PORTC ,SD0 ;确认DS1302输出是否为 “1”?若是则跳转下下行
16、bcf REBUF ,MSB ;输出不为 “1”,则置REBUF最高位为 “0”RECE rrf REBUF ;接收缓冲器右移1位,准备接收下一位串行数据RTOY bsf REBUF ,MSB ;假设DS1302输出的下一位串行数据为 “1”bsf PORTC ,SCL ;以下3条语句产生宽度为1s的同步脉冲,其下降沿使DS1302输出串行数据至其I/ O端nopbcf PORTC ,SCLbtfss PORTC ,SD0;确认DS1302输出是否为 “1”?54电子技术2003年第7期器件应用中国传感器http :/ / www. 1995-2004 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.若是则跳转下下行bcf REBUF ,MSB ;输出不为 “1”,则置REBUF最高位为 “0”decfsz