注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

DOS编程技术

讨论在纯DOS下的编程技术

 
 
 

日志

 
 
关于我

1984年大学毕业,1985年底有机会开始接触PC机,1986年开始在PC机上做开发工作,曾接触过MS-DOS、CP/M、UNIX、VMS、LINUX、iRMX等众多的操作系统并在上面从事技术开发,擅长做底层与硬件相关的软件开发,目前主要在DOS和LINUX平台下工作,主要从事软件,在硬件开发上也有一定造诣,亦有在8051系列、6502系列(凌阳)、z80系列、ARM、X86等各类平台下开发软硬件的经历。更详细情况可以参考http://resume.whowin.net

网易考拉推荐

DS3231控制寄存器的说明  

2011-04-01 11:49:43|  分类: 杂七杂八 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
    DS3231是DALLAS生产的一个低功耗、低成本、高精度的实时时钟芯片,在0--40度的条件下,据说精度可以达到2PPM,DS3231内部共有19个寄存器,其中前14个都是用于存储时间信息和闹钟信息的,后面的5个用于控制这颗芯片,偏移地址从0eh开始,本文仅说明后面的5个控制寄存器的使用方法。
    该芯片的datasheet可以从下面地址下载:
    http://blog.whowin.net/datasheet/DS3231.pdf(2017年3月22日注:链接已修复)
    这篇博文本来不是一篇公开的文章,仅用于自己需要时查阅,不过也许有些人会需要,所以现在予以公开,其中的大部分内容来源于该芯片的datasheet。
    这些寄存器的图表如下:
    bit   |   7       6      5        4       3       2      1     0    |    Name
DS3231控制寄存器的说明 - whowin - DOS编程技术
 
1、Control寄存器
   偏移地址:0eh
   bit0    A1IE(Alarm 1 Interrupt Enable)
      该位置1且INTCN=1的情况下,当第一组闹钟时间到时会产生中断(~INT/SQW)。
   bit1    A2IE(Alarm 2 Interrupt Enable)
      该位置1且INTCN=1的情况下,当第二组闹钟时间到时会产生中断(~INT/SQW)。
   bit2    INTCN(Interrupt Control)
      该位控制~INT/SQW信号。
      该位为0时,~INT/SQW信号线上将输出一个方波。
      该位为1时,符合中断条件时,~INT/SQW上将产生中断信号。
   bit3:4  RS(Rate Select)(RS1、RS2)
      这两位控制产生的方波的频率,当INTCN=0时,将在~INT/SQW信号线上输出一个方波,方波的频率如下表:
DS3231控制寄存器的说明 - whowin - DOS编程技术
      其中bit3为RS1,bit4为RS2。上电时,RS1和RS2均为1。
   bit5    CONV(Convert Temperature)
      设置该位为1可以强行要求温度传感器工作,并按照TCXO算法更新振荡器的电容阵列,只能在空闲时执行这个操作,状态位BSY=1时不应该设置该位,用户在启动控制器执行新的TCXO时必须检查BSY位。用户自定义的温度转换不会影响内部的64秒更新周期。
      用户初始化的温度转化在大约2ms内不会影响BSY状态位,CONV位从写入值到温度转换结束会一直保持为1,然后CONV和BSY都将变为0。
   bit6    BBSQW(Battery-Backed Square-Wave Enable)
      该位确定在使用后备电池供电时是否还输出方波。
      0--使用电池时不输出方波,此时~INT/SQW为高阻抗。
      1--使用电池时仍然输出方波。
      上电时,该位缺省为0。
   bit7    ~EOSC(Enable Oscillator)
      该位为1时,当使用电池供电时,振荡器将停止工作;该位为0时,振荡器一直工作。
      不管该位为何值,当电源供电时,振荡器都会工作。

2、Control/Status寄存器
   偏移地址:0fh
   bit0  A1F(Alarm 1 Flag)
      当第一组闹钟时间到时,该位会被置1,。
      如果A1IE=1并且INTCN=1,在~INT/SQW上同时会产生中断信号。
      向该位写入0会清除该位,写入1无效。
   bit1  A2F(Alarm 2 Flag)
      当第二组闹钟时间到时,该位会被置1,。
      如果A1IE=1并且INTCN=1,在~INT/SQW上同时会产生中断信号。
      向该位写入0会清除该位,写入1无效。
   bit2  BSY(Busy)
      该位为1表明正在执行TCXO功能。
      从向温度传感器发出工作信号开始,该位将被置1,直到工作结束进入1分钟空闲期,该位被清0。
   bit3  EN32kHz(Enable 32kHz Output)
      该位置0,则32kHz线呈现高阻抗状态。
      该位置1,则32kHz线输出一个32.768kHz的方波信号。
      初始上电时,该位缺省为1,只有当使用电源供电时,才有方波输出。
   bit7  OSF(Oscillator Stop Flag)
      该位为1时,表明振荡器已经停止工作,可能时间按保持寄存器中的数据会有问题。
      下列情况可能使振荡器停止工作,该位被置1:
  • 初次上电
  • 当前的电源电压,Vcc和Vbat均无法维持振荡器运行
  • 后备电池供电时,~EOSC位被置1
  • 石英受外部干扰(比如:噪音、漏电等)
3、Aging Offset寄存器
   偏移地址:10h
   石英老化偏移寄存器(crystal aging offset register)是一个8位寄存器,按照2的补码编码,其值会加到电容阵列寄存器中,一个最小单位表示从电容阵列中加入或去掉一个最小的电容。
   在下列条件下,偏移寄存器的值会加到电容阵列寄存器中:
  • 在正常温度转换期间,如果从以前的温度转换状态发生变化
  • 在手动用户自定义温度转换期间(CONV=1)
   要看到该寄存器的影响,可以在改变该寄存器的值以后,立即启动温度转换。
   在不同温度下,该寄存器的变化对精度的影响是不一样的。在+25°C下,一个最小单位的变化对频率的影响为0.1ppm。
4、Temperature寄存器
   偏移地址:11h、12h
   该寄存器为10位,高八位放在偏移为11h的寄存器中,低二位放在偏移为12h的寄存器中,每个单位相当于0.25°C,上电时,该寄存器被置为0°C,同时启动温度转换,以后读取的温度值将存在这个寄存器中。

  评论这张
 
阅读(3582)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018