1 wire протокол описание

04.11.2020 Новости 

Интерфейс 1-Wire разработан фирмой Dallas Semiconductor, все права на этот интерфейс принадлежат исключительно этой фирме (Которая, впрочем, уже давно прекратила свое самостоятельное сущестование и перешла под крыло корпорации MAXIM Inc.).
Чем привлекателен этот интерфейс? Разумеется, малым количеством выводов МК, требующихся для подключения практически неограниченного количества микросхем. В самом деле, двусторонний обмен требует всего 1 линию! Кроме того, ассортимент устройств с этим интерфейсом весьма широк. Наконец, протокол обмена по этому интерфейсу очень прост и легко реализуется программно практически на любых МК хотя есть и специальные микросхемы-адаптеры).

Фирменная документация по указанному интерфейсу и устройствах, его поддерживающих, находится по адресу http://www.maxim-ic.com/1-Wire.cfm.

Аппаратная реализация интерфейса 1-Wire

На рисунке показана упрощенная схема аппаратной реализации интерфейса 1-Wire. Вывод DQ устройства представляет собой вход КМОП-логического элемента, который может быть зашунтирован (замкнут на общий провод) полевым транзистором. Сопротивление канала этого транзистора в открытом состоянии - около 100 Ом. Когда транзистор заперт - имеется небольшой ток утечки (примерно 5 мкА) на общий провод.
Шина 1-Wire должна быть подтянута отдельным резистором к напряжению питания устройств (которое, кстати, может быть от 3 до 5В - уточняется по характеристикам конкретного устройства). Сопротивление этого резистора 4.7 К, однако, это значение рекомендовано только для достаточно коротких линий. Если шина 1-Wire используется для подключения удаленных на большое расстояние устройств, то сопротивление этого резистора следует уменьшить. Чуть позже я коснусь этой проблемы и поясню причины необходимости такого уменьшения сопротивления, а пока скажу, что минимально допустимое его сопротивление - около 300 Ом, а максимальное - около пары-тройки десятков килоом. Данные величины - ориентировочные, вы всегда должны уточнить по характеристикам конкретного устройства 1-Wire его максимальный втекающий ток линии DQ, который, собственно, и определяет минимум внешнего сопротивления.
Подключение шины 1-Wire к МК показано условно в двух вариантах: с использованием 2 отдельных выводов МК (один в качестве выхода, а другой в качестве входа), так и одного, работающего и на ввод и на вывод. Разделение этих способов показано пунктирной линией, условно обозначающей границу корпуса МК. С некоторой натяжкой можно представить себе логическое строение шины 1-Wire как всем известное соединение выводов микросхем с открытым коллектором по схеме "монтажное ИЛИ". Очевидно, что передача какой-либо информации при этом возможна только выдачей низкого уровня в линию, т.е. замыканием ее на общий провод, а в высокий логический уровень линия вернется сама, благодаря наличию внешнего подтягивающего резистора. Так же очевидно, что одновременная передача нескольких устройств обречена на неудачу из-за полного искажения информации (все передаваемые единицы одного устройства будут подавлены передаваемыми нулями от другого устройства).

Программная реализация интерфейса 1-Wire

А теперь о том, как происходит обмен информацией по шине 1-Wire. Основные постулаты.
1. Обмен всегда ведется по инициативе одного ведущего устройства, которое в большинстве случаев является микроконтроллером (МК).
2. Любой обмен информацией начинается с подачи импульса сброса ("Reset Pulse" или просто RESET) в линию 1-Wire ведущим устройством.
3. Для интерфейса 1-Wire в общем случае предусматривается "горячее" подключение и отключение устройств.
4. Любое устройство, подключенное к 1-Wire после получения питания выдает в линию DQ импульс присутствия, называемый "Presence pulse" (далее я буду использовать термин PRESENCE). Этот же импульс устройство всегда выдает в линию, если обнаружит сигнал RESET.
5. Появление в шине 1-Wire импульса PRESENCE после выдачи RESET однозначно свидетельствует о наличии хотя бы одного подключенного устройства.
6. Обмен информации ведется так называемыми тайм-слотами: один тайм-слот служит для обмена одним битом информации.
7. Данные передаются побайтно, бит за битом, начиная с младшего бита. Достоверность переданных/принятых данных (проверка отсутствия искажений) гарантируется путем подсчета циклической контрольной суммы.
Основные постулаты определяют логический низкоуровневый протокол обмена данными.
На следующем рисунке показана диаграмма сигналов RESET и PRESENCE, с которых всегда начинается любой обмен данными. Кстати, выдача импульса RESET в процессе обмена служит для досрочного завершения процедуры обмена информацией.

Диаграмма сигналов инициализации обмена

Как видим, длительность большинства временных интервалов очень приблизительная и имеет только ограничение только по минимуму (не меньше указанного). Условные обозначения линий, показанные на Рис. 2, будут использоваться и далее.
Импульс RESET формирует ведущий МК, переводя в низкий логический уровень шину 1-Wire и удерживая ее в этом состоянии минимум 480 микросекунд. Затем МК должен "отпустить" шину. Через некоторое время, зависящее от емкости линии и сопротивления подтягивающего резистора, в линии установится высокий логический уровень. Протокол 1-Wire ограничивает это время "релаксации" диапазоном от 15 до 60 микросекунд, что и является определяющим для выбора подтягивающего резистора (как правило, емкость линии мы менять существенно не можем, а именно она оказывает существенное влияние на время возврата линии к высокому уровню).
Обнаружив импульс RESET, ведомое устройство приводит свои внутренние узлы в исходное состояние и формирует ответный импульс PRESENCE, как следует из рисунка - не позже 60 микросекунд после завершения импульса RESET. Для этого устройство переводит в низкий уровень линию DQ и удерживает ее в этом состоянии от 60 до 240 микросекунд. Конкретное время удержания зависит от многих параметров, но всегда находится в указанном диапазоне. После этого устройство так же "отпускает" шину.
Но после завершения импульса PRESENCE устройству дается еще некоторое время для завершения внутренних процедур инициализации, таким образом, МК должен приступить к любому обмену с устройством не ранее, чем через 480 микросекунд после завершения импульса RESET.
Итак, процедура инициализации интерфейса, с которой начинается любой обмен данными между устройствами, длится минимум 960 микросекунд, состоит из передачи от МК сигнала RESET и приему от устройства сигнала PRESENCE. Если сигнал PRESENCE не обнаружен - значит на шине 1-Wire нет готовых к обмену устройств.

Теперь рассмотрим процедуры обмена битами информации, которые, как вы помните, осуществляются определенными тайм-слотами. Тайм-слот - это по существу определенная, довольно жестко лимитированная по времени последовательность смены уровней сигнала в линии 1-Wire. Различают 4 типа тайм-слотов (я буду использовать термин МК, как синоним "ведущего устройства" и просто "устройство", как синоним "ведомого"): передача "1" от МК, передача "0" от МК, прием "1" от устройства и прием "0" от устройства.
Любой тайм-слот всегда начинает МК путем перевода шины 1-Wire в низкий логический уровень. Длительность любого тайм-слота должна находиться в пределах от 60 до 120 микросекунд. Между отдельными тайм-слотами всегда должен предусматриваться интервал не менее 1 микросекунды (конкретное значение определяется параметрами ведомого устройства).
Тайм-слоты передачи отличаются от тайм-слотов приема поведением МК: при передаче он только формирует сигналы, при приеме, кроме того, еще и опрашивает (т.е. принимает) уровень сигнала в линии 1-Wire. Следующй рисунок демонстрирует временные диаграммы тайм-слотов всех 4-х типов: вверху показаны тайм-слоты передачи от МК, внизу - приема от устройства.

Тайм-слот передачи "0" заключается просто в удержании шины 1-Wire в низком уровне в течение всей длительности тайм-слота. Передача "1" осуществляется путем "отпускания" шины 1-Wire со стороны МК не ранее чем через 1 микросекунду после начала тайм-слота, но не позже чем через 15 микросекунд. Ведомое устройство опрашивает уровень в шине 1-Wire в течение временного интервала, условно показанного в виде серого прямоугольника, т.е. начиная с 15-й микросекунды от начала тайм-слота и заканчивая 60-й микросекундой от начала. Типичный момент ввода уровня в устройство (т.е. характерный для большинства устройств) - около 30-й микросекунды от начала тайм-слота.
Заштрихованная область - это область "нарастания" уровня в шине 1-Wire, которая зависит от емкости линии и сопротивления подтягивающего резистора, она приведена для справки.
Тайм-слоты приема информации отличаются тем, что МК формирует только начало тайм-слота (абсолютно так же, как при передаче "1"), а затем управление уровнем шины 1-Wire берет на себя устройство, а МК осуществляет ввод этого уровня так же в определенной зоне временных интервалов. Зона эта, как видно из рисунка, довольно мала. Как и раньше, заштрихованная область - область неопределенности, поэтому для ввода, собственно говоря, контроллеру остается даже не промежуток, а скорее конкретный момент, когда он должен ввести уровень сигнала из линии. Этот момент времени - 14-я или 15-я микросекунда от начала тайм-слота. Разумеется, если линия имеет малую емкость, а подтягивающий резистор мал, зона опроса несколько расширяется, однако рекомендую ориентироваться на худший вариант (как, кстати, рекомендует и фирма-производитель), что-бы всегда обеспечить надежный обмен данными.

