_SKU_DFR0469_Gravity__I2C_SD2405_RTC_实时时钟模块 - jimaobian/DFRobotWikiCn GitHub Wiki

Gravity I2C SD2305 RTC 实时时钟模块

简介

Gravity家族又迎来了一位新成员:Gravity I2C SD2405 RTC module。这是一块高精度实时时钟模块。支持I2C/IIC串行通信,具有低功耗,宽电压,易使用等特点。 SD2405 RTC模块内置晶振、兼容Gravity接口,不需要额外的钮扣电池供电,内含一次性工业级电池,可保证外部掉电的情况下,持续工作5~8年时间, 超低功耗,超长待机。 Gravity SD2405 RTC模块可以用于数据记录, 定时闹钟, 时钟计时等基于时间基础的应用。做一个独特的时钟不再是难题。你只需将模块接在我们标准的Gravity I2C接口上即可。 本Gravity RTC模块可实现定时/报警中断输出, 年、月、日、星期、时、分、秒的功能显示, 和时间相关的作品如定时小闹钟这种应用绝对是你的最好选择。

产品特性

  • 低功耗: 1.0μA 典型值(时钟电路部分, Ta=25℃)。
  • 工作电压:3.3V~5.5V, 工作温度:-40℃~85℃。
  • 标准IIC总线接口方式, 时钟电路最高速度400KHZ(4.5V~5.5V)。
  • 年、月、日、星期、时、分、秒的BCD码输入/输出,并可通过独立的地址访问各时间寄存器
  • 闰年自动调整功能(从2000年~2099年)。
  • 可选择12/24小时制式.
  • 内置年、月、日、星期、时、分、秒共7字节的报警数据寄存器及1字节的报警允许寄存器。
  • 内置12字节通用SRAM寄存器可用于存储用户的一般数据。
  • 三种中断均可选择从INT脚输出,并具有两个中断标志位.
  • 可设定并自动重置的单路报警中断功能(时间范围最长设至100年),年、月、日、星期、时、分、秒报警共有96种组合方式, 并有单事件报警和周期性报警两种中断输出模式.
  • 周期性频率中断输出:从32768Hz~1/16Hz……1秒共十五种方波脉冲.
  • 自动重置的8位倒计时定时器,可选的4种时钟源(4096HZ、64HZ、1HZ、1/60HZ)。
  • 内置晶振, 出厂前已对时钟进行校准, 时钟精度为±5ppm(在25℃±1℃下), 即年误差小于2.5 分钟。
  • 内置时钟精度数字调整功能, 可通过程序来调整走时的快慢。用户采用外置或内置的温度传感器, 设定适应温度变化的调整值, 可实现在宽温范围内高精度的计时功能(在-10℃~50℃小于5 ppm, 在-40℃~85℃小于10ppm)。
  • 内置备电自动切换功能 , 芯片依据不同的电压自动从VDD切换到VBAT或从VBAT切换到VDD。
  • 在VBAT模式下, 芯片具有中断输出允许或禁止的功能,可满足在备用电池供电时输出中断的需要。
  • 内置IIC总线0.5秒自动复位功能(从Start命令开始计时),保证时钟数据的有效性及可靠性,避免总线挂死问题。
  • 内置三个时钟数据写保护位, 避免对数据的误写操作, 可更好地保护时钟数据。
  • 内置VBAT模式IIC总线通信禁止功能, 从而避免在电池供电时CPU对时钟操作所消耗的电池电量, 也可避免在主电源上、下电的过程中因CPU的I/O端口所输出的不受控的杂波信号对时钟芯片的误写操作, 进一步提高时钟芯片的可靠性。
  • 内置上电复位电路及指示位;内置电源稳压,内部计时电压可低至1.5V。
  • 芯片管脚抗静电(ESD)>4KV。

技术规格

  • 工作电压:3.3V~5V
  • 工作电流:1uA(内置电池)
  • 计时范围:至2099年(带闰年补偿)
  • 接口方式:IIC/I2C接口
  • 工作温度:-40℃~+85℃
  • 模块尺寸:35.50 * 22.00(mm)
  • 重量:6g

引脚说明

20170207133718.png

  • 连接arduino平台接口(Gravity接口):
  1. SDA:IIC数据输入引脚
  2. SCL:IIC时钟输入引脚
  3. GND:电源负
  4. VCC:电源正
  • 预留排针引脚
  1. SDA:IIC数据输入引脚
  2. SCL:IIC时钟输入引脚
  3. GND:电源负
  4. VCC:电源正
  5. INT:中断引脚

