Поиск по сайту:

 


По базе:  

микроэлектроника, микросхема, микроконтроллер, память, msp430, MSP430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, SED1335, mega128, avr, mega128  
  Главная страница > Обзоры по фирмам > Dallas > Применение

реклама

 




Мероприятия:




Сопряжение DS1307/1308 с mcs51-совместимым микроконтроллером

Введение

DS1307 – часы реального времени с последовательным интерфейсом, поддерживают последовательный двухпроводной интерфейс. Часами можно управлять, используя 8051-совместимый микроконтроллер DS5000. DS1307 подключается напрямую к двум портам I/O микроконтроллера DS5000, а двухпроводной интерфейс обеспечивается драйверами низкого уровня, которые описываются в данном техническом руководстве.

Описание DS1307

Основными характеристиками DS1307 являются: низкая потребляемая мощность, полный BCD часы/календарь и 56 байт энергонезависимой памяти SRAM. Адрес и данные передаются последовательно через двухпроводную двунаправленную шину. Часы/календарь выдают следующую информацию: секунды, минуты, часы, дни, месяцы и годы. Конец месяца автоматически устанавливается для тех месяцев, в которых менее 31 дня. Имеется поправка на високосный год. Часы работают в 24-часовом или 12-часовом формате с индикатором AM/PM. DS1307 имеет встроенную схему контроля питания, которая обнаруживает ошибки питания и автоматически переключается на батарейное питание.

Функционирование DS1307

DS1307 работает как «ведомое» устройство на последовательной шине. Для доступа к нему нужно установить состояние START и передать следом за адресом регистра идентификационный код устройства. К следующим регистрам можно обращаться последовательно, пока не установлено состояние STOP. Состояния START и STOP генерируются драйверами низкого уровня. Подпрограммы SEND_START и SEND_STOP находятся в программе DS5000. Подпрограммы SEND_BYTE и READ_BYTE обеспечивают двухпроводной интерфейс, требующийся для записи и чтения 8-разрядных слов в/из DS1307.

Конфигурация оборудования

Конфигурация система показана на рисунке 1. DS1307 имеет двухпроводную шину, подключённую к двум выводам порта I/O DS5000: SCL – P1.0, SDA – P1.1. Напряжение VDD равно 5В, RP=5K?. DS5000 использует кварцевый резонатор с частотой 12МГц. Периферийными устройствами могут быть любые устройства, поддерживающие протокол двухпроводного интерфейса, например, цифровой термометр и термостат DS1621. Подключение к DS5000 осуществлялось с использованием аппаратного и программного обеспечения макета DS5000T. Этот макет позволяет использовать ПК в качестве терминала ввода/вывода, используя последовательные порты DS5000 для соединения с клавиатурой и монитором.


Рисунок 1. Типовая конфигурация двухпроводной шины

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

В соответствии с этим должны быть оговорены следующие условия:

Начало передачи данных: изменение состояния линии данных при переходе из высокого в низкое, в то время как тактовая линия находится в высоком состоянии, определяется как состояние START.

Остановка передачи данных: Изменение состояния линии данных при переходе из низкого в высокое, в то время как тактовая линия находится в высоком состоянии, определяется как состояние STOP.

Действительные данные: Состояние линии данных соответствует действительным данным тогда, когда после условия START линия данных стабильна во время высокого состояния тактового сигнала. Данные на линии должны быть изменены во время низкого состояния тактового сигнала. Один тактовый импульс на один бит данных.

Каждая передача данных начинается при наступлении состояния START и прекращается при наступлении состояния STOP. Количество байт данных переданных между состояниями START и STOP не ограничено и определяется «ведущим» устройством. Информация передаётся побайтно, и каждый приём подтверждается девятым битом.

Подтверждение приёма: Каждое приёмное устройство, при обращении к нему, вынуждено генерировать подтверждение приёма после получения каждого байта. «Ведущее» устройство должно генерировать дополнительные тактовые импульсы, которые ставятся в соответствие битам подтверждения.

