_SKU_TOY0020_SD2403_Real Time_clock_Module_.NET_Gadgeteer_Compatible_ - jimaobian/DFRobotWikiCn GitHub Wiki

概述

SD2403 Real-Time clock Module(.NET Gadgeteer Compatible) (SKU:TOY0020)

SD2403 Real-Time clock Module内置晶振、IIC串行接口的高精度时钟。Arduino、Gadgeteer平台均可用。

性能描述

  • 工作电压:5V
  • 接口方式:IIC
  • 工作温度:-40℃~+85℃
  • 模块尺寸:37.00 × 37.00(mm)

引脚定义

  • 连接arduino平台接口(排针接口):

1、+5:逻辑电压5V

2、G:电源负

3、SCL:IIC时钟输入引脚

4、SDA:IIC数据输入引脚

5、INT:报警中断输出引脚

  • Gadgeteer插座:

PIN1:3.3V

PIN2:5V

PIN3:INT

PIN4:NC

PIN5:NC

PIN6:NC

PIN7:NC

PIN8:SDA

PIN9:SCL

PIN10:G

安装尺寸

安装尺寸

详细使用资料

SD2403APIdatasheetv1.3.pdf

硬件连接

在这里选择Arduino 328作为控制器举例说明

选用杜邦线(公母头)作为连接线,将模块与328板子连接起来

  • 杜邦线一端插在模块排针,另一端插在328板子,线序如下:

 模块  ————  328板子  +5   ————  5V  G    ————  GND  SDA  ————  4(模拟IO,4脚)  SCL  ————  5(模拟IO,5脚)

RTC_SD2403_CD_UNO.png

  • 连接USB线

Dreamer系列直接用IDC10芯线连接模块和板子上的IIC接口(丝印是X Y I)即可

例子程序

   #include <Wire.h>

 #define RTC_Address   0x32//器件地址

 //端口连接  //SDA-AD4(Gadgeteer PIN8)  //SCL-AD5(Gadgeteer PIN9)

 unsigned char   date[7];

 //读SD2403实时数据寄存器  void I2CReadDate(void)  {       unsigned char n=0;

      Wire.requestFrom(RTC_Address,7);       while(Wire.available())       {         date[n++]=Wire.read();       }       delayMicroseconds(1);       Wire.endTransmission();  }  //写SD2403实时数据寄存器  void I2CWriteDate(void)  {       WriteTimeOn();

      Wire.beginTransmission(RTC_Address);       Wire.write(byte(0));//设置写起始地址       Wire.write(0x01);//second:1秒       Wire.write(0x01);//minute:1分       Wire.write(0x88);//hour:8时(二十四小时制)       Wire.write(0x01);//week:星期1       Wire.write(0x11);//day:11号       Wire.write(0x06);//month:6月       Wire.write(0x12);//year:2012年       Wire.endTransmission();

      Wire.beginTransmission(RTC_Address);       Wire.write(0x12);//设置写起始地址       Wire.write(byte(0));//清零数字调整寄存器       Wire.endTransmission();

      WriteTimeOff();  }  //SD2400写允许程序  void WriteTimeOn(void)  {       Wire.beginTransmission(RTC_Address);       Wire.write(0x10);//设置写地址10H       Wire.write(0x80);//置WRTC1=1       Wire.endTransmission();

      Wire.beginTransmission(RTC_Address);       Wire.write(0x0F);//设置写地址0FH       Wire.write(0x84);//置WRTC2,WRTC3=1       Wire.endTransmission();  }  //SD2400写禁止程序  void WriteTimeOff(void)  {       Wire.beginTransmission(RTC_Address);       Wire.write(0x0F);//设置写地址0FH       Wire.write(byte(0));//置WRTC2,WRTC3=0       Wire.write(byte(0));//置WRTC1=0(10H地址)       Wire.endTransmission();  }  //数据处理  void Data_process(void)  {       unsigned char i;

      for(i=0;i<7;i++)       {           if(i!=2)           date[i]=(((date[i]&0xf0)>>4)*10)+(date[i]&0x0f);           else           {              date[2]=(date[2]&0x7f);              date[2]=(((date[2]&0xf0)>>4)*10)+(date[2]&0x0f);           }       }

      Serial.print("Sec = ");//second       Serial.print(date[0]);       Serial.print("   Min = ");//minute       Serial.print(date[1]);       Serial.print("   H = ");//hour       Serial.print(date[2]);       Serial.print("   W = ");//week       Serial.print(date[3]);       Serial.print("   D = ");//day       Serial.print(date[4]);       Serial.print("   M = ");//month       Serial.print(date[5]);       Serial.print("   Y = ");//year       Serial.print(date[6]);

      Serial.println();  }

 void setup()  {       Wire.begin();       Serial.begin(9600);  }  void loop()  {       I2CWriteDate();//写实时时钟        delay(100);

      while(1)       {          I2CReadDate();//读实时时钟           Data_process();//数据处理           delay(1000);//延时1S       }

 }

下载上述程序到Arduino328中,打开串口助手软件,波特率9600,

会看到有秒分时周日月年输出(是在初始设置2012年6月11号8点1分1秒基础上开始计时)

⚠️ **GitHub.com Fallback** ⚠️