Ведущий однопроводной интерфейс 1-Wire компании Dallas

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

    Поддержка стандартной скорости протокола Dallas 1-Wire. Совместимость со всеми микроконтроллерами AVR. Реализация с управлением по прерываниям или по опросу. Реализация на основе опроса не требует внешней схемы.

Введение

Уникальность микросхем Dallas с интерфейсом 1-Wire заключается в необходимости использования для связи с ними только одной сигнальной линии и общего проводника. Питание и связь осуществляются через одно соединение. Для связи с такой микросхемой требуется задействовать только одну линию ввода-вывода. В данных «Рекомендациях» показывается, как с помощью AVR-микроконтроллера реализовать ведущий интерфейс 1-Wire программным способом или с задействованием модуля У(С)АРТ.

Принцип действия протокола Dallas 1-Wire

Шина 1-Wire использует только один проводник для связи и питания. Режим связи – асинхронный и полудуплексный, который строго следует схеме ведущий-подчиненный. К одной и той же шине могут быть одновременно подключено одно или несколько подчиненных устройств. К одной шине может быть подключено только одно ведущее устройство.

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

НЕ нашли? Не то? Что вы ищете?

Передача сигналов по шине 1-Wire разделена на временные слоты длительностью 60 мкс. Одним временным слотом передается только один бит данных. Подчиненным устройствам допускается иметь существенные отличия от номинальных выдержек времени. Однако это требует более точного отсчета времени ведущим, чтобы гарантировать корректность связи с подчиненными, у которых различаются временные базисы. Таким образом, следует в точности выдерживать временные границы, рассматриваемые в следующих разделах.

Основные сигналы шины

Ведущий инициирует каждую связь на битном уровне. Это означает, что передача каждого бита, независимо от направления, должна быть инициирована ведущим. Это достигается установкой низкого уровня на шине, который синхронизирует логику всех остальных устройств. Существует 5 основных команд для связи по шине 1-Wire: “Запись лог. 1”, “Запись лог. 0”, “Чтение”, “Сброс” и “Присутствие”.

Сигнал “Запись лог. 1”

Сигнал “Запись лог. 1” показан на рисунке 1. Ведущий устанавливает низкий уровень в течение 1…15 мкс. После этого, в течение оставшейся части временного слота он освобождает шину.


Рисунок 1 – Сигнал «Запись лог. 1»

Сигнал “Запись лог. 0”

Сигнал “Запись лог. 0” показан на рисунке 2. Ведущий формирует низкий уровень в течение не менее 60 мкс, но не дольше 120 мкс.


Рисунок 2 – Сигнал «Запись лог. 0»

Сигнал “Чтение”

Сигнал “Чтение” показан на рисунке 3. Ведущий устанавливает низкий уровень в течение 1…15 мкс. После этого подчиненный удерживает шину в низком состоянии, если желает передать лог. 0. Если необходимо передать лог. 1, то он просто освобождает линию. Сканирование шины необходимо выполнять по истечении 15 мкс после установки низкого уровня на шине. Если смотреть со стороны ведущего, сигнал “Чтение” является в сущности сигналом «Запись лог. 1». Собственно внутреннее состояние подчиненного будет определять это сигнал «Запись лог. 1» или «Чтение».


Рисунок 3 – Сигнал «Чтение»

Сигнал “Сброс/присутствие”

Сигналы “Сброс” и “Присутствие” показаны на рисунке 4. Обратите внимание, что временные интервалы импульсов отличаются. Ведущий устанавливает низкий уровень в течение 8 временных слотов (480 мкс), а затем освобождает шину. Данный длительный период низкого состояния называется сигнал «Сброс».

Если на шине присутствует подчиненный, то он должен в течение 60 мкс после освобождения ведущим шины установить низкий уровень длительностью не менее 60 мкс. Данный отклик носит название «Присутствие». Если такой сигнал не обнаруживается, то ведущий должен полагать, что нет подключенных устройств к шине и дальнейшая связь невозможна.


Рисунок 4 – Сигналы «Сброс» и «Присутствие»

Программная генерация сигналов

Программная генерация сигналов 1-Wire является наиболее очевидным решением. При этом необходимо манипулировать над изменением направления и состояния линии ввода-вывода, а также генерировать требуемые временные задержки. Подробное описание данного метода приведено в разделе реализации.

Генерация сигналов с помощью УАПП