Если сигнал подтверждения приёма находится в высоком состоянии, то по приходу тактового импульса бита подтверждения, подтверждающее приём устройство должно переводить линию SDA в низкое состояние. Конечно, должны учитываться время установки и время удержания. «Ведущее» устройство должно сигнализировать об окончании передачи данных «ведомому» устройству, прекращая генерацию бита подтверждения, при получении от «ведомого» тактового импульса подтверждения приёма. В этом случае, «ведомый» должен перевести линию данных в низкое состояние, чтобы позволить «ведущему» генерировать условие STOP.

На рисунке 2 показано завершение передачи данных по двухпроводной линии. В зависимости от состояния бита R/#W, возможны два типа передачи:

1.Данные передаются от «ведущего» передатчика «ведомому» приёмнику. Первый байт, передаваемый «ведущим», является адресом «ведомого». Затем следует последовательность байтов данных. «Ведомый» возвращает биты подтверждения приёма после каждого принятого байта. Порядок передачи данных: первым является самый старший разряд (MSB).

2.Данные передаются от «ведомого» передатчика «ведущему» приёмнику. Первый байт (адрес «ведомого») передаётся «ведущему». Затем «ведущий» возвращает бит подтверждения. Это следует за передачей «ведомым» последовательности данных. «Ведущий» возвращает бит подтверждения приёма после каждого принятого байта, за исключением последнего байта. После принятия последнего байта бит подтверждения приёма не возвращается.


Рисунок 2. Передача данных по последовательной двухпроводной шине

«Ведущее» устройство генерирует все тактовые импульсы и состояния START и STOP. Передача заканчивается при возникновении состояния STOP или повторного возникновения состояния START. Так как повторное состояние START является началом следующей последовательной передачи, то шина не освобождается. Порядок передачи данных: первым является самый старший разряд (MSB).

DS1307 может работать в двух следующих режимах:

