MyTetra Share
Делитесь знаниями!
DS3231
Время создания: 05.04.2017 12:10
Раздел: Electronics - Components

Микросхема использует интерфейс передачи данных I2C. Поддерживается стандартная (100 кГц) и высокая (400 кГц) скорость передачи данных. Адрес микросхемы (7 бит) на шине I2C равен 1101000. Дополнительно на модуле установлена память I2C (24C32).

Напряжение питания микросхемы может находиться в пределах 2,3…5,5В, имеются две линии питания, для внешнего источника (линия Vcc), а также для батареи (Vbat). Напряжение внешнего источника постоянно отслеживается, при падении ниже порога Vpf=2,5В, происходит переключение на линию батареи. В следующей таблице представлены условия переключения между линиями питания:

Комбинации уровней напряжения

Активная линия питания

Vcc < Vpf, Vcc < Vbat

Vbat

Vcc < Vpf, Vcc > Vbat

Vcc

Vcc > Vpf, Vcc < Vbat

Vcc

Vcc > Vpf, Vcc > Vbat

Vcc

Точность хода часов поддерживается за счет отслеживания  температуры окружающей среды. В микросхеме запускается внутренняя процедура корректировки частоты тактового генератора, величина корректировки определяется по специальному графику зависимости частоты от температуры. Процедура запускается после подачи питания, а затем выполняется каждые 64 секунды.

В целях сохранения заряда, при подключении батареи (подача напряжения на линию Vbat), тактовый генератор не запускается до тех пор, пока напряжение на линии Vcc не превысит пороговое значение Vpf, или не будет передан корректный адрес микросхемы по интерфейсу I2C. Время запуска тактового генератора составляет менее одной секунды. Примерно через 2 секунды после подачи питания (Vcc), или получения адреса по интерфейсу I2C, запускается процедура коррекции частоты. После того как тактовый генератор запустился, он продолжает функционировать до тех пор, пока присутствует напряжение Vcc или Vbat. При первом включении регистры даты и времени сброшены, и имеют следующие значения:

01/01/ 00 — 01 — 00/00/00 (день/месяц/год/ — день недели — час/минуты/секунды).

Ток потребления при питании от батареи напряжением 3,63В, составляет 3 мкА, при отсутствии передачи данных по интерфейсу I2C. Максимальный ток потребления может достигать 300 мкА, в случае использования внешнего источника питания напряжением 5,5В, и высокой скорости передачи данных I2C.

Описание регистров DS3231

Ниже в таблице представлен перечень регистров часов реального времени:


Адрес

D7

D6

D5

D4

D3

D2

D1

D0

Функция

Пределы

0x00

0

10 секунд

Секунды

Секунды

00-59

0x01

0

10 минут

Минуты

Минуты

00-59

0x02

0

12/24

AM/PM

10 часов

Час

Часы

1-12 +  AM/PM или 00-23

10 часов

0x03

0

0

0

0

0

День

День недели

1-7

0x04

0

0

10 число

Число

Дата

01-31

0x05

Century

0

0

10 месяц

Месяц

Месяцы/век

01-12 + Век

0x06

10 лет

Год

Годы

00-99

0x07

A1M1

10 секунд

Секунды

Секунды, 1-й будильник

00-59

0x08

A1M2

10 минут

Минуты

Минуты, 1-й будильник

00-59

0x09

A1M3

12/24

AM/PM

10 часов

Час

Часы, 1-й будильник

1-12 +  AM/PM или 00-23

10 часов

0x0A

A1M4

DY/DT

10 число

День

День недели, 1-й будильник

1-7

Число

Дата, 1-й будильник

01-31

0x0B

A2M2

10 минут

Минуты

Минуты, 2-й будильник

00-59

0x0C

A2M3

12/24

AM/PM

10 часов

Час

Часы, 2-й будильник

1-12 +  AM/PM или 00-23

10 часов

0x0D

A2M4

DY/DT

10 число

День

День недели, 2-й будильник

1-7

Число

Дата, 2-й будильник

01-31

0x0E

EOSC

BBSQW

CONV

RS2

RS1

INTCN

A2IE

A1IE

Регистр настроек (Control)

0x0F

OSF

0

0

0

EN32kHz

BSY

A2F

A1F

Регистр статуса (Status)

0x10

SIGN

DATA

DATA

DATA

DATA

DATA

DATA

DATA

Регистр подстройки частоты (Aging Offset)

0x11

SIGN

DATA

DATA

DATA

DATA

DATA

DATA

DATA

Регистр температуры, старший байт

0x12

DATA

DATA

0

0

0

0

0

0