Итак, подведем итоги. МК начинает тайм слот с выдачи в шину 1-Wire "0" в течение 1 микросекунды. Последующий уровень зависит от типа тайм слота: для приема и передачи "1" уровень должен стать высоким, а для передачи "0" - оставаться низким вплоть до конца тайм-слота, т.е. не менее 60 и не более 120 микросекунд. Если МК принимает данные, то опрос уровня в шине он должен сделать на промежутке от 13-й до 15-й микросекунде тайм-слота. МК должен обеспечить интервал между отдельными тайм-слотами не менее 1 микросекунды (лучше - больше, максимальное значение не ограничено).
Важно понимать, что следует очень тщательно подходить к обеспечению в шине 1-Wire требуемых временных интервалов, т.к., например, увеличение длительности тайм-слота вывода "0" свыше рекомендованного значения может привести к ошибочному восприятию этого тайм-слота, как сигнала RESET, и, разумеется, после этого вся процедура обмена пойдет насмарку. Но так же следует учитывать влияние самой линии на длительность фронтов импульсов. Поэтому в общем случае, это не простая задача. Но выполнение несложных рекомендаций позволит ее решить достаточно простыми средствами: во-первых, все сигналы, которые должен формировать МК, следует формировать по принципу необходимого минимума длительности (т.е. немного больше, чем указанная минимальная длительность), а от устройства следует ожидать сигналов по принципу наихудшего (т.е. ориентироваться на самые худшие варианты временных параметров сигнала).
Если вы разрабатываете схему, которая целиком умещается на одной плате вместе со всеми устройствами на шине 1-Wire, то, ориентируясь на самый первый рисунок, вы получите практически идеальную линию: фронты нарастания высокого уровня в шине будут минимальными - это избавит вас от большинства проблем. Но если Вы подключаете несколько устройств через длинный соединительный шлейф - придется бороться с погонной емкостью линии.
Мною проверено, что соединение по свитым вручную обычным монтажным проводам при типовом подтягивающем резисторе однозначно возможно на расстоянии до 9 м, а для соединения по очень длинной телефонной "лапше" может потребовать уменьшения подтягивающего резистора до 510 ом и даже менее.

Разобравшись с процедурами обмена битами, пора приступать к более высокому уровню протокола обмена информацией, и для этого необходимо рассмотреть принципы адресации устройств и управления ими.
Каждое устройство 1-Wire обладает уникальным идентификационным 64-битным номером, программируемым на этапе производства микросхемы. Уникальным - это значит, что фирма-производитель гарантирует, что не найдется двух микросхем с одинаковым идентификационным номером (по крайней мере в течении нескольких десятков лет при существующих темпах производства).
При рассмотрении протокола обмена мы будем исходить из принципа, что на шине 1-Wire имеется более одного устройства. В этом случае перед МК встают 2 проблемы: определение количества имеющихся устройств и выбор (адресация) одного конкретного из них для обмена данными. Решение первой проблемы осуществляется двумя путями: универсальным и гибким, но требующим довольно сложного программно-реализуемого алгоритма, и простым, но с большими ограничениями. Универсальный алгоритм мы рассматривать не будем, т.к. это требует отдельной статьи. А более простой заключается в том, что номера всех используемых в вашей схеме 1-Wire-устройств вы должны знать заранее, и просто использовать их как константы в вашей программе. Номера некоторых устройств нанесены прямо на корпусе микросхем (например, для устройств iButton - всем известных ключей-таблеток), а номера других можно определить при помощи специальных программ или устройств (о них в конце статьи). iButton - зарегистрированная торговая марка, права на которую принадлежат Dallas Semiconductor, дополнительная информация об этом семействе изделий на есть на сайте.
Итак, предположим, что мы знаем номера всех устройств 1-Wire на шине. Как же ведется работа с ними? Алгоритм тут следующий. МК посылает, как обычно, импульс RESET, и все имеющиеся устройства выдают PRESENCE. Затем МК посылает в шину команду, которую принимают все устройства. Команд определено несколько общих для всех типов 1-Wire-устройств, а так же могут быть команды, уникальные для отдельных типов. Среди общих команд нас в первую очередь могут заинтересовать следующие (см. табли-цу).

Значение байта

Описание

SEARCH ROM

Поиск адресов - используется при универсальном алгоритме определения количества и адресов подключенных устройств

READ ROM

Чтение адреса устройства - используется для определения адреса единственного устройства на шине

MATCH ROM

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

SKIP ROM

Игнорировать адрес - используется для обращения к единственному устройству на шине, при этом адрес устройства игнорируется (можно обращаться к неизвестному устройству)

Первую команду мы не станем рассматривать по ранее изложенной причине, вторая позволит вам определить адрес имеющихся у вас устройств перед их установкой в готовое изделие, а две последние наверняка станут основными в вашей работе.
После того, как МК выдаст команду READ ROM, от устройства поступит 8 байт его собственного уникального адреса - МК должен их принять. Учтите, что любая процедура обмена данными с устройством должна быть завершена полностью либо прервана посылкой сигнала RESET.
Если отправлена команда MATCH ROM, то после нее МК должен передать так же и 8 байт конкретного адреса устройства, с которым будет осуществляться последующий обмен данными. Это равносильно выставлению адреса на параллельной шине в микропроцессорных устройствах. Приняв эту команду, каждое устройство сравнивает передаваемый адрес со своим собственным. Все устройства, адрес которых не совпал, прекращают анализ и выдачу сигналов в линии 1-Wire, а опознавшее адрес устройство продолжает работу. Теперь все данные, передаваемые МК будут попадать только к этому "адре-сованному" устройству. То, какие именно данные надо послать в устройство или получить от него после его адресации, зависит от конкретного устройства и в настоящей статье не рассматривается (например, для упомянутого термометра это могут быть команды запуска измерения или считывания результата, для ключа-таблетки не определены никакие иные команды, кроме основных, а для микросхем АЦП дополнительных команд может быть около десятка).
Если устройство одно на шине - можно ускорить процесс взаимодействия с ним при помощи команды SKIP ROM. Поучив эту команду, устройство сразу считает адрес совпавшим, хотя никакого адреса за этой командой не следует. Некоторые процедуры не требуют приема от устройства никаких данных, в этом случае команду SKIP ROM можно использовать для передачи какой-то информации сразу всем устройствам. Это можно использовать, например, для одновременного запуска цикла измерения температуры несколькими датчиками-термостатами типа DS18S20.
Прием и передача байтов всегда начинается с младшего бита. Порядок следования байтов при передаче и приеме адреса устройства так же ведется от младшего к старшему. Порядок передачи другой информации зависит от конкретного устройства, поэтому следует обращаться к документации на применяемые вами устройства.

В завершение обзора интерфейса рассмотрим детально строение уникального 64-битного номера-адреса устройств 1-Wire. Он состоит фактически из 8 отдельных байт: одного байта идентификатора семейства, шести байт (48 бит) собственно уникального адреса и одного байта контрольной суммы всех предыдущих байтов. Рассмотрение этих составных частей начнем, по традиции, в обратном порядке.
Итак, контрольная сумма или CRC - это байт, значение которого передается самым последним и вычисляется по специальному алгоритму на основе значения всех 7-и предыдущих байтов. Алгоритм подсчета таков, что если все байты переданы-приняты без искажений (а искажения вполне возможны, если вспомнить характер аппаратной реализации интерфейса), принятый байт контрольной суммы обязательно совпадет с рассчитанным в МК (или устройстве) значением. Т.е. при реализации программного алгоритма обмена информацией мы должны при передаче и приеме байтов подсчитывать их контрольную сумму по строго определенному алгоритму, а затем либо передать полученное значение (если мы вели передачу адреса/данных), либо сравнить расчетное значение с принятым значением CRC. Только при совпадении обоих CRC МК или устройство считают принятые данные достоверными. В противном случае продолжение обмена невозможно.
Очевидно, что алгоритм подсчета CRC должен быть одинаковым как для МК, так и для любого устройства. Он "стандартизирован" и описан в документации. Однако его понимание требует определенных умственных усилий и, что лично для меня более критично, наличия времени, которого постоянно не хватает. Именно поэтому я не стану описывать сам алгоритм расчета (все желающие могут познакомиться с ним по фирменному документу Application Note 27 "Understanding and Using Cyclic Redundancy Checks with Dallas Semiconductor iButtonTM Products"), а просто приведу примеры программной реализации этого алгоритма, которые можно использовать не особо углубляясь в математические дебри. Разумеется, вы легко сможете адаптировать приводимые примеры под свои нужды. Кстати, по этим примерам можно восстановить и алгоритм расчета CRC.

Пример первый: ассемблер MCS-51. Подпрограмма расчета CRC.
Эта подпрограмма использует одну ячейку памяти CRC для хранения результата. Перед первым вызовом эту ячейку необходимо обнулить. В аккумуляторе - очередной принятый или передаваемый байт. После того, как все байты переданы/приняты в ячейке CRC получится контрольная сумма. Подпрограмма не портит никаких регистров, кроме регистра состояния.

DO_CRC:
PUSH ACC ; сохраняем аккумулятор
PUSH B ; сохраняем регистр В
PUSH ACC ; сохраняем байт данных
MOV B, #8 ; кол-во битов (счетчик циклов)
CRC_LOOP:
XRL A, CRC ; XOR с предыдущим значением контрольной суммы
RRC A ; сдвиг вправо через флаг переноса
MOV A, CRC ; берем последнее значение CRC
JNC ZERO ; переход, если не было переноса
XRL A, #18H ; обновляем значение CRC путем XOR с константой
ZERO:
RRC A ; снова сдвигаем CRC
MOV CRC, A ; сохраняем новое значение CRC
POP ACC ; восстанавливаем байт данных
RR A ; циклически сдвигаем вправо
PUSH ACC ; снова сохраняем значение
DJNZ B, CRC_LOOP ; повторяем цикл 8 раз (для каждого бита)
POP ACC ; очищаем стек
POP B ; восстанавливаем прежние значения регистров из стека
POP ACC
RET ; завершение процедуры

