|
RCM — ESP32 Room Controller
WT32-ETH01 firmware
|
Драйвер часов реального времени 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-регистре. | |
Драйвер часов реального времени Maxim DS3231 (I2C).
Адрес на шине: 0x68. Формат времени — 24-часовой.
Definition in file ds3231.h.
| 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().
| esp_err_t ds3231_get_temperature | ( | float * | temp_c | ) |
Прочитать температуру с встроенного датчика DS3231.
| [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().
| esp_err_t ds3231_get_time | ( | ds3231_datetime_t * | dt | ) |
Прочитать текущие дату и время из DS3231.
Definition at line 128 of file ds3231.c.
References bcd_to_bin(), ds3231_datetime_t::date, DS3231_HOURS_12H, ds3231_read_regs(), DS3231_REG_SECONDS, 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.
Referenced by app_main().
| esp_err_t ds3231_init | ( | void | ) |
Добавляет DS3231 на общую I2C-шину и проверяет доступность.
Требует предварительного (или внутреннего) вызова i2c_bus_init(). Адрес: 0x68. SCL=GPIO14, SDA=GPIO15. При отсутствии чипа возвращает ошибку I2C (не вызывает abort) — вызывающий код может продолжить работу без RTC.
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().
| esp_err_t ds3231_is_oscillator_stopped | ( | bool * | stopped | ) |
Проверить, был ли остановлен осциллятор (потеря питания / батареи).
| [out] | stopped | true, если бит 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().
| 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.