Продолжая тему микросхем для часов реального времени, разобрался на досуге с ещё одними часиками от Dallas (maxim), ds1306+.

ds1306+ — Часы реального времени с последовательным интерфейсом и двумя будильниками

 

Отличительные особенности:

  • Подсчет реального времени в секундах, минутах, часах, датах месяца, месяцах, днях недели и годах с учетом високосности текущего года, вплоть до 2100 г.;
  • 96 байт энергонезависимого ОЗУ для хранения данных;
  • Две установки будильника, программируемые комбинацией секунд, минут, часов и дня недели;
  • Формирование импульсов частот 1 Гц и 32768 Гц;
  • Поддержка последовательного SPI-интерфейса или стандартного 3-х проводного интерфейса;
  • Возможность чтения/записи информации в режимах передачи одного байта данных или потока байт данных;
  • Двойная организация подключения основного и резервного источников питания;
  • Возможность включения встроенной цепи заряда для подзарядки резервного источника питания
  • Нормальная работа при напряжении питания 2.5-5.5 В;
  • Нормальная работ при напряжении 2.5-5.5 В на дополнительном выводе питания;
  • Возможность поставки в промышленном диапазоне температур: от -40°C до+85°C (Ind);
  • Возможность заказа микросхем в 20 выводном TSSOP корпусе.

Расположение выводов:

Описание выводов:

NC не используется
Vcc1 Основной источник питания
Vcc2 Резервный источник питания
Vbat Вход подключения батареи питания (+3 В)
Vccif Вход питания интерфейсной логики
GND Общий
X1, X2 Подключение кварцевого резонатора 32768 Гц
INT0 Выход прерывания 0 (инверсный)
INT1 Выход прерывания 1
SDI Ввод данных в последовательном формате
SDO Вывод данных в последовательном формате
CE активация микросхемы
SCLK синхронизация последовательной связи
SERMODE выбор типа последовательного интерфейса
1 Hz Выход импульсов частотой 1 Гц
32 KHz Выход импульсов частотой 32768 Гц

Структурная схема:

Общее описание:

ds1306 – часы реального времени с последовательным интерфейсом и двумя будильниками, ds1306 содержат часы-календарь с представлением информации в двоично-десятичном коде и возможностью их передачи по последовательному интерфейсу. Информация о времени и дате представляется в секундах, минутах, часах, дне недели, дате, месяце и годе. Если текущий месяц содержит менее 31 дня, то часы автоматически определяют количество дней в месяце с учетом високосности года. Часы работают в 24-часовом или 12-часовом формате с битом индикации AM/PM (до полудня/ после полудня). Дополнительно в часах организовано 96 байт энергонезависимого ОЗУ для хранения пользовательских данных.

Вывод питания интерфейсной логики Vccif позволяет ds1306 привязать уровни выходов к уровню интерфейсной логики. Это позволяет легко подключиться к 3-х вольтовой логике в системах со смешанным питанием. Для ds1306 можно организовать двойное резервное питание (выводы Vcc2 и Vbat). К выводу Vcc2 может быть подключена схема подзарядки резервного регенерируемого источника энергии (например, ионистора или аккумулятора). Вывод Vbat предназначен для подключения резервной нерегенерируемой батареи. ds1306 нормально функционирует при питании от 2.5 до 5.5В.

Адресация памяти ds1306:

ds1306 содержит два будильника с программируемым временем срабатывания, каждый программируется заданием комбинации секунд, минут, часов, дня недели и генерирует при срабатывании сигнал прерывания, отключаемый программно. Оба выхода прерываний функционирует при наличии напряжения питания на Vсс1 , Vсс2 или Vbat. Импульсы частотами 1Гц и 32768 Гц доступны с выводов 1 Hz и 32 KHz, соответственно, выход «1 Hz» управляется программно.

Регистр управления:

где:

WP— «Write Protection» — защита внутренней памяти от записи, перед любыми манипуляциями с памятью должен быть сброшен;

1Hz— «1Hz square output» — разрешение работы выхода сигнала 1Гц на соответствующем выводе;

AIE1 и AIE0 — «Alarm Interrupt 1/0» — разрешение сигналов прерывания от срабатывания соответствующего будильника.

Регистр управления доступен как для чтения, так и для записи без ограничения;

Регистр состояния:

где

IRQF1 и IRQF0— «Interrupt Flag 1/0» — состояние флагов прерывания от срабатывания будильников.

регистр состояния доступен для чтения, для записи доступ только на сброс состояния флагов (обнуление).

ds1306 поддерживает различные последовательные интерфейсы: SPI ,  или стандартный 3-проводной интерфейс. Реализованы режимы передачи данных: чтение/запись одного байта (передается 1 байт адреса+1 байт данных) и чтение/ запись N байт (передается 1 байт стартового адреса + N байт данных).

Передача/приём одиночного байта:

Передача/приём множества байт:

Даташит на ds1306+

исходный код библиотеки с примером работы и тестом функций самой библиотеки с выводом в последовательный порт компьютера.

протокол вывода:

DS1306 Status register: 00000000
DS1306 Control register: 00000011
DS1306 init…
test operations

Test 1. Alarm registers
Alarm0 disable
Alarm1 disable
Alarm0 Status:0
Alarm1 Status:0
Alarm0 enable
Alarm1 enable
Alarm0 Status:1
Alarm1 Status:1
disable Both Alarms
Alarm0 Status:0
Alarm1 Status:0
enable Both Alarms
Alarm0 Status:1
Alarm1 Status:1

Test 2. 1Hz set
set1HzState on
1Hz State:0
wait…set1HzState off
1Hz State:0
Test 3. Write protect
WP status:0
Set WriteProtection ON
WP status:1
Set WriteProtection OFF
WP status:0

Test 4. User RAM access
Set WriteProtection OFF
forming buffer — ASCII table
Write buffer to USER RAM…
Read buffer from USER RAM…
!»#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~$
wait…
Breakpoint now!
Tuesday 24/09/2013 23:17:22
Tuesday 24/09/2013 23:17:23