RCM — ESP32 Room Controller
WT32-ETH01 firmware
Loading...
Searching...
No Matches
ds3231.h File Reference

Драйвер часов реального времени Maxim DS3231 (I2C). More...

#include <stdbool.h>
#include <stdint.h>
#include "esp_err.h"

Go to the source code of this file.

Data Structures

struct  ds3231_datetime_t
 Дата и время DS3231. More...
 

Functions

esp_err_t ds3231_init (void)
 Добавляет DS3231 на общую I2C-шину и проверяет доступность.
 
esp_err_t ds3231_get_time (ds3231_datetime_t *dt)
 Прочитать текущие дату и время из DS3231.
 
esp_err_t ds3231_set_time (const ds3231_datetime_t *dt)
 Записать дату и время в DS3231 (24-часовой режим).
 
esp_err_t ds3231_get_temperature (float *temp_c)
 Прочитать температуру с встроенного датчика DS3231.
 
esp_err_t ds3231_is_oscillator_stopped (bool *stopped)
 Проверить, был ли остановлен осциллятор (потеря питания / батареи).
 
esp_err_t ds3231_clear_osf (void)
 Сбросить флаг OSF в Status-регистре.
 

Detailed Description

Драйвер часов реального времени Maxim DS3231 (I2C).

Адрес на шине: 0x68. Формат времени — 24-часовой.

Definition in file ds3231.h.

Function Documentation

◆ ds3231_clear_osf()

esp_err_t ds3231_clear_osf ( void )

Сбросить флаг OSF в Status-регистре.

Definition at line 214 of file ds3231.c.

References ds3231_read_regs(), DS3231_REG_STATUS, DS3231_STATUS_OSF, ds3231_write_regs(), s_initialized, and TAG.

Referenced by ds3231_set_time().

◆ ds3231_get_temperature()

esp_err_t ds3231_get_temperature ( float * temp_c)

Прочитать температуру с встроенного датчика DS3231.

Parameters
[out]temp_cТемпература в °C (разрешение 0.25 °C).

Definition at line 184 of file ds3231.c.

References ds3231_read_regs(), DS3231_REG_TEMP_MSB, s_initialized, and TAG.

Referenced by app_main().

◆ ds3231_get_time()

◆ ds3231_init()

esp_err_t ds3231_init ( void )

Добавляет DS3231 на общую I2C-шину и проверяет доступность.

Требует предварительного (или внутреннего) вызова i2c_bus_init(). Адрес: 0x68. SCL=GPIO14, SDA=GPIO15. При отсутствии чипа возвращает ошибку I2C (не вызывает abort) — вызывающий код может продолжить работу без RTC.

Returns
ESP_OK при успехе; иначе код ошибки ESP-IDF / I2C.

Definition at line 89 of file ds3231.c.

References DS3231_I2C_ADDR, ds3231_read_regs(), DS3231_REG_STATUS, DS3231_STATUS_OSF, i2c_bus_add_device(), i2c_bus_init(), s_dev, s_initialized, and TAG.

Referenced by app_main().

◆ ds3231_is_oscillator_stopped()

esp_err_t ds3231_is_oscillator_stopped ( bool * stopped)

Проверить, был ли остановлен осциллятор (потеря питания / батареи).

Parameters
[out]stoppedtrue, если бит OSF установлен (время могло «поплыть»).

Definition at line 201 of file ds3231.c.

References ds3231_read_regs(), DS3231_REG_STATUS, DS3231_STATUS_OSF, s_initialized, and TAG.

Referenced by app_main().

◆ ds3231_set_time()

esp_err_t ds3231_set_time ( const ds3231_datetime_t * dt)

Записать дату и время в DS3231 (24-часовой режим).

Сбрасывает флаг OSF (Oscillator Stop Flag) в регистре Status после записи.

Definition at line 162 of file ds3231.c.

References bin_to_bcd(), ds3231_datetime_t::date, ds3231_clear_osf(), DS3231_REG_SECONDS, ds3231_validate_datetime(), ds3231_write_regs(), DS3231_YEAR_BASE, ds3231_datetime_t::hour, ds3231_datetime_t::minute, ds3231_datetime_t::month, s_initialized, ds3231_datetime_t::second, TAG, ds3231_datetime_t::weekday, and ds3231_datetime_t::year.