Регистр температуры, младший байт


Информация о времени хранится в двоично-десятичном формате, то есть каждый разряд десятичного числа (от 0 до 9) представляется группой из 4-х бит. В случае одного байта, младший полубайт отсчитывает единицы, старший десятки и т. д. Счет времени осуществляется в регистрах с адресами 0x00-0x06, для отсчета часов можно выбрать режим 12-ти или 24-х часов. Установка 6-го бита регистра часов (адрес 0x02), задает 12-ти часовой режим, в котором 5-й бит  указывает на время суток, значению 1 соответствует время после полудня (PM), значению 0 до полудня (AM). Нулевое значение 6-го бита соответствует 24-х часовому режиму, здесь 5-й бит участвует в счете часов (значения 20-23).


Регистр дня недели инкрементируется в полночь, счет идет от 1 до 7, регистр месяцев (адрес 0x05) содержит бит века Century (7-й бит), который переключается при переполнении регистра счета лет (адрес 0x06), от 99 к 00.


В микросхеме DS3231 реализовано два будильника, 1-й будильник настраивается с помощью регистров с адресами 0x07-0x0A, 2-й будильник регистрами 0x0B-0x0D. Битами A1Mx и A2Mx можно настроить различные режимы для будильников, установка бита исключает соответствующий регистр из операции сравнения. Ниже в таблицах приведены комбинации битов для разных режимов будильника:



Будильник 1

DY/DT

A1M4

A1M3

A1M2

A1M1

Режим будильника

X

1

1

1

1

Сигнал каждую секунду

X

1

1

1

0

Сигнал при совпадении секунд

X

1

1

0

0

Сигнал при совпадении минут, секунд

X

1

0

0

0

Сигнал при совпадении часа, минут, секунд

0

0

0

0

0

Сигнал при совпадении даты, часа, минут, секунд

1

0

0

0

0

Сигнал при совпадении дня недели, часа, минут, секунд

Будильник 2

DY/DT

A2M4

A2M3

A2M2

Режим будильника

X

1

1

1

Сигнал каждую минуту (при значении 00 секунд)

X

1

1

0

Сигнал при совпадении минут

X

1

0

0

Сигнал при совпадении часа, минут

0

0

0

0

Сигнал при совпадении даты, часа, минут

1

0

0

0

Сигнал при совпадении дня недели, часа, минут


Комбинации битов не указанные в таблицах, приводят к некорректному функционированию будильников. Если бит DY/DT сброшен, то для будильника отслеживается совпадение даты (день месяца), при установке бита DY/DT, проверяется совпадение дня недели.


Регистр Control.

Большинство функций настраивается в регистре Control:


Бит EOSC управляет запуском тактового генератора, сброс бита запускает генератор. Установка бита останавливает генератор, только для режима питания от батареи (Vbat). При питании от внешнего источника (Vcc), генератор всегда запущен независимо от состояния бита EOSC. После включения, значение бита по умолчанию равно 0.


Установка бита BBSQW разрешает функционирование выхода INT/SQW (3-й вывод) в режиме питания от батареи, при отсутствии внешнего питания. При нулевом значении бита, выход INT/SQW переходит в 3-е состояние (деактивируется), если напряжение внешнего источника Vcc падает ниже порогового значения Vpf. После подачи питания, значение бита по умолчанию равно 0.


Бит CONV отвечает за принудительное измерение температуры, установка бита запускает процесс преобразования, во время которого также выполняется корректировка частоты тактового генератора, результат измерения находится в регистрах с адресами 0x11, 0x12. Запуск возможен только в случае окончания предыдущего преобразования, перед запуском необходимо проверить флаг занятости BSY. Принудительное преобразование температуры не влияет на внутренний 64-х секундный цикл корректировки частоты. Установка бита CONV не влияет на флаг BSY в течение 2 мс. Биты CONV и BSY сбрасываются автоматически после завершения преобразования.


Биты RS2, RS1 устанавливают частоту прямоугольных импульсов (меандр) на выходе INT/SQW. По умолчанию, при включении биты устанавливаются в 1. Ниже в таблице представлены возможные комбинации битов:


RS2

RS1

Частота прямоугольных импульсов на выходе INT/SQW

0

0

1 Гц

0

1

1,024 кГц

1

0

4,096 кГц

1

1

8,192 кГц


Бит INTCN управляет выходом INT/SQW. Если бит сброшен, на выходе появляются прямоугольные импульсы (меандр), частота которых задается битами RS2, RS1. При установке бита INTCN, выход используется для генерации прерываний по сигналу будильника. По умолчанию, значение бита равно 1. Тип выхода INT/SQW — открытый сток, соответственно необходима подтяжка через резистор к высокому логическому уровню, активный уровень – низкий.


