RTC модули DS1307 и DS3231 на I2C шине

разделы: Arduino , RTC , дата: 16 сентября 2015г.


модули ds1307 и ds3231

Модули реального времени на DS1307 и DS3231 изготовлены в связке c EEPROM AT24 на 32Кбайта. Все эти устройства работают на I2C/TWI шине и работа с ними рассмотрена в книге Юрия Ревича "Практическое программирование микроконтроллеров AVR" в главе двенадцатой.

I2C шина позволяет на свои два провода подключить множество устройств, но это довольно медленный интерфейс, который, к тому же, еще и ограничен максимальной скоростью самого медленного устройства на шине. Для DS1307 это 100кГц. TWI интерфейс Atmel соответствует первой спецификации I2C, который был принят в начале 80-х фирмой Philips.

    Т.е. имеем ограничения:
  1. максимальное количество устройств - 127,
  2. максимальная скорость шины 400кГц.

Это если использовать аппаратный TWI. Если делать программную эмуляцию интерфейса, как рассмотрено в книге Юрия Ревича, то таких ограничений конечно же не будет.

Связка RTC модуля c EEPROM насколько понимаю довольно распространенное схемотехническое решение. Вариантов использования - множество. Например, контроллер сигналов домофона: нужно сделать так, что бы ночью он не трезвонил. Добавление EEPROM позволит вести вести логирование вызовов домофона. Повторюсь, вариантов множество.

Итак, рассмотрим DS1307 поподробнее:


модуль DS1307 c EEPROM AT24

I2C шина параллельная, на модуле уже установлено два устройства, если разьемом P1 подключиться к микроконтроллеру, то к P2 можно будет подключить другие устройства на этой шине.

Подключение к ATmega8/Arduino

Напряжение питания DS1307 - пять вольт, поэтому подключение будет такое:

Vcc <==> 5V
GND <==> GND
SCL <==> PC5 (пин Analog 5 на плате Arduino)
SDA <==> PC4 (пин Analog 4 на плате Arduino)

При отсутствии питания модуль DS1307 работает на аккумуляторе LIR2032, если вместо него ставить батарею CR2032 для модуль надо будет доработать:

Демо-пример на Arduino для работы с модулями DS1307 и DS3231 можно посмотреть здесь: Работа с часами на DS1307 в среде Arduino

поделиться: