DS3231 RTC High-Precision Real-Time Clock
Overview
The DS3231 is an affordable and precise RTC (Real Time Clock) that features a temperature-compensated crystal oscillator. It maintains accurate seconds, minutes, hours, day, date, month, and year information, and automatically calculates month-end for 30 and 31-day months as well as leap years. A CR2032 coin cell battery is required to maintain time when power is not supplied, and it uses an I2C interface.


Specifications
- Operating voltage :3.3 – 5.5V
- Clock chip: high-precision clock chip DS3231
- Clock Accuracy :0-40 °C range, the accuracy 2ppm, the error was about 1 minute
- Calendar alarm clock with two Programmable square-wave output
- Real time clock generator seconds, minutes, hours, day, date, month and year timing and provide valid until the year 2100 leap year compensation
- Chip temperature sensor comes with an accuracy of ± 3 °C
- Memory chips: AT24C32 (storage capacity 32K)
- IIC bus interface, the maximum transmission speed of 400KHz (working voltage of 5V)
- Can be cascaded with other IIC device, 24C32 addresses can be shorted A0/A1/A2 modify default address is 0x57
- Rechargeable battery type: LIR2032
Supported GPIO
- Raspberry Pi 0~4
- Raspberry Pi 5
- BeagleBone Black/Green
- Jetson Nano
- FT232H, FT2232H, FT4232H
- MCP2221
Commands
[GET_DATETIME]
Reads the current date and time.
Item | Type | Description |
---|---|---|
Date | READ | Current date. |
Day of Week Index | READ | Day of week index for the current date. (Mon:1, Tue:2, … Sun: 7) |
Day of Week String | READ | Day of week string for the current date. (Mon:MON, Tue:TUE, … Sun: SUN) |
Time | READ | Current time. |
Unix Time | READ | Accumulated seconds from UTC January 1, 1970 00:00 to the present. |
[SET_DATETIME]
Sets the current date and time.
Item | Type | Description |
---|---|---|
Date | WRITE | Enter the current date. |
Day of Week Index | WRITE | Enter the day of week index for the current date. (Mon:1, Tue:2, … Sun: 7) |
Time | WRITE | Enter the current time. |
[GET_TEMP]
Reads temperature from the built-in temperature sensor.
Item | Type | Description |
---|---|---|
Temperature(℃) | READ | Measured temperature. |
[ENABLE_OSC]
Generates a square wave using the built-in oscillator.
Item | Type | Description |
---|---|---|
Enable | WRITE | If true, outputs square wave; if false, stops output. |
Use in Battery Mode | WRITE | Sets whether to use in battery mode. |
Frequency | WRITE | Selects the square wave frequency. Only 4 fixed frequencies are available. (1Hz, 1.024kHz, 4.096kHz, 8.192kHz) |
[ENABLE_OSC_32]
Generates a 32kHz square wave using the built-in oscillator.
Item | Type | Description |
---|---|---|
Enable | WRITE | If true, outputs square wave; if false, stops output. |
Example
Objective
Display current date, time, and day of the week on dashboard widgets.
Parts
Part | Quantity |
---|---|
Raspberry Pi 4 * | 1 |
DS3231 | 1 |
Wiring
Connect each component to the corresponding connection as listed in each row below.
DS3231 | GPIO |
---|---|
VIN | 3.3V |
GND | GND |
SCL | 3 (I2C1 SCL) |
SDA | 2 (I2C1 SDA) |
SQW * | Not Connected |
32K * | Not Connected |

I2C Address
The I2C address can be changed depending on the connection status of A0, A1, A2 jumpers.

I2C Address | A0 | A1 | A2 |
---|---|---|---|
0x57 | 0 | 0 | 0 |
0x56 | 1 | 0 | 0 |
0x55 | 0 | 1 | 0 |
0x54 | 1 | 1 | 0 |
0x53 | 0 | 0 | 1 |
0x52 | 1 | 0 | 1 |
0x51 | 0 | 1 | 1 |
0x50 | 1 | 1 | 1 |
Project Link