Использование этой (да и последующей) подпрограммы очень простое: перед началом приема или передачи надо обнулить ячейку CRC, а затем каждый принятый или переданный байт поместить в аккумулятор и вызвать эту подпрограмму. После того, как приняты все 8 (обратите внимание - именно 8!) байтов уникального адреса устройства, необходимо проверить содержимое ячейки CRC: ненулевое ее значение свидетельствует о наличии искажения принятых данных. Если же CRC=0 - это значит, что данные приняты без искажений. Если же МК вел передачу уникального адреса устройства, то содержимое CRC должно быть передано 8-ым байтом после предыдущих семи.

Пример второй: процедура на языке Pascal с использованием табличных вычисле-ний CRC. Как и предыдущая, эта процедура должны быть вызвана для каждого передаваемого/принимаемого байта, а перед первым использованием переменная CRC должна быть обнулена.

Var
CRC: Byte; {переменная-результат расчета контрольной суммы}

Procedure Do_CRC(X: Byte);
{Эта процедура вычисляет контрольную сумму по стандартному алгоритму для устройств 1-Wire и накапливает результат в глобальной переменной CRC}

Const
{Нижеследующая таблица содержит заранее вычисленные сигнатуры, используемые для быстрого расчета CRC}

Table: Array of Byte = (0, 94, 188, 226, 97, 63, 221, 131, 194, 156, 126, 32, 163, 253, 31, 65,
157, 195, 33, 127, 252, 162, 64, 30, 95, 1, 227, 189, 62, 96, 130, 220,
35, 125, 159, 193, 66, 28, 254, 160, 225, 191, 93, 3, 128, 222, 60, 98,
190, 224, 2, 92, 223, 129, 99, 61, 124, 34, 192, 158, 29, 67, 161, 255,
70, 24, 250, 164, 39, 121, 155, 197, 132, 218, 56, 102, 229, 187, 89, 7,
219, 133, 103, 57, 186, 228, 6, 88, 25, 71, 165, 251, 120, 38, 196, 154,
101, 59, 217, 135, 4, 90, 184, 230, 167, 249, 27, 69, 198, 152, 122, 36,
248, 166, 68, 26, 153, 199, 37, 123, 58, 100, 134, 216, 91, 5, 231, 185,
140, 210, 48, 110, 237, 179, 81, 15, 78, 16, 242, 172, 47, 113, 147,205,
17, 79, 173, 243, 112, 46, 204, 146, 211, 141, 111, 49, 178, 236, 14, 80,
175, 241, 19, 77, 206, 144, 114, 44, 109, 51, 209, 143, 12, 82, 176, 238,
50, 108, 142, 208, 83, 13, 239, 177, 240, 174, 76, 18, 145, 207, 45, 115,
202, 148, 118, 40, 171, 245, 23, 73, 8, 86, 180, 234, 105, 55, 213, 139,
87, 9, 235, 181, 54, 104, 138, 212, 149, 203, 41, 119, 244, 170, 72, 22,
233, 183, 85, 11, 136, 214, 52, 106, 43, 117, 151, 201, 74, 20, 246, 168,
116, 42, 200, 150, 21, 75, 169, 247, 182, 232, 10, 84, 215, 137, 107, 53);

Begin
CRC:= Table;
{Расчет заключается в простом извлечении результата из таблицы}
End;

Как видите, табличный метод расчета значительно проще алгоритмического математического, и обладает существенно большим быстродействием, однако требует гораздо больше памяти программ для хранения таблицы.
Поклонники языка Си без проблем смогут адаптировать паскалевскую процедуру в аналогичную функцию на Си.
В качестве дополнительной информации скажу, что для обмена информацией (не для адресации) с некоторыми типами устройств применяется 16-разрядная CRC, алгоритм вычисления которой немного сложнее, но так же описан в упомянутом ранее документе.

Итак, мы разобрались с алгоритмом расчета контрольной суммы уникального адреса устройства, однако это всего лишь один последний байт из 8 байтов этого адреса, необходимо рассмотреть и остальные. Предыдущие 6 байтов (помните, что мы рассматриваем байты адреса в обратном порядке?), собственно, и есть тот самый уникальный номер-идентификатор. Номер - он и есть номер, рассказывать о нем нечего, переходим к заключительному первому байту - коду семейства.
Код семейства определяет номер группы, к которой принадлежит конкретное устройство и для микросхем одного семейства, естественно, будет одинаковым. Зная (считав) код семейства из неизвестного устройства можно довольно точно определить его функциональное назначение и даже некоторые параметры. Приведу список некоторых кодов семейств 1-Wire-устройств (таблица ниже).

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

Вот и все необходимые для начала работы сведения об интерфейсе 1-Wire, протоколе обмена данными по нему и его программной реализации. Надеюсь, этих сведений будет достаточно для того, чтобы количество проблем, возникающих у вас при освоении этого интерфейса, пошло на убыль. Напомню основные шаги по его успешной реализации:

  • любой обмен информацией начинается с передачи импульса RESET и приема имульса PRESENCE;
  • если импульса PRESENCE не обнаружено - на шине нет устройств;
  • МК всегда инициирует обмен, начиная каждый тайм-слот обмена битом информации;
  • временные параметры каждого тайм-слота следует соблюдать с максимально возможной точностью;
  • для выбора одного из многих устройств на шине 1-Wire МК должен передать в шину команду MATCH ROM и затем 8 байт адреса устройства, последний (8-й) байт этого адреса - есть контрольная сумма предыдущих семи;
  • если устройство на шине одно - МК может узнать его адрес путем посылки команды READ ROM, после чего принять от устройства 8 байтов адреса, последний из которых так же будет контрольной суммой первых семи;
  • для работы с единственным устройством на шине можно отказаться от указания его адреса, для этого МК должен передать устройству команду SKIP ROM, после чего можно начинать обычный обмен данными;
  • любая начатая процедура обмена может длиться сколь угодно долго за счет пауз между отдельными тайм-слотами, но всегда должна быть завершена полностью;
  • прервать начатый обмен можно в любой момент путем выдачи импульса RESET в шину 1-Wire (но это может нарушить нормальную работу некоторых устройств).
Просмотров: 12942

Технология достаточно старая и широко употребляемая

Изначально, выведена на рынок компанией Dallas - Все помнят таблетки для домофонов iButton- это оно

Устройство соединяется с контроллером по одному проводу (кроме общего) - отсюда название. Большое преимущество в том, что каждый чип имеет свой адрес, что позволяет термометры соединять просто параллельно

Я провел массу экспериментов с данным стандартом. Изначально, предполагая очень широко использовать его для управления Умным Домом

Хуже всего, если для управления 1-wire шиной не использовать никаких специализированных контроллеров (подключение напрямую к PIN у Arduino устройств) - в этом случае, проблемы возникают уже при длине кабеля более 3-х метров

Для моих целей такое расстояние не подходило, поэтому я использовал I2C to 1-wire мост DS2482-100

Стоимость чипа на Aliexpress менее 100 руб, чип имеет аппаратный драйвер шины с режимом strong-pullup, что в разы увеличивает надежность работы системы.

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

У себя я использую шлейф длиной около 150 м.

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

Контроллер опрашивает датчики циклично, поэтому, единичные сбои не влияют на функционирование.

Кроме термометров, я пробовал использовать самую разнообразную перефирию, вооружившись Datasheet - ами написав множество процедур для управления следующими чипами и устройствами на их базе:

Если коротко - себя это не оправдало

Основная проблема - все же не очень хорошая помехозащищенность

Борьба с помехами в сети 1-Wire

Это, пожалуй, самое непростое в данной технологии. Описываю свой опыт:

  • Шину 1-Wire прокладывайте на расстоянии от высоковольтных проводов, трансформаторов LED освещения и проводов LED освешения (провода дают сильную помеху за счет того, что сила тока велика и используется ШИМ модулирование)
  • Не надо использовать экранированную витую пару. Я проложил STP 5-й категории, но при попытке заземлить экран - связь полностью теряется. Предполагаю, что это связано с увеличением емкости проводника.
  • По отзывам, невитая пара (самый дешевый двужильный провод) дает лучший результат.
  • Хороший опыт - подтягивать дальний конец провода через резистор 3-4 КОм к стабилизированному фильтрованному источнику питания 5Вольт.
  • Отводы от шины в 2-3 метра, в целом, не ухудшают качества работы системы, но прилично упрощают монтаж.

Однопроводной интерфейс 1-Wire, разработанный в конце 90-х годов фирмой Dallas Semiconductor Corp., регламентирован разработчиками для применения в трех основных сферах-приложениях:

  • приборы в специальных корпусах MicroCAN для решения проблем идентификации, переноса или преобразования информации (технология iButton),
  • программирование встроенной памяти интегральных компонентов,
  • системы автоматизации (технология сетей
  • 1-Wire-сетей).

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

Так в чем же особенность этого сетевого стандарта? Ведь в качестве среды для передачи информации по однопроводной линии чаще всего возможно использование обычного телефонного кабеля и, следовательно, скорость обмена в этом случае не велика. Однако, если внимательно проанализировать большинство объектов требующих автоматизации, то более чем для 60% из них предельная скорость обслуживания в 15,4 кБит/сек будет более чем удовлетворительной. А другие преимущества 1-Wire, такие как:

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

Говорят о необходимости обратить самое пристальное внимание на этот эффективный инструмент для решения задач комплексной автоматизации в самых различных областях деятельности.

Основные принципы

1-Wire-net представляет собой информационную сеть, использующую для осуществления цифровой связи одну линию данных и один возвратный (или земляной ) провод. Таким образом, для реализации среды обмена этой сети могут быть применены доступные кабели, содержащие неэкранированную витую пару той или иной категории, и даже обычный телефонный провод. Такие кабели при их прокладке не требуют наличия какого-либо специального оборудования, а ограничение максимальной длины однопроводной линии регламентировано разработчиками на уровне 300м.

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

