RTC: Обзор микросхемы часов DS3231

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

В один тестирующий стенд понадобилось добавить источник автономного точного времени для логов. В коробке с неотсортированными примочками каким-то образом оказался только чип DS3231.

Это чип часов реального времени. Причем необычный RTC. Внутри него есть собственный кварцевый резонатор, а ещё датчик температуры и регистры конфигураций. В спеке написано, что за год ошибка не превысит 2 минуты. Внутри DS3231 всего-навсего 33k транзисторов. Попробуем разобраться, что это за ASIC такой и как с ним работать.

распиновка корпуса DS3231

https://docs.google.com/spreadsheets/d/1HU7AiqZ2NBZyWqT0Ura-tjRy0CjZiKvkRfyBWxorrsQ/edit#gid=0

Схема подключения микросхемы

Программная часть

Чип программируется через 2х проводной синхронный интерфейс I2C. На шине I2C чип обладает адресом 0x68=0b1101000=104. Вот так отображается карта I2C адресов когда к шине подключен DS3231 и еще какая то eeprom.

У любого I2C устройства 2 адреса. На чтение и на запись. Для DS3231 это

Адрес

Значение

тип

bin

hex

main

0110_1000

0x68

read

1101_0001

0xD1

write

1101_0000

0xD0

Байты передаются старшим битом вперед. У него 19 регистров конфигураций по 8 бит каждый. Всего 152 бита конфигов. Вот полная карта регистров.

Заметьте, что на год выделено всего-навсего 8 бит. То есть можно отсчитывать только 256 лет, а если учитывать, что под десятки только 4 бита, то получается что 159 лет. Как же закодировать 2023 год? Можно в регистре year (0x06) хранить только десятки и единицы от значения годов. Столетия прибавлять или вычитать как константу.

Часы RTC DS3231 не такие уж и хорошие как написано в спеке. Из коробки при работе на улице летом за две недели работы они ушли в сторону на 20 минут вперед от точного времени из интернета. Если посмотреть осциллографом, что выдаёт пин 32kHz на выходе кварца, то там прямоугольный сигнал не 32768 Hz а 32776Hz.

Чтобы окончательно в этом убедиться можно выводить на улицу частоту кварца делёную на четыре. Тут становится совсем явно, что желаемая частота 8192 Hz даже ни разу не появилась.

Это значит, что часы надо подстраивать, варьируя регистр Aging Offset с адресом 10h

Согласно спеке положительные значения Aging Offset замедляют кварцевый резонатор. Это мне как раз и надо. Попробуем поставить максимальное замедление +127. Частота кварца поделенная на 4 приняла значение из диапазона 8193....8194. Это лучше 8194...8197, но на 4...8 Hz больше нужного значения.

В часах также есть термо-компенсация. И термо-компенсация не происходит сама собой. Без термо компенсации часы будут работать совсем плохо и показывать каждый день на 2 минуты больше. Поэтому надо периодически брать регистр Control (0Eh) и выставлять в 1 бит пятый бит CONV.

Идеи проектов на RTC

--Часы, будильники, календари

--Устройство которое напоминает что-то сделать.

--Телематические блоки, источник TimeStamp(ов)

--Навигационные системы

Несмотря на то, что сам драйвер часов реального времени это сравнительно простая микросхема однако для работы с часами реального времени надо целая куча разнообразных служебных функций для работы с датой и временем. Это сравнение дат. Вычисление порядкового номера дня в году, преобразование даты в строки разных национальный форматов, синтаксический разбор времени-даты из строчек, проверка структуры данных времени на валидность, вычисление разницы между двумя датами в секундах и прочее и прочее. При этом для всего для этого необходимы модульные тесты.

Как инициализировать часы реального времени?

Понятно что время надо задавать по какому-н интерфейсу, например по UART-CLI. Однако прошивка может также распарсить время прямо из дирректив препроцессора __TIME__ __DATE__. Таким образом время будет отличатся только на длительность компиляции.

Вывод

DS3231 не оправдал ожиданий. Спешит на 4...8 Hz или мне просто попался бракованный экземпляр микросхемы. Надо поискать что-то другое. Одно из двух: чип DS3231 реально спешит, либо логический анализатор Saleae Pro бракованный.

Если Вам известны другие варианты проверенных RTC модулей со встроенным батарейным отсеком, то напишите в комментариях.

Словарь

Акроним

Расшифровка

RTC

Real-Time Clock

ASIC

application-specific integrated circuit

RST

Reset

MSB

most significant bit

SQW

square-wave output

AM

After Morning

BCD

binary-coded decimal

PM

post meridiem

INT

Interrupt

I2C

Inter-Integrated Circuit

GPS

Global Positioning System

TCXO

temperature compensated crystal oscillator

VCC

Voltage Collector Collector

DS

Dallas

Links
http://microsin.net/adminstuff/hardware/ds3231-extremely-accurate-rtc.html
https://cxem.net/mc/mc316.php

https://radiolaba.ru/microcotrollers/ds3231-podklyuchenie-chasov-realnogo-vremeni.html

Контрольные вопросы:

--Почему часовые кварцы делают с частотой ровно 32768 Hz?

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Вы программировали RTC?
50% да 1
50% нет 1
Проголосовали 2 пользователя. Воздержавшихся нет.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Вы программировали чип DS3231?
50% да 1
50% нет 1
Проголосовали 2 пользователя. Воздержавшихся нет.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Вы программировали другие RTC (не DS3231)?
50% да 1
50% нет 1
Проголосовали 2 пользователя. Воздержавшихся нет.
Источник: https://habr.com/ru/articles/736482/


Интересные статьи

Интересные статьи

Web Summit — самая крупная технологическая конференция в мире, которая ежегодно проводится в Лиссабоне, — в этом году прошла с 1 по 4 ноября и собрала 42 000 участников.Представители российской к...
На российском рынке стал доступен компактный офисный десктоп ASUS ExpertCenter D5 Mini Tower D500MA. Сегодня мы проверим в деле, на что способна эта рабочая станция для м...
Близится новый JPoint, и мы готовы подробно рассказать о его программе. В этом посте мы разделили доклады по тематическим блокам: можно и быстро понять «что вообще будет», и узнать конк...
Турникеты получили широкое распространение в России в пятидесятые годы XX века. В 1952 году на станции «Красные ворота» Московского метрополитена был установлен турникет ...
Прим. перев.: Автор оригинального материала — Henning Jacobs из компании Zalando. Он создал новый веб-интерфейс для работы с Kubernetes, который позиционируется как «kubectl для веба». Почему нов...