Перейти к содержанию

Почему DS3231 сбрасывает время после отключения питания?

Обновлено Редакция GAW

DS3231 хранит время, пока работает его генератор, а при отключении основного питания переходит на батарею. Если время пропадает, значит, генератор при отключении остановился или регистры были перезаписаны.

ПризнакПричинаПроверка
После включения — 01.01.2000, 00:00батареи нет или она разряжена: при первой подаче питания регистры сбрасываются на 01/01/00напряжение на выводе VBAT не меньше 2,3 В
Время «замирает» на время отключения, потом идёт дальшебит EOSC = 1: генератор останавливается при переходе на батареюпрочитать регистр 0Eh, бит 7 должен быть 0
Каждый раз одно и то же время — время прошивкискетч при каждом запуске записывает время в часыубрать установку времени из setup()
Время случайно сбиваетсяпомехи или утечки у кварца, генератор останавливалсяфлаг OSF в регистре 0Fh

Батарея

DS3231 работает от батареи при напряжении на VBAT от 2,3 до 5,5 В и переходит на неё, когда VCC падает ниже порога 2,45–2,70 В и ниже напряжения батареи. Энергию батареи он тратит экономно: ток хранения — до 3,0 мкА при 3,63 В. Наш расчёт: CR2032 ёмкостью 235 мА·ч при 3 мкА хватит примерно на 9 лет, так что «села за месяц» — признак не разряда, а неисправности: утечки на плате, плохого контакта или цепи подзаряда на модуле, которую с CR2032 нужно разорвать (раздел «Подзаряд» в схеме подключения).

Бит EOSC и флаг OSF

Бит EOSC в регистре управления 0Eh при значении 1 останавливает генератор, как только часы переходят на батарею. Это режим хранения без отсчёта времени, например на складе. После первого включения бит равен 0, но его может установить чужая библиотека или ошибка записи в регистр.

Флаг OSF — главный инструмент диагностики: он ставится при первом включении и при любой остановке генератора и снимается только записью нуля. Если программа проверяет OSF при старте, она всегда знает, можно ли доверять времени.

Схема подключения и расчёт подтяжек — в статье «Часы реального времени DS3231: подключение к микроконтроллеру», сравнение с DS1307 — на странице DS3231 и DS1307, что такое RTC вообще — в термине «часы реального времени». Тот же вопрос для встроенных часов микроконтроллера — в ответе «Сколько проработают часы STM32 от батарейки?».

Похожие вопросы

Как программно понять, что время сбилось?

По флагу OSF — бит 7 регистра состояния 0Fh. DS3231 устанавливает его при первом включении и когда генератор останавливался, а сбросить его можно только записью нуля. Программа при старте читает OSF: если он 1, время недостоверно, его надо выставить заново и сбросить флаг.

Почему после замены батарейки часы всё равно сбиваются?

Проверьте напряжение прямо на выводе VBAT микросхемы: ему нужно не меньше 2,3 В. На модулях бывает цепь подзаряда от VCC — резистор и диод к VBAT; с CR2032 её разрывают (см. схему подключения DS3231). У держателя бывает плохой контакт. Если на VBAT всё в порядке, ищите ошибку в программе: часто скетч при каждом запуске записывает в часы время компиляции.

Сколько проработает DS3231 от CR2032?

Наш расчёт по наибольшему току хранения 3,0 мкА: 235 мА·ч / 3 мкА ≈ 78 000 ч, около 9 лет; это оценка сверху, потому что Energizer указывает ёмкость до 2,0 В, а DS3231 нужно от 2,3 В. При типичных 0,84 мкА расчёт даёт больше, но тогда срок ограничит уже саморазряд батарейки — около 1 % в год. Подробнее — в схеме подключения DS3231.

Источники

  1. Maxim Integrated (Analog Devices). DS3231: Extremely Accurate I2C-Integrated RTC/TCXO/Crystal (19-5170, Rev 10, 3/15) — с. 2 — VBAT 2,3–3,0–5,5 В, порог переключения VPF 2,45–2,70 В; с. 3 — ток от батареи при хранении времени 0,84 мкА тип., 3,0 мкА макс. при 3,63 В; с. 10, Power Control — при VCC ниже VPF и ниже VBAT часы питаются от батареи; при первой подаче VBAT генератор не запускается, пока VCC не превысит VPF или не будет записан адрес I2C; при первой подаче питания регистры времени и даты сбрасываются на 01/01/00 01 00:00:00; с. 13 — бит EOSC = 1 останавливает генератор при переходе на батарею; флаг OSF (бит 7 регистра 0Fh) устанавливается при первом включении и при остановке генератора, сбрасывается только записью 0
  2. Energizer. CR2032 Lithium Coin product datasheet — номинал 3,0 В, ёмкость 235 мА·ч до 2,0 В на нагрузке 15 кОм при 21 °C, саморазряд около 1 % в год

Нашли ошибку?