Основные сигналы 1-Wire также можно генерировать с помощью УАПП. Для этого необходимо связать с шиной выводы TXD и RXD с помощью несложной схемы представленной на рисунке 5. Приведенные номиналы резисторов носят рекомендательный характер. Более подробные рекомендации по выбору подтягивающего резистора следует искать в документации на подчиненную ИМС.


Рисунок 5 – Схемотехника драйвера шины с открытым коллектором

Формат данных УАПП, который используется для генерации сигналов 1-Wire, - 8 бит данных без бита паритета и 1 стоп-бит. Одна посылка данных УАПП используется для генерации нужной формы прямоугольного импульса или последовательности СБРОС/ПРИСУТСТВИЕ. В таблице 1 показано, как настроить УАПП для генерации прямоугольного импульса и как интерпретировать принятые данные. Соответствующие структуры посылок УАПП показаны на рисунках 6…10.

Таблица 1 – Передача сигналов с помощью УАПП

Сигнал

Скорость связи

Передаваемое значение

Принимаемое значение

«Запись лог. 1»

115200

FFh

FFh

«Запись лог. 0»

115200

00h

00h

Чтение

115200

FFh

Если принято FFh, то это эквивалентно приему лог. 1;
прием любого другого значения эквивалентен приему лог. 0

Сброс/Присутствие

9600

F0h

Если принято F0h, то это означает нет подтверждения «присутствия», иначе «присутствие» принято.


Рисунок 6-Сигнал «Запись лог. 1» и структура посылки УАПП.


Рисунок 7- Сигнал «Запись лог. 0» и структура посылки УАПП.


Рисунок 8 – Сигнал «Чтение лог. 0» и структура посылки УАПП.


Рисунок 9 – Сигнал «Чтение лог. 1» и структура посылки УАПП.


Рисунок 10 – Сигнал «Сброс/Присутствие» и структура посылки УАПП.

Команды функций ПЗУ

Каждая ИС из семейства 1-Wire содержит ПЗУ, в котором хранится уникальный 64-разрядный идентификационный код (ИК). Данный код может использоваться для адресации или идентификации конкретной ИС на шине. Идентификатор состоит из трех частей: 8 бит кода семейства, 48 бит серийного номера и 8 бит CRC-кода, вычисленного от первых 56 бит. Имеется небольшой набор команд, который работает совместно с 64-разр. ИК. Эти команды называются команды функций ПЗУ. В таблице 2 приведен перечень шести команду ПЗУ.

Таблица 2 – Команды ПЗУ

Команда

Код

Назначение

READ ROM (ЧТЕНИЕ ПЗУ)

33H

Идентификация

SKIP ROM (ПРОПУСК ПЗУ)

CCH

Пропуск адресации

MATCH ROM (СОВПАДЕНИЕ ПЗУ)

55H

Адресация подчиненного устройства

SEARCH ROM (ПОИСК ПЗУ)

F0H

Получение идентификационных данных о всех устройствах на шине

OVERDRIVE SKIP ROM

3CH

Ускоренная версия SKIP ROM

OVERDRIVE MATCH ROM

69H

Ускоренная версия MATCH ROM

Описание команд

Команда «Чтение ПЗУ»

Команда “Чтение ПЗУ” может использоваться на шине с одним подчиненным для чтения 64-разр. индивидуального ИК. Если имеется несколько подчиненных устройств, подключенных к шине, то результатом выполнения этой команды будет прием значения, эквивалентного логическому И между всеми ИК. При этом полагается, что связь безупречная, а наличие нескольких подчиненных индицируется ошибочным CRC.

Команда «Пропуск ПЗУ»

Команда «Пропуск ПЗУ» может использоваться, если нет необходимости адресоваться к конкретному подчиненному устройству по его специфическому адресу. На шине с одним подчиненным команда “Пропуск ПЗУ” прекрасно подходит для его адресации. На шине с несколькими подчиненными команда “Пропуск ПЗУ” может использоваться для адресации всех устройств одновременно.

Это удобно, если требуется отправить общую команду нескольким подчиненным устройствам, например, одновременный запуск преобразования температуры в нескольких датчиках температуры. Команду “Пропуск ПЗУ” бессмысленно использовать при чтении шины с несколькими подчиненными устройствами.

Команда «Совпадение ПЗУ»

Команда “Совпадение ПЗУ” используется для адресации конкретного подчиненного устройства на шине.

После выполнения команды “Совпадение ПЗУ” передается 64-разрядный ИК. По завершении, только тому подчиненному устройству, который принял свой ИК, разрешается отвечать после приема следующего импульса сброса.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4