使用教程

  • 目标:设置初始时间,串口每秒读取当前时间

准备

  • 硬件
    • 1 x Arduino UNO控制板
    • 1 x SD2405 RTC Module
    • 若干 杜邦线
  • 软件

接线图

  • 按图把传感器和模块相连接,线序如下:(注意:这是UNO的线序,其他主控器,请连接至对应的I2C管脚)

 模块 ————  UNO板子  VCC  ————  5V  GND  ————  GND  SDA  ————  A4(SDA)  SCL  ————  A5(SCL)

20170207133957.png

样例代码

GitHub库文件链接Gravity-I2C-SD2405-RTC-Module。下载并安装GravityRtc库文件。不会安装?看这边

rtc.adjustRtc(F(__DATE__), F(__TIME__));  //自动设置RTC时钟:通过获取电脑时间校准RTC模块,首先需要保证电脑时间正确,在设置完时间后,需要添加“//”注注释此行,以保证下次启动时,不会重置时间!!!!!! rtc.adjustRtc(2017,6,19,1,12,7,0);    //手动设置RTC时钟:2017/6/19,周一,12点07分0秒。在设置完时间后,需要添加“//”注注释此行,以保证下次启动时,不会重置时间!!!!!!

|

#include "GravityRtc.h"
#include "Wire.h"

GravityRtc rtc;     //RTC Initialization

void setup() {
  Serial.begin(9600);
  rtc.setup();
  //自动设置RTC时钟:通过获取电脑时间校准RTC模块,首先需要保证电脑时间正确
  rtc.adjustRtc(F(__DATE__), F(__TIME__));

  //手动设置RTC时钟
  //rtc.adjustRtc(2017,6,19,1,12,7,0);  //设置时间:2017/6/19,周一,12点07分0秒
}

void loop() {
  rtc.read();
  //*************************Time********************************
  Serial.print("   Year = ");//year
  Serial.print(rtc.year);
  Serial.print("   Month = ");//month
  Serial.print(rtc.month);
  Serial.print("   Day = ");//day
  Serial.print(rtc.day);
  Serial.print("   Week = ");//week
  Serial.print(rtc.week);
  Serial.print("   Hour = ");//hour
  Serial.print(rtc.hour);
  Serial.print("   Minute = ");//minute
  Serial.print(rtc.minute);
  Serial.print("   Second = ");//second
  Serial.println(rtc.second);
  delay(1000);

}

|}

结果

  • 在Ardunio串口查看时间信息

DFR0469_Time_Setting.png

注意事项

| 注意:

关于实时时钟寄存器中,地址为02H的小时设置:

实时时钟寄存器

1.最高位为时制12/24设置,0为12小时制,1为24小时制

2.高四位的后三位为24小时制的十位设置位,第四位为24小时制的个位设置位

3.24小时制设置 eg:

hour:04:00(24-hour format) 10000004B 84H Wire.write(0x84);

hour:12:00(24-hour format) 10010002B 92H Wire.write(0x92);

hour:23:00(24-hour format) 10100003B A2H Wire.write(0xA2);

4.读取时需要屏蔽最高位,示例程序中已经处理 |

Mind+(基于Scratch3.0)图形化编程

1、下载及安装软件。下载地址:http://www.mindplus.cc 详细教程:Mind+基础wiki教程-软件下载安装 2、切换到“上传模式”。 详细教程:Mind+基础wiki教程-上传模式编程流程 3、“扩展”中选择“主控板”中的“Arduino Uno”,“传感器”中加载“实时时钟sd2405”。 详细教程:Mind+基础wiki教程-加载扩展库流程 4、进行编程,程序如下图:

  初次使用,首先上传第一段代码手动写入时间。之后上传第二段代码获取时间数据。<br>

5、菜单“连接设备”,“上传到设备” 6、程序上传完毕后,打开串口即可看到数据输出。详细教程:Mind+基础wiki教程-串口打印

结果

打开串口监视器,将波特率调整到9600,可以读取到时间值。

常见问题

还没有客户对此产品有任何问题,欢迎通过qq或者论坛联系我们!

| 更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。 |

更多资料

DFshopping_car1.png DFRobot商城购买链接