Конфигурация любой 1-Wire-сети может произвольно меняться в процессе ее работы, не создавая помех дальнейшей эксплуатации и работоспособности всей системы в целом, если при этих изменениях соблюдаются основные принципы организации однопроводной шины. Эта возможность достигается благодаря присутствию в протоколе 1-Wire-интерфейса специальной команды поиска ведомых устройств (Поиск ПЗУ ), которая позволяет быстро определить новых участников информационного обмена. Стандартная скорость отработки такой команды составляет ~75 узлов сети в секунду.

Благодаря наличию в составе любого устройства, снабженного сетевой версией 1-Wire-интерфейса, уникального индивидуального адреса (отсутствие совпадения адресов для приборов, когда-либо выпускаемых Dallas Semiconductor Corp., гарантируется самой фирмой-производителем), такая сеть имеет практически неограниченное адресное пространство. При этом, каждый из однопроводных приборов сразу готов к использованию в составе 1-Wire-сети, без каких-либо дополнительных аппаратно-программных модификаций. Однопроводные компоненты являются самотактируемыми полупроводниковыми устройствами, в основе обмена информацией между которыми, лежит управление изменением длительности временных интервалов импульсных сигналов в однопроводной среде и их измерение. Передача сигналов, для 1-Wire-интерфейса, асинхронная и полудуплексная, а вся информация, циркулирующая в сети, воспринимается абонентами либо как команды, либо как данные. Команды сети генерируются мастером и обеспечивают различные варианты поиска и адресации ведомых устройств, определяют активность на линии даже без непосредственной адресации отдельных компонентов, управляют обменом данными в сети и т.д.

Стандартная скорость работы 1-Wire-сети, которая составляет 15,4Кбит/сек, была выбрана, во-первых, с учетом обеспечения максимальной надежности передачи данных на большие расстояния, и, во-вторых, с учетом быстродействия наиболее широко распространенных типов микроконтроллеров, которые в основном должны использоваться при реализации ведущих устройств однопроводной шины. Это значение скорости обмена может быть уменьшено до любого возможного значения благодаря введению принудительной задержки между передачей в линию отдельных битов данных (растягиванию временных слотов протокола). Или увеличено за счет перехода на специальный ускоренный режим обмена (скорость Overdrive - до 125Кбит/сек), который допускается для отдельных типов однопроводных компонентов на небольшой по расстоянию, качественной, не перегруженной другими приборами линии связи.

Пожалуй, особенно привлекательным качеством технологии 1-Wire является исключительная простота настройки, отладки и обслуживания сети практически любой конфигурации, построенной по этому стандарту. Действительно, для начала работы достаточно любого персонального компьютера, недорогого адаптера 1-Wire-линии, а также свободно распространяемой фирмой Dallas Semiconductor Corp. программы iButton Viewer. При наличии этого небольшого числа составляющих контроль и управление сетью практически любой сложности, построенной на базе стандартных однопроводных компонентов, организуется буквально в течение нескольких минут. Программа iButton Viewer, в этом случае, позволяет с максимальным комфортом для разработчика идентифицировать любое из ведомых однопроводных устройств на линии и проверить в полном объеме правильность его функционирования в составе конфигурируемой сети.

Организация ведущих

Отдельные виды адаптеров, которые позволяют наделить любой персональный компьютер возможностью обслуживать в качестве мастера 1-Wire-сеть, выпускаются самой фирмой Dallas Semiconductor Corp. К ним относятся адаптеры для параллельного порта типа DS1410E, для COM-порта типа DS9097E и DS9097U, для USB-порта типа DS9490R. Эти приборы имеют различные функциональные возможности и конструктивные особенности, что обеспечивает разработчику максимальную свободу выбора при конструировании. А наличие у пользователя небольших навыков в создании электронной аппаратуры, позволяет легко произвести самостоятельную сборку схемы простейшего адаптера 1-Wire-сети для компьютера из небольшого числа доступных электронных компонентов.

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

А для организации мастера однопроводной системы на базе микроконтроллеров с 3хвольтовым питанием поставляются пассивные микросхемы DS1482, выполняющие согласование с уровнями сигналов стандартной 1-Wire-магистрали. Если же мастер однопроводной линии должен быть организован на базе стандартного узла последовательного интерфейса UART микроконтроллера, используется микросхема DS2480В, а микросхема DS2490 адаптирует однопроводную линию для работы от встроенного узла UBS-интерфейса. Обе микросхемы реализуют так называемый программируемый механизм активной подтяжки шины данных 1-Wire-магистрали, обеспечивающий качественную передачу сигналов в длинных проблемных линиях и увеличение нагрузочной способности ведущего по количеству обслуживаемых им ведомых устройств. Кстати большинство выше упомянутых адаптеров для персональных компьютеров, также построены на базе подобных микросхем. Более того, учитывая особенности работы современных операционных сред Windows, использование именно этих компонентов, которые по своей сути являются управляемыми по последовательному интерфейсу цифровыми автоматами, обеспечивает полномасштабное обслуживание однопроводных линий в реальном масштабе времени.

При построении сложных законченных микропроцессорных систем, имеющих дефицит машинного времени для реализации 1-Wire-протокола, наиболее рациональной является идея о возложении отдельной задачи по обслуживанию однопроводной линии на специальный узел заказной или полузаказной СБИС, для последующего сопряжения такого цифрового автомата, через системную магистраль, непосредственно с основным процессорным узлом. Фирма Dallas Semiconductor Corp. даже разработала набор рекомендаций по организации подобного узла под названием DS1WM, который был реализован, в том числе, специалистами Xilinx Inc. в виде законченного практического примера для программируемых перестраиваемых матриц семейств Virtex и Spartan. Более того, и Dallas Semiconductor Corp., которая в том числе известна как поставщик высокоскоростных контроллеров клона MCS51, выпускает специализированный связной микроконтроллер DS80C400, который содержит встроенный в кристалл автомат поддержки 1-Wire-протокола с возможностью реализации механизма активной подтяжки.

Достаточно перспективным представляется также направление, связанное с применением карманных компьютеров (или PDA (Personal Digital Assistant)) популярных платформ PalmOS, Handspring и WinCE/PocketPC для обслуживания однопроводных компонентов, в том числе работающих в составе 1-Wire-сетей. При этом, для подключения PDA к однопроводной шине применяют специализированные адаптеры последовательного порта, которые отличаются малым потреблением и построены на базе схемных решений, использующих выше перечисленные микросхемы сопряжения с 1-Wire-линией. Именно такой подход в настоящее время является наиболее рациональным при организации автономных и мобильных 1-Wire-систем.

Проблема подготовки программного обеспечения для управления мастером линии при обслуживании 1-Wire-сетей, также не представляется неразрешимой. Фирмой Dallas Semiconductor Corp. свободно распространяется профессиональный программный пакет разработчика iButton TMEX SDK, являющийся универсальным средством для профессиональных программистов, который значительно упрощает процесс создания программ для обслуживания однопроводных устройств, подключенных через стандартные типы адаптеров к персональным компьютерам, которые оснащены операционной системой Windows. Он содержит комплект отлаженных драйверов и утилит для реализации полномасштабного 1-Wire-протокола. В качестве среды взаимодействия с разработчиком пакет iButton TMEX SDK использует специальный стандартизованный программный API-интерфейс. Кроме того, с fttp-сервера кампании Dallas Semiconductor Corp. свободно доступен ряд примеров реализации 1-Wire-протокола для некоторых, наиболее популярных видов микропроцессоров, а также готовые библиотеки функциональных программных модулей однопроводного интерфейса для различных программных платформ.

Ведомые однопроводные компоненты

Ведомые однопроводные компоненты, содержащие 1-Wire-интерфейс, выпускаются в двух различных видах. Либо в корпусах MicroCAN, похожих внешне на дисковый металлический аккумулятор, либо в обычных корпусах для монтажа на печатную плату. Футляр MicroCAN полый внутри. Он выполняет функцию защиты содержащегося в нем полупроводникового кристалла однопроводной микросхемы, который соединен с внешним миром лишь через две, изолированные друг от друга, половинки корпуса, являющиеся по существу контактными площадками для подключения однопроводной линии. В подобных "таблеточных" корпусах поставляются, как правило, приборы iButton. Компоненты, которые предназначены для использования в составе 1-Wire-сетей, упаковываются в пластиковые корпуса, используемые для изготовления транзисторов и интегральных схем. Такой подход объясняется тем, что в отличие от устройств iButton однопроводные приборы для 1-Wire-сетей часто имеют более двух выводов. Помимо выводов, которые требуются для обмена данными по однопроводной магистрали, они располагают дополнительными выводами необходимыми, для обеспечения их питания и организации внешних цепей, связывающих такие приборы с объектами автоматизации, например, датчиками или исполнительными устройствами.

К наиболее простым ведомым однопроводным компонентам относятся кремневый серийный номер DS2401 (или модифицированный вариант этого прибора с внешним питанием DS2411) и электронный ключ DS2405, управляемый по 1-Wire-интерфейсу. Первое из этих устройств часто используется в качестве электронной метки, которая позволяет идентифицировать состояние, например, механического переключателя, коммутирующего линию данных однопроводного интерфейса. С помощью DS2405 можно дистанционно осуществить простейшие функции переключения внешнего оборудования, изменяя состояние управляемого ключа относительно возвратного проводника 1-Wire-магистрали.