Установка битов A1IE, A2IE разрешает прерывания по сигналу 1-го и 2-го будильника соответственно. Сброс битов, запрещает прерывания. По умолчанию значение равно 0.


Регистр состояния Status.

Регистр Status содержит флаги событий, и управляет выходом 32 kHz. Флаг OSF отражает состояние тактового генератора, значение 1, означает, что генератор остановлен, это событие может произойти в следующих случаях:

  • В первое время после подачи питания
  • Напряжение батареи или внешнего источника недостаточно для работы тактового генератора
  • Генератор выключен установкой бита EOSC в режиме питания от батареи
  • Внешние факторы, влияющие на кварцевый генератор (шум, утечка и т.д.)

После установки значение бита не меняется, необходимо сбросить бит вручную.


Установка бита EN32kHz разрешает генерирование прямоугольных импульсов (меандр) на выходе 32kHz (1-й вывод), частота импульсов фиксирована и равна 32,768 кГц. Сброс бита отключает данную функцию и переводит выход в 3-е состояние (с высоким входным сопротивлением). По умолчанию значение бита равно 1,  после подачи питания на выходе появляются импульсы. Тип выхода 32kHz открытый сток, поэтому требуется подтяжка к высокому логическому уровню.


Флаг занятости BSY устанавливается во время процесса преобразования температуры и корректировки частоты тактового генератора. Флаг сбрасывается после завершения преобразования.


Флаги будильников A1F, A2F устанавливаются при совпадении значений регистров счета времени и регистров будильника. Если разрешены прерывания по сигналу будильников A1IE, A2IE, а также назначен выход прерывания (установлен бит INTCN), то на выходе INT/SQW появляется сигнал прерывания (переход от высокого к низкому логическому уровню). Флаги необходимо сбросить вручную, записав значение 0.


Регистр Aging Offset предназначен для подстройки частоты тактового генератора. Значение регистра добавляется к частоте генератора во время выполнения внутренней процедуры корректировки, если зафиксировано изменение температуры, а также при запуске преобразования температуры битом CONV. Величина смещения знаковая, то есть положительные значения (1-127) уменьшают частоту, отрицательные (128-255) увеличивают. Для одинакового смещения, изменение частоты будет различным в зависимости от температуры. При температуре +25°C, изменение частоты составит 0,1 ppm/LSB.


Текущее значение температуры хранится в регистрах с адресами 0x11 и 0x12, старший и младший байт соответственно, значение температуры в регистрах периодически обновляется.  Установлено левое выравнивание, разрешение составляет 10 бит или 0,25°C/LSB, то есть в старшем байте находится целая часть температуры, а 6, 7-й биты в младшем регистры составляют дробную часть. В старшем байте 7-й бит указывает знак температуры, например, значению 00011011 01 соответствует температура +27,25 °C, значению 11111110 10 температура -2,5 °C.


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



Формат чтения/записи.

Для того чтобы осуществить запись данных (а это нужно и для того чтобы прочитать данные) нужно передать условие старта (эти команды осуществляются по средствам аппаратного или программного I2C для микроконтроллера), далее передать адрес микросхемы с битом записи, далее передать адрес регистра к которому будем обращаться и далее передать в этот регистр байт данных, если следом передать еще байт данных, он запишется в следующий регистр и так далее. По окончании нужно передать условие остановки. Графическое изображение выше сказанного на рисунке:


Запись данных необходима для первоначальной настройки, а также для настройки текущего времени. Далее нам нужно постоянно получать данные о текущем времени и даты. Для этого необходимо осуществлять чтение из регистров хранения этой информации. Чтение состоит из двух процедур - установить указатель на нужный регистр и прочитать его. Чтобы установить указатель на нужный регистр, нужно передать условие старта, потом передать адрес микросхемы с битом записи и байт с адресом регистра. Далее либо условие остановки и следом условие старта, либо просто рестарт. Теперь вторая процедура - непосредственно чтение из регистров. Старт передан, далее нужно отправить адрес микросхемы с битом чтения и далее считывать регистры в необходимом количестве, по окончании передать условие остановки. Если информация из регистра была прочитана, то указатель автоматически переходит на следующий за ним регистр без лишних действий со стороны микроконтроллера (мастер устройства). На рисунке проиллюстрировано все выше сказанное относительно чтения регистров по средствам I2C интерфейса:

Адрес микросхемы:

  • для записи - 0b11010000
  • для чтения - 0b11010001




 
MyTetra Share v.0.53
Яндекс индекс цитирования