首页 » 科学 » ds3231 介绍与初步运用_时钟_存放器

ds3231 介绍与初步运用_时钟_存放器

乖囧猫 2025-01-15 22:21:47 0

扫一扫用手机浏览

文章目录 [+]

DS3231

概述:在许多电子运用中都含有时钟哀求,最节省本钱的是直策应用单片机中的定时器作为计时办法,但是这种办法是有很大的不敷,计时偏差大,同时电源掉电不能保持时钟连续运行,不能知足永劫光作为时钟计时。
在对时钟哀求较高的场合中,则利用廉价的时钟芯片(如DS1302,PCF8563等等)加备用电池,计时精度略高,可知足一样平常的哀求。

ds3231 介绍与初步运用_时钟_存放器 ds3231 介绍与初步运用_时钟_存放器 科学

在这篇文章中,我们重点先容高精度时钟电路DS3231的设计和运用。
在DS1302遍及型时钟芯片,晶体均需外置,由于晶体的离散性,很难选择到精度很高的器件,同时也没有温度补偿电路,不同的温度环境下,晶体的特性也在变革,直接影响着时钟的振荡频率,较大的偏差在所在所难免。
而DS3231高精度时钟芯片,将晶体和温度补偿均集成在芯片中,为提高计时精度供应了可能,实册证明,利用DS3231时钟芯片,偏差可做到一年小于一分钟,乃至部分显示器偏差可小于20秒/一年。
这对有相瞄准确时钟哀求的运用处所是个空想的选择。

ds3231 介绍与初步运用_时钟_存放器 ds3231 介绍与初步运用_时钟_存放器 科学
(图片来自网络侵删)

一、DS3231时钟芯片构造事理

DS3231是一款高精度I2C实时时钟(RTC)器件,具有集成的温度补偿晶体振荡器(TCXO)。
该器件包含电池输入端,断开主电源时仍可保持精确计时。
集成的晶体振荡器可提高器件的长期精确度。
DS3231的寄存器能保存秒、分、时、星期、日期、月、年和闹钟设置信息,时钟和日历寄存器的内容采取二–十进制编码(BCD)格式。
少于31天的月份,可自动调度月末日期,包括闰年补偿。
时钟的事情格式为24小时或带AM/PM指示的12小时格式。
DS3231供应两个可编程日历闹钟和一起可编程方波输出。
DS3231与单片机通过I2C双向串行总线传输地址与数据。

引脚功能:

VCC用于主电源的DC引脚;

INT/SQW为低电平有效中断或方波输出:是低电平有效复位引脚;

N.C.表示无连接,外部必须接地;

GND为地;

VBAT为备用电源输入;

SDA为串行数据输入、输出;

SCL为串行时钟输入。

二、选型

DS3231有两种封装:1、SOP-16;2、SOP-8。

型号有DS3231sn、DS3231Mz,前者的精度高于后者,相差也不是很大。
ds3231做的比较好的是引脚都是一样的

三、操作

该芯片供应的是IIC接口,利用起来比较方便。

#define DS3231_WriteAddress 0xD0 //器件写地址

#define DS3231_ReadAddress 0xD1 //器件读地址

#define DS3231_SECOND 0x00 //秒

#define DS3231_MINUTE 0x01 //分

#define DS3231_HOUR 0x02 //时

#define DS3231_WEEK 0x03 //星期

#define DS3231_DAY 0x04 //日

#define DS3231_MONTH 0x05 //月

#define DS3231_YEAR 0x06 //年

//闹铃1

#define DS3231_SALARM1ECOND 0x07 //秒

#define DS3231_ALARM1MINUTE 0x08 //分

#define DS3231_ALARM1HOUR 0x09 //时

#define DS3231_ALARM1WEEK 0x0A //星期/日

//闹铃2

#define DS3231_ALARM2MINUTE 0x0b //分

#define DS3231_ALARM2HOUR 0x0c //时

#define DS3231_ALARM2WEEK 0x0d //星期/日

#define DS3231_CONTROL 0x0e //掌握寄存器

#define DS3231_STATUS 0x0f //状态寄存器

#define BSY 2 //忙

#define OSF 7 //振荡器停滞标志

#define DS3231_XTAL 0x10 //晶体老化寄存器

#define DS3231_TEMPERATUREH 0x11 //温度寄存器高字节(8位)

#define DS3231_TEMPERATUREL 0x12 //温度寄存器低字节(高2位)

//一样平常利用不须要进行复位操作

if(read_random(DS3231_CONTROL)!=0x1C){

if (write_byte(DS3231_CONTROL, 0x1C) == 0)

GPIO_ResetBits(GPIOB,GPIO_Pin_9);

}

if(read_random(DS3231_STATUS)!=0){

if (write_byte(DS3231_STATUS, 0x00) == 0)

GPIO_ResetBits(GPIOB,GPIO_Pin_8);

}

完成这连个操作后就可以直接读取寄存器

void get_show_date(uint8 data)

{

uint8 Ytemp,Mtemp,Dtemp;

Ytemp=BCD2HEX(read_random(DS3231_YEAR)); //年

Mtemp=BCD2HEX(read_random(DS3231_MONTH));//月

Dtemp=BCD2HEX(read_random(DS3231_DAY)); //日

if(data!=0){

data[0]=Ytemp;

data[1]=Mtemp;

data[2]=Dtemp;

}

}

static uint8 BCD2HEX (uint8 val) //16->10

{

return val - 6 (val >> 4);

}

static uint8 HEX2BCD (uint8 val) //10->16

{

return val + 6 (val / 10);

}

标签:

相关文章

抵制 ASIC 矿机真的划算吗?_挖矿_泉币

免责声明:本文不构成任何投资建议。 文章来源:Odaily星球日报改变事情量证明算法是须要耗费大量本钱的,也是一场永无止境的“猫鼠...

科学 2025-01-15 阅读0 评论0

ds3231 介绍与初步运用_时钟_存放器

DS3231概述:在许多电子运用中都含有时钟哀求,最节省本钱的是直策应用单片机中的定时器作为计时办法,但是这种办法是有很大的不敷,...

科学 2025-01-15 阅读 评论0