Четырехканальный однопроводной АЦП типа DS2450 и двухканальный однопроводной счетчик, совмещенный с буферной памятью, типа DS2423 позволяют решать задачи, связанные с оцифровкой аналоговых и импульсно-временных сигналов. Первое из этих устройств по существу разрешает проблему обслуживания источников аналоговой информации в составе 1-Wire-сетей, к которым относится большинство выпускаемых в настоящее время датчиков различных физических величин (давление, вес, напряжение, влажность, ток, освещенность, ускорение, та же температура, но в диапазонах недоступных для регистрации посредством использования цифровых термометров и т.д.). Второй прибор может с успехом обслуживать многие виды применяемых в технике импульсных сенсоров (различные оптические счетчики, сенсоры количества оборотов, выходной сигнал с расходомеров-вертушек, емкостные датчики влажности, включенные в задающие цепи управляемых генераторов импульсов, счетчики уровня радиации, интегрирующие преобразователи напряжения в частоту и т.д.).

Но все-таки наиболее незаменимыми "кирпичиками", лежащими в основе фундамента однопроводных сетей автоматизации, являются универсальные сдвоенные адресуемые транзисторные ключи типа DS2406P (современная версия широко известных приборов DS2407P).

На базе этих устройств может быть реализована масса применений, и, прежде всего, узлы контроля логических состояний (уровней) и схемы обслуживания датчиков "сухого контакта", а также разнообразные ключевые схемы. Таким образом, именно благодаря использованию этих компонентов осуществляется сбор дискретной информации с территориально рассредоточенных датчиков (мониторов дверей, контакторов положения арматуры, любых датчиков имеющих выход ДА/НЕТ, как-то датчики положения, прохода, присутствия, пожарной и охранной сигнализации и т.д.). Подобные же приборы обеспечивают управление переключением любых видов силового оборудования, которые имеют два рабочих состояния: включено/выключено (нагревателей, кондиционеров, моторов, вентиляторов, арматурных задвижек и т.д.). Кроме того, двунаправленные, индивидуально программируемые выводы DS2406P могут быть использованы для организации медленного последовательного интерфейса между локальным микроконтроллером и 1-Wire-сетью. Не смотря на невысокую скорость при реализации подобного способа обмена информацией по однопроводной сети, когда один бит данных передается за две стандартные посылки, такое решение является приемлемым и достаточно надежным для большого числа конкретных применений.

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

На базе узла часов реального времени кристалла DS2404 кампанией Dallas Semiconductor Corp. выпускается еще два компонента, весьма полезных для создания однопроводных систем автоматизации. Это устройства DS2415 и DS2417. Применяя любой из этих приборов можно организовать дешевые часы/календарь с однопроводным сетевым интерфейсом. Кроме того, второе устройство благодаря наличию в его составе отдельного вывода прерывания, может также дополнительно управлять по времени переключением внешнего оборудования или обеспечивать синхронизацию работы других устройств с процессами, происходящими на 1-Wire-линии.

Значительно расширяет возможности однопроводных сетей по аналоговому управлению рассредоточенным, в том числе силовым, оборудованием цифровой потенциометр DS2890 укомплектованный сетевым 1-Wire-интерфейсом. Используя этот прибор можно создавать самые разнообразные системы удаленного безударного управления, благодаря возможности плавного изменения аналогового регулирующего сигнала по 256 градациям.

При всем многообразии однопроводных компонентов, очевидно, что наиболее универсальным из них является уникальный прибор DS2408. Это индивидуально двунаправленный восьмиразрядный свободно поразрядно программируемый по 1-Wire-шине порт ввода/вывода, который позволяет реализовать любой интерфейс между внешним устройством произвольной модификации и однопроводной линией. Этот прибор имеет двунаправленный вывод внешней синхронизации, обеспечивающий аппаратное тактирование передаваемых или принимаемых данных. Использование микросхемы DS2408 позволяет обеспечить управление посредством 1-Wire-шины: сосредоточенным двунаправленным вводом/выводом по 8 независимым каналам, приводом светодинамических, жидкокристаллических индикаторов и дисплеев различных видов, сканированием матричных клавиатур и дискретных датчиков самых различных типов, а так же позволяет реализовать действительно полномасштабный интерфейс с различными типами микроконтроллеров, как в последовательной, так и в параллельной моде.

Некоторые компоненты 1-Wire-сетей содержат в своем составе массив постоянной (однократно заполняемой пользователем) или энергонезависимой памяти того или иного объема. Это позволяет хранить специальную служебную информацию, связанную с применением конкретного компонента и особенностями его использования (идентификатор, территориальное положение, калибровочные коэффициенты, размерность, значение уставок по умолчанию и т.д.), непосредственно в составе однопроводного прибора. Благодаря этому для организации работы каждой новой однопроводной сети не нужно готовить отдельное специальное программное обеспечение, достаточно иметь одну стандартную программу, которая переконфигурируется в зависимости от специфики конкретной системы (конечно, если память всех компонентов 1-Wire-системы заполнена в соответствии с определенными, заранее оговоренными правилами). Если же в процессе работы системы требуется хранить дополнительные объемы информации, в распоряжении разработчика имеются специальные однопроводные приборы, содержащие как постоянную (DS2502/ DS2505/ DS2506), так и энергонезависимую (DS2430A/ DS2432/ DS2433) память различных объемов.

Целый ряд компонентов семейства iButton в корпусах MicroCAN также может быть использован в составе 1-Wire-сетей в качестве ведомых однопроводных устройств, которые решают специфические задачи идентификации, накопления, хранения и переноса информации. Например, для реализации процедуры идентификации в системах промышленной автоматизации обычно достаточно применения распространенных носимых электронных меток DS1990A. А многоточечный температурный мониторинг легко может быть выполнен сетью из нескольких приборов DS1921# или иначе устройств ТЕРМОХРОН, каждое из которых регистрирует температурные значения, измеренные через определённые, заранее заданные, промежутки времени и сохраняет полученную информацию в собственной энергонезависимой памяти, по существу, являясь программируемым "температурным магнитофоном". Для решения проблемы переноса данных, накопленных автономной 1-Wire-системой, к персональному компьютеру выпускаются разнообразные приборы iButton, которые в этом случае играют роль, так называемых, "транспортных таблеток". К подобным устройствам, прежде всего, относятся приборы энергонезависимой памяти, включающие в состав своей конструкции литиевый элемент питания. Это целый ряд "таблеток" начиная с DS1992 (1Кбит) до DS1996 (64Кбита), и среди них, конечно, модификация DS1994 (4Кбита), содержащая дополнительно узел часов реального времени, удобный для генерации временных меток сохраняемых данных или для организации автономных логгеров ресурса.

Кроме того, для этих же целей могут быть использованы приборы с электрически стираемой памятью типа EEPROM модификаций DS1971(32байта), DS1973(512байт) и DS1977(32Кбайта). При перемещении больших массивов информации "транспортную таблетку" удобно использовать совместно с адаптером USB-порта типа DS9490B, который обеспечивает высокую скорость передачи при обмене данными между устройством iButton и персональным компьютером. Если же речь идет только о решении задачи накопления и хранения данных в 1-Wire-сети, любая из перечисленных выше "транспортных таблеток" может быть легко включена в состав подобной сети. При этом для подключения приборов в корпусах MicroCAN к проводникам однопроводной линии используют специальные защелки типа DS9100 или DS9098P, или же более простые зажимы типа DS9094.

С точки зрения схемотехнической реализации однопроводного интерфейса и устойчивости работы на проблемных линиях все ведомые однопроводные компоненты исторически отличаются друг от друга, делясь при этом на группы:
1. DS2401, DS2405 - первые приборы с 1-Wire-интерфейсом в пластиковых корпусах, полностью аналогичны по схемотехнике первым моделям приборов iButton, которые были ориентированные для работы на коротких шинах (до 1994 года),
2. DS1820, DS2407P, DS2450, DS2404, DS2415, DS2417, DS1920 и т.д. - вторая версия, специально ориентированная для работы на длинных линиях (до 2000 года сейчас эти компоненты в основном снимаются с производства),
3. DS18S20, DS18B20, DS1822, DS2438, DS2406P, DS2409, DS2890, DS1973 и т.д. - третий вариант, более устойчивый к коллизиям на 1-Wire-магистрали по сравнению с предыдущим (с 2000 года),
4. DS2411, DS2408, DS1921#, DS1977 и т.д. - последний вариант, наиболее удачной по надежности схемотехники 1-Wire-интерфейса (c 2003 года).

Линия связи и топология

Большую роль при построении 1-Wire-сетей играет исполнение однопроводной линии связи. Как правило, такие линии имеют структуру, состоящую из трех основных проводников: DATA - шина данных, RET - возвратный или земляной провод, EXT_POWER - внешнее питание не только обслуживаемых ведомых устройств, но и внешних относительно них цепей датчиков и органов управления. В зависимости от способа прокладки, сопряжения с ведомыми устройствами и используемых при прокладке материалов, в соответствии с ниже следующей Таблицей различают три основных варианта качества организации 1-Wire-сетей, каждый из которых подразумевает использование особой технологии и аксессуаров при реализации линии.

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

Если же организация 1-Wire-системы на базе персонального компьютера связанна с особыми трудностями, наиболее оптимально использование интеллектуального адаптера для COM-порта типа LINK. Он реализован на базе микропроцессора. При этом, устройство, полностью эмулируя со стороны последовательного порта работу популярного адаптера DS9097U, производства Dallas Semiconductor Corp., и таким образом поддерживая все разработанное ранее для персональных компьютеров программное обеспечение, благодаря встроенным собственным интеллектуальным ресурсам реализует льготный режим работы однопроводных приборов на проблемных 1-Wire-линиях в условиях сложной помеховой обстановки. LINK многократно улучшает механизм активной подтяжки на линии, что позволяет действительно получать идеальные сигналы обмена при длинах кабеля более 300 метров и числе сопровождаемых однопроводных компонентов большем 100шт, а использование процессором прибора алгоритмов цифровой фильтрации многократно улучшает устойчивость обслуживаемой однопроводной линии к электромагнитным помехам.

