Remarks

Ds1307
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.RTCs.Ds1307

The DS1307 is a low-power realtime clock (RTC) controlled via I2C.

Code Example

Ds1307 rtc;

public override Task Initialize()
{
    Console.WriteLine("Initializing...");

    rtc = new Ds1307(Device.CreateI2cBus());

    return base.Initialize();
}

public override Task Run()
{
    var dateTime = new DateTime();
    var running = rtc.IsRunning;

    Console.WriteLine($"{(running ? "is running" : "is not running")}");

    if (!running)
    {
        Console.WriteLine(" Starting RTC...");
        rtc.IsRunning = true;
    }

    dateTime = rtc.GetTime();
    Console.WriteLine($" RTC current time is: {dateTime.ToString("MM/dd/yy HH:mm:ss")}");

    Console.WriteLine($" Setting RTC to : {dateTime.ToString("MM/dd/yy HH:mm:ss")}");
    dateTime = new DateTime(2030, 2, 15);
    rtc.SetTime(dateTime);

    dateTime = rtc.GetTime();
    Console.WriteLine($" RTC current time is: {dateTime.ToString("MM/dd/yy HH:mm:ss")}");

    var rand = new Random();

    var data = new byte[56];

    for (int i = 0; i < 56; i++)
    {
        data[i] = (byte)rand.Next(256);
    }

    Console.WriteLine($" Writing to RTC RAM   : {BitConverter.ToString(data)}");
    rtc.WriteRAM(0, data);
    Console.Write($" Reading from RTC RAM : ");
    data = rtc.ReadRAM(0, 56);
    Console.WriteLine(BitConverter.ToString(data));

    return base.Run();
}

Sample project(s) available on GitHub

Wiring Example

The DS3231 real time clock module (see image below) requires only four (for simple timekeeping) or five (for alarms) connections

DS3231 Meadow Pin
GND GND
VCC 3V3
SCL D08 (SCL Pin)
SDA D07 (SDA Pin)

The 32K pin outputs the 32,768 Hz clock signal from the module. This signal is only available when power is supplied by Vcc, it is not available when the module is on battery power.

Characteristic Locus
Inheritance System.Object > Ds1307
Namespace Meadow.Foundation.RTCs
Assembly Ds1307.dll

Syntax

public class Ds1307 : object

Constructors

Ds1307(II2cBus)

Declaration
public Ds1307(II2cBus bus)

Parameters

Type Name Description
II2cBus bus

Properties

IsRunning

Stops or starts the clock oscillator. Stopping the oscillator decreases power consumption (and stops the clock)

Declaration
public bool IsRunning { get; set; }

Property Value

Type Description
System.Boolean

Methods

GetTime()

Declaration
public DateTime GetTime()

Returns

Type Description
DateTime

ReadRAM(Int32, Int32)

The DS1307 has 56 bytes of battery-backed RAM. Use this method to Read from that memory.

Declaration
public byte[] ReadRAM(int offset, int count)

Parameters

Type Name Description
System.Int32 offset

Offset to the start of the read (0-55)

System.Int32 count

The number of bytes to read

Returns

Type Description
System.Byte[]

SetTime(DateTime)

Declaration
public void SetTime(DateTime time)

Parameters

Type Name Description
DateTime time

SquareWaveOutput(Ds1307.SquareWaveFrequency)

Declaration
public void SquareWaveOutput(Ds1307.SquareWaveFrequency freq)

Parameters

Type Name Description
Ds1307.SquareWaveFrequency freq

WriteRAM(Int32, Byte[])

The DS1307 has 56 bytes of battery-backed RAM. Use this method to Write to that memory

Declaration
public void WriteRAM(int offset, params byte[] data)

Parameters

Type Name Description
System.Int32 offset
System.Byte[] data