1.Режим «ведомого» приемника (режим записи DS1307): Последовательные данные и такты получены через SDA и SCL соответственно. После передачи каждого байта передаётся подтверждающий бит. Состояния START и STOP понимаются как начало и конец последовательной передачи. Распознавание адреса выполняется аппаратно после приема адреса «ведомого» и бита направления (см. рисунок 3). Байт адреса является первым байтом, принимаемым после возникновения состояния START, генерируемого «ведущим». Байт адреса содержит семь битов адреса DS1307, равных 1101000, сопровождаемых битом направления (R/#W), который для записи равен 0. После приёма и декодирования байта адреса DS1307 выдаёт подтверждение на линию SDA. После подтверждения DS1307 адреса «ведомого» и бита записи, «ведущий» передает адрес регистра DS1307. Тем самым будет установлен указатель регистра в DS1307. Затем «ведущий» начнет передавать каждый байт данных с последующим приёмом подтверждения получения каждого байта. По окончании записи «ведущий» сформирует состояние STOP, для прекращения передачи данных.

2.Режим «ведомого» передатчика (режим чтения из DS1307): Первый байт принимается и обрабатывается как в режиме «ведомого» приёмника. Однако в этом режиме бит направления укажет, что направление передачи изменено. Последовательные данные передаются DS1307 по SDA, тактовые импульсы - по SCL. Состояния START и STOP понимаются как начало и конец последовательной передачи (см. рисунок 4). Байт адреса является первым байтом, принимаемым после возникновения состояния START, генерируемого «ведущим». Байт адреса содержит семь битов адреса DS1307, равных 1101000, сопровождаемых битом направления (R/#W), который для чтения равен 1. После приёма и декодирования байта адреса DS1307 принимает подтверждение с линии SDA. Тогда DS1307 начинает передавать данные с адреса, на который показывает указатель регистра. Если указатель регистра не записан перед инициализацией режима чтения, то первым прочитанным адресом является последним адрес, сохранённый в указателе регистра. DS1307 должен послать бит «неподтверждения», чтобы закончить чтение.


Рисунок 3. Запись данных – режим «ведомого» приёмника


Рисунок 4. Чтение данных – режим «ведомого» передатчика

Работа программного обеспечения

Интерфейс DS5000

Программа, приведённая в Приложении, написана для взаимодействия DS5000 с DS1307 с помощью двухпроводного интерфейса. DS5000 запрограммирован с использованием макетной платы DS5000T фирмы Dallas Semiconductor, которая позволяет использовать ПК в качестве терминала ввода/вывода. Программные средства KIT5K поставляемые вместе с макетной платой DS5000T обеспечивают высокоуровневый интерфейс для загрузки программных приложений в DS5000 или установки его параметров через Program command. Программное обеспечение KIT5K содержит эмулятор терминала ввода/вывода, чтобы позволить пользователю запускать программные приложения в микроконтроллер DS5000, который связан с пользователем через COM порт ПК.

Исходный код DS1307

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

Подпрограммы, которые следуют непосредственно за подпрограммой MASTER_CONTROLLER, являются драйверами низкого уровня и служат для управления двухпроводным интерфейсом. Они не являются индивидуальными для DS1307, а могут быть использованы с любым совместимым с двухпроводным интерфейсом «ведомым» устройством. Вот эти подпрограммы:

SEND_START

Подпрограмма используется для генерации состояния START на двухпроводной шине.

SEND_STOP

Подпрограмма используется для генерации состояния STOP на двухпроводной шине.

SEND_BYTE

Подпрограмма посылает 8-разрядное слово (первым является старший значащий бит (MSB)) по двухпроводной шине и девятый тактовый импульс для импульса подтверждения приёма.

READ_BYTE

Подпрограмма читает 8-разрядное слово с двухпроводной шины. Она проверяет очищен ли флаг LASTREAD после того, как считан последний байт из «ведомого» устройства. Если это был не последний байт, то DS5000 посылает импульс подтверждения по девятому тактовому импульсу, а если это был последний считанный байт из «ведомого» устройства, то DS5000 посылает «неподтверждение».

SCL_HIGH

Подпрограмма осуществляет переход линии SCL из низкого в высокое состояние и обеспечивает высокое состояние линии SCL перед продолжением.

DELAY и DELAY_4

Эти две подпрограммы включены для обеспечения сохранения временной диаграммы двухпроводной шины.

Остальная часть кода, включённая в приложение, специально предназначена для демонстрации функций DS1307. Продемонстрированы следующие функции:

Setting Time

Время считывается с клавиатуры и сохраняется в сверхоперативной памяти DS5000. Затем оно передаётся по двухпроводной шине в DS1307.

Set RAM

Одиночный байт в шестнадцатеричном виде считывается с клавиатуры и записывается в RAM DS1307.

Read Date/Time

Дата и время считываются по двухпроводной шине и сохраняются в сверхоперативной памяти DS5000. Затем они выводятся на экран. Это продолжается до тех пор, пока не будет нажата кнопка на клавиатуре.

OSC On/OSC Off

Тактовый генератор DS1307 может быть включен или выключен.

SQW/OUT On/SQW/OUT Off

Функция SQW/OUT может быть включена или выключена. Она будет переключаться на частоте 1 Гц.

Таблица 1. AC электрические характеристики

Параметр Символ Эффективное
значение
Единицы
Тактовая частота SCL fSCL 59 кГц
Время свободного состояния шины между состояниями STOP и START tBUF 5.7 мкс
Время удержания(повторенного) состояния START tHD:STA 6.2 мкс
Период низкого состояния тактового импульса SCL tLOW 10.5 мкс
Период высокого состояния тактового импульса SCL tHIGH 6.5 мкс
Время установки для повторного состояния START tSU:STA 5.3 мкс
Время удержания данных tHD:DAT 5.5 мкс
Время установки данных tSU:DAT 3.1 мкс
Время установки для состояния STOP tSU:STO 5.4 мкс

Заключение

Было показано, как правильно подсоединять напрямую DS1307 или любое двухпроводное «ведомое» устройство к 8051-совместимому микроконтроллеру. Соединение должно быть таким, чтобы временная диаграмма двухпроводного интерфейса на микроконтроллере не нарушалась драйверами низкого уровня. Для этого в программный код должны быть включены подпрограммы задержки. Приведённых в таблице 1 эффективных значений, придерживались при конфигурации аппаратной части, описанной в данном техническом руководстве.

Документация

  Rus Пример программы на языке Асемблер
  100 Kb Engl Исходный фаил
  Rus Описание интерфейса I2C
  Програмное обеспечение микроконтроллеров MCS-51
  200 Kb Engl Описание DS1307 - часы реального времени с IIC интерфейсом





 
Впервые? | Реклама на сайте | О проекте | Карта портала
тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru
©1998-2023 Рынок Микроэлектроники