Применения

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

Наиболее последовательно отстаивает линию на использование технологии 1-Wire-сетей в области автоматизации американская фирма Embedded Data Systems, LLC (приемница PointSix, Inc.). Можно сказать, что эта кампания сделала себе имя на внедрение и пропаганде достижений однопроводной шины в области автоматизации. И это, не смотря на то, что основной областью ее деятельности является не автоматизация оранжерей и не создание систем пожарной сигнализации, а разработка средств и систем для обслуживания высокотехнологичных отраслей машиностроения и химической промышленности, и даже создание уникального экспериментального и научного оборудования. Подтверждением этому служит широчайший спектр продукции, который выпускается фирмой (разнообразные зонды для измерения высоких и низких температур, датчики влажности, давления и кислотности с особыми функциями, специальные оптические сенсоры, платы сбора информации, устройства сопряжения с различным аналитическим оборудованием и многое другое), причем каждый из приборов содержит элементы однопроводной технологии.

К перспективным примерам в области применения 1-Wire-технологии для автоматизации, несомненно, можно отнести деятельность таких известных мировых производителей как SYSTRONIX или AAG Electronica. LLC.

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

Другим примером, наглядно демонстрирующим на практике возможности технологии однопроводной шины, является проект построения полностью автоматических метеорологических станций (1-Wire Weather Station), который разрабатывался совместно фирмами PointSix, Inc., AAG Electronica LLC, Dallas Semiconductor Corp. и Texas Weather Instruments, Inc. Вначале (еще в середине 90-х годов) было создано несколько экспериментальных систем, построенных на базе ведущего персонального компьютера с адаптером DS9097U, который является сердцем комплекса, из трех термометров DS18S20, выполняющих контроль температуры, микросхемы DS2438 для обслуживания датчика влажности воздуха, компонента DS2423 для определения скорости ветра и 16-ти электронных меток DS2401 определяющих его направление. Эти первые метеосистемы были установлены и успешно испытаны в процессе длительной эксплуатации в штате Техас. Причем отдельные из них комплектовались дополнительными однопроводными решениями, которые обеспечивали контроль сигналов от датчиков: барометрического давления, разрядов молнии, количества осадков на поверхности, солнечной активности, влажности почвы и т.д. Данные со всех сенсоров, регистрируемые каждой из подобных систем, поступали в персональный компьютер и через Интернет транслировались в режиме реального времени на центральный операторский пульт, где выполнялся прием и архивация данных о погоде региона, получаемый благодаря анализу информации от нескольких территориально рассредоточенных станций. После успешного завершения проекта Texas Weather Instruments Inc. уже на протяжении нескольких лет успешно торгует готовыми полностью автоматическими метеостанциями, не требующими обслуживания человеком. Причем популярность подобных устройств настолько велика по всему миру, что фирма Dallas Semiconductor Corp. была вынуждена начать производство специализированного набора микросхем WS-1, который включает комплект однопроводных компонентов, минимально необходимый для построения подобной станции. А полную комплектацию подобных систем для многочисленных пользователей со всего мира, включая платы для самостоятельной сборки, сертифицированные механические и конструкционные элементы, выполняет фирма AAG Electronica LLC.

Довольно перспективной областью, в которой в полной мере используются преимущества технологии 1-Wire-сетей, и которой, особенно много внимания уделяет кампания Dallas Semiconductor Corp. является менеджмент автономных химических источников тока - аккумуляторных батарей. Под менеджментом здесь понимается, - прежде всего, строгая и полная идентификация источников энергии, сохранение в памяти каждого отдельного встроенного в батарею электронного устройства особенностей ее изготовления и индивидуальных технических характеристик, наиболее полный мониторинг их основных эксплуатационных параметров на протяжении всего срока службы, а также формирование корректного управляющего воздействия, связанного с восстановлением заряда обслуживаемого автономного источника энергии. От правильного менеджмента и знания истории эксплуатации батареи во многом зависит выбор алгоритма ее повторного заряда, что непосредственно связанно с эффективностью использования и сроком службы многих типов аккумуляторов. Для этого каждая из батарей многоэлементных энергетических конструкций (особенно для мобильных устройств и средств бесперебойного питания) снабжается индивидуальным однопроводным компонентом, превращаясь по существу в интеллектуальный системный элемент автономного питания. Целый ряд микросхем, выпускаемых фирмой, связан с этим направлением. Dallas Semiconductor Corp. сегодня доминирует на рынке интеллектуальных систем обслуживания автономных источников питания, исповедуя при этом новый комплексный сетевой подход к проблеме менеджмента энергетических элементов. При этом, используются 1-Wire-решения, позволяющие организовать многоточечную шину обслуживания устройств менеджмента и управления зарядом, что дает возможность сопровождать не только отдельные источники энергии, но и целые батареи, составленные из множества отдельных подобных элементов. Более того, подобные устройства способны обеспечить не только идентификацию или простейший температурный контроль аккумуляторов, но и полномасштабный мониторинг их основных параметров (напряжение, ток, разряд, контроль "короткого замыкания" и т.д.) на протяжении всего времени эксплуатации. Результаты, накопленные такими приборами, сохраняются во встроенной энергонезависимой памяти либо в виде гистограммы (DS2436), либо в виде массива последовательных отсчетов "привязанных" к временным меткам (DS2438).

В настоящее время кампания Dallas Semiconductor Corp. выпускает целый ряд прецизионный кристаллов для мониторинга, менеджмента, защиты и управления восстановлением заряда автономных источников питания самых различных типов и назначений (DS2720, DS2740, DS2751, DS2770 и т.д.). К ним, в том числе, относятся кристаллы семейства DS276#, которые в отличие от иных модификаций подобных устройств, требующих внешней обвязки с использованием прецизионных и стабильных пассивных компонентов, обеспечивают более высокую точность при контроле тока, расходуемого контролируемой батареей. Это достигается, в том числе, за счет встроенной калиброванной резистивной схемы (шунта), выполненной по специальной полупроводниковой технологии, а также благодаря наличию в составе подобных приборов специального аппаратно-программного механизма предварительной калибровки.

Ограничения и сопряжение с промышленными сетями

Безусловно, 1-Wire-сети имеют свою нишу для применения при построении систем автоматизации. Бессмысленно всерьез использовать их для передачи больших массивов информации, при построении, к примеру, систем видео-наблюдения или скоростного обмена, связанных с обслуживанием быстрых процессов, или же сравнивать возможности однопроводных сетей с такими мощными сетевыми промышленными интерфейсами, как ProfiBus, FeldBus, LonWorks, CAN, Industrial Internet и т.д. Можно даже сформулировать основные на сегодняшний день ограничения для применения систем на базе однопроводных 1-Wire-сетей в области автоматизации:

  • необходимость непрерывной временной синхронизации или синхронной работы отдельных устройств в сети (эта проблема может быть решена вводом в структуру шины сети дополнительной линии для передачи сигнала общей синхронизации),
  • низкая скорость обмена информацией, и как следствие невозможность высокой динамики при обслуживании быстрых процессов в режиме реального времени (если контролируемый быстрый процесс является относительно непродолжительным, локальный микроконтроллер в составе однопроводной шины может обслужить его, сохранив результирующие данные в буферной памяти, а затем уже осуществить их передачу непосредственно к мастеру),
  • сложность в реализации мультимастерного режима работы сети (специализированный ветвитель 1-Wire-сетей DS2409 разрешает проблему конфликтов между несколькими ведущими на одной однопроводной шине).

Как видно из замечаний приведенных в скобках, даже эти очевидные для 1-Wire-сетей, трудности не являются непреодолимыми. Более того, существуют подходы, позволяющие органично интегрировать медленные однопроводные территориально рассредоточенные структуры в состав таких производительных сетей как CAN и Industrial Internet. Это достижимо благодаря применению специальных аппаратно-программных решений, реализуемых на базе современных микроконтроллеров, а так же уникального инструмента кампании Dallas Semiconductor Corp. - устройства TINI (Tiny InterNet Interface ).

TINI400 - это целая микросистема, основой которой является центральный процессор, реализованный на высокопроизводительном сетевом микроконтроллере DS80С400, который объединяет ресурсы целого ряда наиболее распространенных сетевых интерфейсов, как-то: RS232, 1-Wire, CAN 2.0B, Ethernet, не говоря о возможности использования параллельной шестнадцатиразрядной синхронной магистрали, а также автономных узлов для организации стандартных локальных последовательных интерфейсов I2C и SPI. Кроме того, плата TINI400 содержит 1Мбайт программной Flash-памяти, 1Мбайт статического ОЗУ, узел часов реального времени, литиевую батарею и кремниевый идентификационный номер. Работает TINI400 под управлением мощной операционной среды, которая включает в себя поддержку TCP/IP и виртуальной машины Java, которая тщательно отработана и испытана еще на модели TINI предыдущего поколения - плате TINI390. Последнее определяется тем фактом, что технология программной поддержки для TINI390 на протяжении нескольких лет развивалась специалистами Dallas Semiconductor Corp. совместно с сотрудниками компании Sun Microsystems, Inc., являясь при этом полностью открытым проектом. Такой подход позволил иметь максимально эффективную обратную связь с конечными пользователями, что помогло выявить и устранить большинство недостатков программного обеспечения. И сейчас на сайте Dallas Semiconductor Corp. можно найти всю необходимую документацию и средства разработки программного обеспечения, что значительно облегчает построение на базе устройства TINI локальных однопроводных систем удаленного контроля и управления, объединяющих достоинства быстрых и производительных, но дорогих, и медленных, но дешевых и эффективных интерфейсов.

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

1-Wire — однопроводный низкоскоростной интерфейс, разработанный фирмой Dallas Semiconductor (сейчас она является подразделением фирмы MAXIM) для двунаправленного обмена данными с различными периферийными устройствами (датчики температуры, электронные ключи, аккумуляторы).

Это довольно дешёвый и надёжный интерфейс, для устройств, не требующих быстрого обмена большим количеством данных. Он позволяет обмениваться данными на скорости до 15,4 кбит/с в обычном режиме и до 125 кбит/с в режиме «overdrive» (в статье мы будем рассматривать обычный режим). При использовании специальных проводов (IEEE1394 — Firewire) расстояние передачи данных может составлять до 300 м.

Как физически устроен сам интерфейс? Да очень просто, — смотрим рисунок слева. В микрухах реализованы порты 1-wire, которые состоят из высокоомного приёмника и передатчика на полевом транзисторе с открытым стоком, подключенные к одному общему выводу (вывод порта 1-wire). Типовой ток утечки закрытого выходного полевика составляет 5 мкА. Снаружи реализована шина 1-wire. Она состоит из одного сигнального провода (поэтому интерфейс и назван однопроводным), подтянутого через резистор (типовое значение 5,1 кОм) к питанию (к плюсу) и одного провода, подключенного к общему проводу (то есть к минусу).

Обмен данными осуществляется по принципу Master-Slave (ведущий-ведомый), соответственно устройства с интерфейсом 1-wire бывают двух типов: «Master» (ведущее устройство) и «Slave» (ведомое устройство). Как правило в качестве «Мастера» выступает контроллер (или компьютер, через специальное устройство сопряжения), а в качестве «Слэйвов» — различные периферийные устройства.

На одну шину 1-wire можно подключить множество (до 2 48) slave-устройств, поскольку каждое такое устройство имеет уникальный 48-битный серийный номер, который вместе с байтом «CRC» и байтом «family code» (определяющим тип устройства) образует уникальную 64-битную метку. Ведущий на шине 1-wire должен быть один.

Питаться устройства с интерфейсом 1-wire могут как от независимого источника, так и от сигнального провода. Если в устройствах используется КМОП-архитектура, то диапазон напряжений питания может быть довольно широкий, но, при подключении на одну шину, питание всех устройств должно быть примерно одинаковым (чтобы уровни напряжения правильно распознавались приёмниками). В основном используются TTL-уровни (соответственно, пятивольтовое питание). Ещё хотелось бы добавить, что выход, реализованный на полевике с низким током утечки, — это специальная заточка под питание от сигнальной линии. Если у вашего устройства будет внешнее питание — никто не мешает вам организовать порт 1-wire, например, на биполярном транзисторе с открытым коллектором. Аналогично, резистор 5,1 кОм — тоже не догма, его значение может варьироваться в зависимости, например, от ёмкости линии.

Теперь давайте подробнее расмотрим механизм передачи данных на уровне протокола.

Во первых, необходимо отметить, что всем обменом на шине управляет «Мастер». Только мастер решает — когда и с каким устройством он хочет поговорить и когда устройство должно посылать или принимать очередной бит. «Слэйвы» синхронизируются с «Мастером» по спаду на сигнальной линии и далее отсчитывают интервалы до тех или иных своих действий по внутреннему счётчику. Единственное самостоятельное действие, разрешённое «Слэйву» — это выдача сигнала «Presence» (импульс присутствия), который он выдаёт сразу после подключения на шину, чтобы обозначить своё присутствие. Кроме этого, «Мастер» может сформировать на шине сигнал «Ресет», после которого все «Слэйвы» на шине должны ресетнуться и также ответить «Мастеру» сигналом «Presence».

Диаграммы сигналов «Reset» и «Presence» приведены на рисунке слева. Синим цветом обозначено состояние активности «Мастера» (когда он притягивает уровень на шине к нулю), красным цветом обозначено состояние активности «Слэйва» (когда «Слэйв» притягивает уровень на шине к нулю), серым цветом обозначено состояние, когда «Мастер» и «Слэйв» неактивны (сигнал через резистор подтянут к питанию).

Чтобы всё было понятно — опишем то, что нарисовано на этом рисунке, словами. Итак, чтобы сформировать сигнал «Reset», — «Мастер» должен притянуть уровень на шине к нулю на время не менее 480 мкс и не более 960 мкс (480 мкс ≤ T RSTL < 960 мкс). После этого он должен отпустить шину и, не менее, чем на 480 мкс, прекратить свою активность на шине (T RSTH > 480 мкс). «Слэйвы», не ранее, чем через 15 мкс, но и не позднее, чем через 60 мкс после того, как «Мастер» отпустит шину (15 мкс < T PDH < 60 мкс), должны сформировать на шине низкий уровень (это и есть сигнал присутствия), длительностью от 60 до 240 мкс (60 мкс < T PDL < 240 мкс), после чего они также отпускают шину.

После того как «Мастер», получив сигнал «Presence», понял, что на шине есть «Слэйвы» — он может начинать с этими «Слэйвами» обмен данными. Данные по шине передаются побитово, младшим битом вперёд. 0 и 1 кодируются уровнями напряжения на сигнальном проводе (0 — низкий уровень напряжения, 1 — высокий уровень напряжения).

Каждый бит передаётся в установленном временном промежутке, называемом тайм-слотом. Начало каждого тайм-слота (как я уже говорил) определяет «Мастер», притягивая шину к низкому уровню. Время между тайм-слотами не регламентировано, то есть один бит можно передать, условно говоря, сейчас, а другой, скажем, через 5 минут, ничего страшного при этом не произойдёт и данные не потеряются.

Выборка данных «Слэйвом» и «Мастером» происходит в разные временные интервалы, относительно начала тайм-слота, поэтому мы отдельно рассмотрим варианты передачи данных в направлениях «Мастер» ⇒ «Слэйв» (тайм-слот записи) и «Слэйв» ⇒ «Мастер» (тайм-слот чтения).

Тайм-слот записи показан на рисунке слева. Как и ранее, синим цветом обозначена активность «Мастера», красным — активность «Слэйва» и серым — моменты, когда линия подтянута к питанию через резистор.

  1. 1 мкс≤T LOW1 <15 мкс — время, в течении которого шина притянута к нулю при передаче 1
  2. 60 мкс≤T LOW0
  3. 60 мкс≤T SLOT <120 мкс — длительность тайм-слота
  4. T REC >

Поясню этот рисунок несколько подробнее. Итак, для того, чтобы «Слэйв» распознал начало тайм-слота — «Мастер» должен удерживать сигнал на шине равным нулю в течении времени T LOW1 . После этого, но не позднее 15 мкс от начала тайм слота, «Мастер» должен установить на шине уровень сигнала, соответствующий передаваемому биту. То есть, если он хочет передать 1, то он должен отпустить шину через какой-то промежуток времени от начала тайм-слота, чтобы до начала «Окна выборки» сигнал успел установиться в единицу. Если же «Мастер» хочет передать ноль, то он просто должен так и оставить линию притянутой к нулю. В течении «Окна выборки» сигнал на линии не должен меняться, потому что в любой момент в течении этого времени сигнал может быть считан «Слэйвом». «Окно выборки» заканчивается через 60 мкс от начала тайм-слота. После окончания окна выборки и до окончания тайм-слота — «Мастер» должен отпустить шину, чтобы сигнал вернулся к высокому уровню. Понятно, что отпускать шину актуально только в том случае, если «Мастер» передавал 0, если же он передавал 1, то ему нужно просто дождаться окончания тайм-слота.

Тайм-слот чтения показан на рисунке справа.

  1. 1 мкс≤T LOWR <15мкс — время, в течении которого шина притянута к нулю
  2. T RDV =15 мкс — момент окончания «Окна выборки»
  3. 0 мкс≤T RELEASE <45 мкс — время, в течении которого «Слэйв» должен отпустить шину
  4. 60 мкс≤T SLOT <120 мкс — длительность тайм-слота
  5. T REC >1 мкс — интервал между тайм-слотами

Здесь всё происходит следующим образом: «Мастер» притягивает шину к нулю, чтобы обозначить начало тайм-слота. Пока линия притянута к нулю — «Слэйв» должен либо тоже притянуть линию к нулю, если хочет передать ноль, либо оставить линию свободной, если хочет передать единицу. После того, как «Мастер» отпустит шину (через время T LOWR), — начинается «Окно выборки» и «Мастер» может считывать с шины значение бита. Далее, после окончания «Окна выборки», «Слэйв» должен в течении времени T RELEASE отпустить шину.

Хотелось бы уточнить, что «Мастер» должен не сразу читать уровень на шине после того, как отпустит её, а через некоторое время, которое необходимо для того, чтобы исключить влияние ёмкости линии (если «Слэйв» передаёт 1, то, из-за наличия этой ёмкости, напряжение не может вырасти мгновенно после отпускания шины «Мастером»). С учётом этого, «Мастеру» наиболее целесообразно сделать промежуток, в течении которого он удерживает шину на низком уровне, как можно короче (чтобы увеличить себе окно выборки), а читать данные с шины как можно ближе к концу «окна выборки» (таким образом можно будет работать с линиями, имеющими бОльшую ёмкость).

В самих устройствах, отдельные передаваемые биты собираются в команды, данные и так далее, но это уже более высокий уровень протокола, который мы здесь рассматривать не будем, поскольку он в разных устройствах может быть разным (соответственно и смотреть его надо в даташите на конкретный девайс).

  1. Эмуляция электронного ключа 1-wire на ATTiny2313


Последовательные интерфейсы фактически стали основными в современных приборных и бортовых сетях. Один из наиболее широко используемых интерфейсов такого рода – 1-Wire, представленный в 1990-х годах компаний Dallas Semiconductor (ныне –Maxim/Dallas). Этот интерфейс использует каждый, кто с ключом-таблеткой подходит к двери подъезда. Несмотря на солидный возраст, 1-Wire не утратил актуальности и сегодня благодаря своей универсальности, простоте и удобству использования.

Как устроен 1-Wire Интерфейс 1-Wire был предложен фирмой Dallas Semiconductor в конце 90-х годов прошлого века. Системы 1-Wire привлекательны благодаря легкости монтажа, низкой стоимости устройств, возможности распознавать устройство при подключении к функционирующей сети, большому числу устройств в сети и т.д.

Типичная система 1-Wire состоит из управляющего контроллера (мастера или ведущего) и одного или нескольких устройств (ведомых), присоединенных к общей шине


Устройства подключаются к шине по схеме с открытым стоком и подтягивающим резистором (см. рис.1). Уровень сигналов в шине – от 3 до 5 В. В пассивном состоянии в линии поддерживается высокий уровень напряжения. Все сигналы формируются с помощью замыкания сигнальной шины на землю (низкий уровень напряжения).

Большинство устройств 1-Wire поддерживают две скорости передачи данных: стандартную – около 15 кбит/с и повышенную (overdrive) около 111 кбит/с. Понятно, что чем выше скорость, тем больше ограничений на длину шины и число подключаемых к ней устройств. Режим передачи данных по шине 1-Wire полудуплексный: мастер и ведомые устройства передают данные по очереди. Каждая транзакция через интерфейс 1-Wire начинается с того, что мастер передает импульс Reset. Для этого он переводит напряжение в шине на низкий уровень и удерживает его в этом состоянии в течение 480 мкс

Затем мастер отпускает шину, и подтягивающий резистор возвращает напряжение к высокому логическому уровню. Все ведомые
устройства, обнаружив сигнал Reset и дождавшись его окончания, передают свой сигнал – Presence. Он представляет собой сигнал низкого уровня длительностью 100 200 мс. Устройство может генерировать сигнал Presence и без импульса Reset например, таким способом оно сообщает о
себе при подключении к шине

После передачи импульса Presence устройство 1-Wire готово к приему команд. Весь информационный обмен в шине происходит под управлением мастера. Для передачи каждого бита выделяется специальный временной промежуток (таймслот) длительностью порядка 80 мкс. В начале каждого таймслота
мастер переводит линию на нулевой уровень. Если далее мастер хочет передать 0, он удерживает напряжение на низком уровне как минимум 60 мкс (рис.3а). При передаче единицы мастер удерживает нулевое напряжение 5 – 6 мкс, азатем отпускает линию и выжидает примерно 60 мкс до начала формирования следующего тайм-слота

Если мастер ожидает данные от ведомых устройств, он также обозначает начало тайм-слота, обнуляя линию на 5 – 6 мкс, после чего перестает удерживать низкое напряжение и в течение короткого времени слушает линию. Если устройство хочет передать ноль, оно само обнуляет линию сразу после регистрации импульса начала тайм-слота. Если устройству нужно передать единицу, оно никаких действий не производит. Отметим, что приведенные
значения временных интервалов соответствуют стандартной скорости передачи данных через интерфейс 1-Wire. В режиме overdrive эти интервалы соответственно уменьшаются.

Весь обмен на шине 1-Wire происходит посредством специальных команд. Их число для каждого типа устройств различно. Но есть и минимальный набор стандартных команд, которые поддерживают все 1-Wire-устройства – так
называемые ROM-команды.

Формат команд прост – идентификатор команды (1 байт), за которым могут следовать данные (идентификатор устройства, полезные данные и т.п.). Все устройства в сети знают длину каждой команды.

Последовательность инициализации шины 1-Wire

Информация о значении битов в адресах устройств 1-Wire

У каждого устройства 1-Wire есть 64-разрядный идентификатор (ID). Он состоит из 8-разрядного кода семейства, который идентифицирует тип устройства и поддерживаемые им функции, 48-разрядного серийного номера и 8-битного поля кода циклического избыточного контроля (CRC-8). ID вводится при изготовлении устройства и хранится в ПЗУ. Фирма Maxim гарантирует, что один раз использованный адрес никогда не повторится в другом устройстве. В самом деле, 48 бит – это 2,81 1014 различных чисел. Если производить 1000 миллиардов (1012) различных устройств ежегодно, то все серийные номера можно использовать не ранее чем через 281 год и это только для одного семейства.

Весь обмен командами инициирует мастер. Начало нового цикла транзакций он отмечает командой Reset, и, получив подтверждение, выбирает устройство специальной командой MATCH ROM, передавая ее идентификатор (5516) и 64 бита ID адресуемого устройства. Получив такую команду, ведомое устройство
с данным ID ожидает новых команд от мастера, а все остальные остаются в пассивном состоянии до следующей команды Reset. В системе с одним устройством можно не передавать ID, используя команду SKIP ROM. В результате ведомое устройство считает себя выбранным без получения адреса.

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

Но чтобы начать работу с определенным устройством, мастер должен знать его ID. Если в системе только одно ведомое устройство, его адрес можно определить с помощью команды READ ROM. В ответ на команду READ ROM устройство передает свой 64-битный адрес

Передача информационных битов по шине 1-Wire: а – мастер передает сигналы, б мастер считывает сигналы

Если же в системе несколько устройств с неизвестными ID, попытка спользовать команду READ ROM приводит к коллизии. В этом случае для пределения адресов используется специальный алгоритм поиска, в основе которого лежит команда SEARCH ROM . Мастер передает команду SEARCH ROM. В ответ все устройства, подключенные к шине, высылают младший бит своего адреса. Свойства шины 1-Wire таковы, что при одновременной передаче сигналов всеми устройствами результат будет равен логическому

Чтение адреса устройства

И значений всех посланных битов. Следовательно, суммарный отклик равен 1, только когда сигналы от всех устройств равны 1. После приема первого бита адреса мастер инициирует следующий тайм-слот, в котором устройство передает инвертированный первый бит. Сопоставляя значения результатов запроса истинного и инверсного битов, можно получить некую информацию о значениях первых битов адресов устройств (см. таблицу).

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

Способы использования микросхемы DS2490: в составе внешнего USB – 1-Wire адаптера (а); внутри главного компьютера (б); в составе USB-хаба (в)


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

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

Не менее важно, что сеть 1-Wire относится к самосинхронизирующимся, т.е. не требует отдельной линии для передачи тактовых сигналов. И, конечно, огромное число ID подключаемых устройств выгодно выделяет ее на фоне других последовательных сетей.

Элементная база

Для реализации интерфейса 1-Wire фирма Maxim/Dallas предлагает ряд устройств. В роли мастера интерфейса может выступать как ПК, так и специализированные микроконтроллеры. Соответственно, в ассортименте Maxim/Dallas присутствуют устройства, которые обеспечивают переход к 1-Wire интерфейсу от стандартных интерфейсов компьютера (например, USB и RS232), управляющего работой устройств 1-Wire. Так, микросхема DS2490 служит мостом между интерфейсами USB и 1-Wire . DS2490 используется в системах 1-Wire несколькими способами: входит в состав адаптера USB – 1-Wire, который подсоединяется к USB-порту главного компьютера напрямую кабелем или через USB-хаб (рис.5а); встраивается в главный компьютер (рис.5б) или же в USB-хаб.

Домофонный ключ с iButton


Некоторые устройства могут не только соединять 1-Wire с другими интерфейсами, но также брать на себя часть функций мастера шины 1-Wire. Одно из таких устройств – DS2482-100. Это мост между интерфейсами I2C и 1-Wire. Микросхема DS2482-100 преобразует протоколы между управляющим I2C микроконтроллером (мастером) и ведомыми 1-Wire устройствами. По отношению к этим устройствам DS2482-100 выступает в роли мастера. С помощью встроенных таймеров DS2482-100 формирует фронты передаваемых по шине сигналов, снимая эту нагрузку с управляющего микроконтроллера. Для того чтобы оптимизировать форму сигналов, DS2482-100 контролирует скорости нарастания и уменьшения напряжения в линии и предоставляет дополнительные программируемые функции, которые помогают согласовать параметры сигналов и особенности ведомых устройств.

Микросхема DS2482-800 аналогична по функциям DS2482-100, но может работать с восемью шинами 1-Wire. В качестве моста между интерфейсами RS232 и 1-Wire можно применять микросхему DS2480B. Устройства 1-Wire соединяются с помощью витой пары различных типов или даже обычным телефонным проводом.

Некоторые применения 1-Wire

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

Наличие уникальных 64-битных адресов позволяет широко использовать устройства 1-Wire в системах аутентификации. Здесь они часто применяются в устройствах iButton. Это микросхема с введенным на этапе производства 64-битных адресом, заключенная в круглый корпус из нержавеющей стали диаметром 16 мм (MicroCAN). Такие устройства функционируют, например, в домофонных ключах.

Микросхемы с поддержкой 1-Wire (например, DS2401, DS2431, DS28E01-100) используются также для идентификации картриджей принтеров, медицинских сенсоров, емкостей с реагентами и др. Преимущество микросхем 1-Wire в том, что для контроля идентифицируемого устройства нужен всего один контакт. Такие микросхемы заключены в специальный плоский корпус (SFN – Single Flat No lead) размером 6 × 6мм, который облегчает их присоединение к устройству.

Еще одно распространенное применение 1-Wire – системы автоматизации. В первую очередь это системы многоточечного измерения температуры различных сред и мониторинга теплового режима помещений. Температуру можно измерять датчиками производства той же Maxim/Dallas. Наиболее популярный из них – цифровой термометр DS18S20. Он имеет разрешение 9 бит и измеряет температуру в диапазоне от -55 до 125°C. Точность измерений составляет 0,5°C в диапазоне -10…85°C. Поскольку каждый термометр, как и любое устройство 1-Wire, имеет уникальный 64-битный адрес, к одной шине 1-Wire можно подключать множество таких приборов.

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