Микросхемы 1 wire. Ограничения и сопряжение с промышленными сетями. Примеры кодов программ

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

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

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

программирование встроенной памяти интегральных компонентов,

системы автоматизации (технология сетей 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 достаточно проста. На рисунке показана упрощенная схема аппаратной реализации интерфейса 1-Wire.


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

Вывод DQ устройства представляет собой вход КМОП-логического элемента, который может быть зашунтирован (замкнут на общий провод) полевым транзистором. Сопротивление канала этого транзистора в открытом состоянии - около 100 Ом. Когда транзистор заперт - имеется небольшой ток утечки (примерно 5 мкА) на общий провод.

Шина 1-Wire должна быть подтянута отдельным резистором к напряжению питания устройств. Сопротивление этого резистора 4.7 К, однако, это значение рекомендовано только для достаточно коротких линий. Если шина 1-Wire используется для подключения удаленных на большое расстояние устройств, то сопротивление этого резистора следует уменьшить. Минимально допустимое его сопротивление - около 300 Ом, а максимальное - около 20 - 30 кОм. Данные величины - ориентировочные, и всегда уточняются по характеристикам конкретного устройства 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". Этот же импульс устройство всегда выдает в линию, если обнаружит сигнал RESET.

5. Появление в шине 1-Wire импульса PRESENCE после выдачи RESET однозначно свидетельствует о наличии хотя бы одного подключенного устройства.

6. Обмен информации ведется так называемыми тайм-слотами: один тайм-слот служит для обмена одним битом информации.

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

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

Рис. Диаграмма сигналов RESET и PRESENCE

Как видим, длительность большинства временных интервалов очень приблизительная и имеет только ограничение только по минимуму (не меньше указанного). Условные обозначения линий, будут использоваться и далее. Импульс 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-х типов: вверху показаны тайм-слоты передачи от МК, внизу - приема от устройства.

Рис. Временные диаграммы передачи данных в сети 1-Wire

Тайм-слот передачи "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 обладает уникальным идентификационным 64-битным номером, программируемым на этапе производства микросхемы. Уникальным - это значит, что фирма-производитель гарантирует, что не найдется двух микросхем с одинаковым идентификационным номером (по крайней мере в течении нескольких десятков лет при существующих темпах производства).

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

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

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

После того, как МК выдаст команду READ ROM, от устройства поступит 8 байт его собственного уникального адреса - МК должен их принять. Следует учесть, что любая процедура обмена данными с устройством должна быть завершена полностью либо прервана посылкой сигнала RESET.

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

Если устройство одно на шине - можно ускорить процесс взаимодействия с ним при помощи команды SKIP ROM. Поучив эту команду, устройство сразу считает адрес совпавшим, хотя никакого адреса за этой командой не следует. Некоторые процедуры не требуют приема от устройства никаких данных, в этом случае команду SKIP ROM можно использовать для передачи какой-то информации сразу всем устройствам. Это можно использовать, например, для одновременного запуска цикла измерения температуры несколькими датчиками-термостатами типа DS18S20.

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

В завершение обзора интерфейса рассмотрим детально строение уникального 64-битного номера-адреса устройств 1-Wire. Он состоит фактически из 8 отдельных байт: одного байта идентификатора семейства, шести байт (48 бит) собственно уникального адреса и одного байта контрольной суммы всех предыдущих байтов.

Итак, контрольная сумма или CRC - это байт, значение которого передается самым последним и вычисляется по специальному алгоритму на основе значения всех 7-и предыдущих байтов. Алгоритм подсчета таков, что если все байты переданы-приняты без искажений (а искажения вполне возможны, если вспомнить характер аппаратной реализации интерфейса), принятый байт контрольной суммы обязательно совпадет с рассчитанным в МК (или устройстве) значением. Т.е. при реализации программного алгоритма обмена информацией мы должны при передаче и приеме байтов подсчитывать их контрольную сумму по строго определенному алгоритму, а затем либо передать полученное значение (если мы вели передачу адреса/данных), либо сравнить расчетное значение с принятым значением CRC. Только при совпадении обоих CRC МК или устройство считают принятые данные достоверными. В противном случае продолжение обмена невозможно. Очевидно, что алгоритм подсчета CRC должен быть одинаковым как для МК, так и для любого устройства. Он "стандартизирован" и описан в документации.


Произвести такие расчеты в рамках данного дипломного проекта не представляется возможным. Однако имеет смысл формирование прогнозной оценки реализации того или иного варианта интеграции локальных вычислительных сетей МИЭТ и студенческого городка МИЭТ. Прогнозная оценка будет формироваться исходя из суммы прямых затрат по основным статьям расходов, а так же стоимости поддержки связи, применительно...

Какие специализированные команды необходимо применять для опроса датчика? 2.3 Запуск и выполнение Скомпилированная программа представляет собой файл типа cof, который прошиваем на микроконтроллер ATmega 128 семейства AVR. Соединяем компоненты рабочей модели прибора, получаем сигнал с температурного датчика, считываем температуру окружающей среды. 3. Список используемой литературы...

29-10 Упражнение 29 29-11 [КС xv] Приложение А Ссылки А-1 Приложение В Рисунки В-1 Приложение С Решения С-1 Словарь Сокращения Индексы [КС xvi] Технология создания сетей ЭВМ Вопросы и ответы Эта форма поможет вам получить ответ на любой вопрос, возникший в процессе изучения...

Разработчиком платформы 1-Wire является Dallas Semiconductor Corporation (US). В 2001 году она была приобретена гигантом мировой микроэлектроники фирмой Maxim Integrated Products (US). Платформа включает серию микросхем и устройств iButton на их основе, а также различные адаптеры, наборы для макетирования и программное обеспечение.

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

Рис.1. Компоненты платформы 1-Wire.

Платформа разрабатывалась с конца 80-х до конца 90-х годов и предназначалась для задач контактной идентификации объектов, в т.ч. с функциями измерения и регистрации температуры, влажности, параметров автономного электропитания, а также с функциями съема, хранения и переноса данных. Широко распространенным образцом такого рода применения является ключ-таблетка для домофона. Менее известным, но также широко распространенным является использование платформы 1-Wire для решения задач идентификации и регистрации параметров картриджей, материнских плат, биологических объектов, идентификации и защиты от несанкционированного доступа различных боксов, контейнеров и т.п. Суть данного целевого назначения и принципа действия отражена в термине «Touch Memory» (контактная память), который часто используют для упоминания устройств iButton. Подробную информацию о штатных областях применения и достоинствах платформы 1-Wire можно найти на следующих страницах сайта фирмы Maxim Integrated:

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

Оценки доли платформы на рынке систем домашней автоматизации отсутствуют.

Базовыми решениями, на которых основана платформа, являются следующие:

A. Двухпроводный интерфейс.

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

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

B. Индикация подключения в горячем режиме.

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

C. Уникальный идентификатор устройства

Каждая микросхема 1-Wire содержит уникальный 64-битный код, записываемый на этапе производства. Данный код позволяет индивидуализировать все выпускаемые устройства 1-Wire, для чего производитель гарантирует отсутствие одинаковых кодов (аналогично MAC-адресам сетевых адаптеров). При подключении к магистрали данный код считывается контроллером и используется для идентификации связанного с этим устройством объекта, а также для определения типа устройства. При подключении к магистрали нескольких устройств их коды могут использоваться в качестве их адресов, что позволяет строить технологические сети, получившие название MicroLAN.

Замечание. Для задач автоматизированного управления, к которым, в том числе, относятся и задачи «умного дома», данные решения не дают каких-либо преимуществ. Так, нет ощутимой разницы при использовании в современном интерьере двухпроводного и, например, четырехпроводного кабеля, тем более, что использование исполнительных устройств все равно потребует отдельной линии питания. Также не актуальна для домашней автоматики возможность подключения устройства в «горячем» режиме, если только это не ключ электронного замка. Использование же в качестве адреса устройства его идентификатора вместо установки фиксированного, регламентированного проектом, вообще сопряжено с определенными неудобствами наладки и ремонта сети, хотя разработчик и предлагает соответствующие алгоритмы самонастройки и адаптации, а также возможность установки с помощью внешних перемычек для ряда устройств дополнительного 4-х битного локального адреса. Пригодность платформы для отдельных ниш автоматизации вытекает из ее дешевизны, простоты применения, наличия в составе ряда востребованных датчиков, устройств сопряжения со стандартными интерфейсами, драйверов для распространенных операционных систем, а также наличием возможности расширения функционала за счет применения элементной базы общего назначения.

Сеть на базе протокола 1-Wire имеет централизованную архитектуру. Информационный обмен происходит под управлением центрального контроллера - «мастера», остальные сетевые устройства имеют статус «слэйв» (рис.3). В качестве контроллера сети может использоваться любое программируемое устройство, имеющее внешний интерфейс. Для согласования контроллеров с магистралью 1-Wire в составе программно-технических средств платформы имеются адаптеры и драйверы для проводных последовательных интерфейсов RS-232, RS-485, I2C, SPI, Ethernet, для параллельного интерфейса LPT, а также для Wi-Fi.

Рис.3. Конфигурация сети MicroLAN на базе протокола 1-Wire

Топология сети может иметь как линейную, так и ветвящуюся древовидную структуру. Основные параметры интерфейса 1-Wire следующие:

  • максимальная длина магистрали при использовании витой пары - до 300 м;
  • максимальное количество абонентов на магистрали максимальной длины - до 250;
  • скорость обмена по магистрали максимальной длины - до 16,3 кбит/c;

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

Обмен данными по магистрали включает три фазы (рис.4):

  • фазу сброса, включающую импульс сброса от контроллера и ответный импульс подтверждения присутствия от абонента (абонентов);
  • фазу выборки устройства, включающую команду его выборки (по коду, без кода, групповую, поиска) и его код, если командой он предусмотрен;
  • фазу записи/чтения данных, включающую код команды и данные.

Рис.4. Циклограмма обмена данными

Логика всех устройств тактируется отрицательным фронтом сигналов контроллера как в режиме записи, так и в режиме чтения. Биты кодируются длительностью положительного импульса: «1» передается длинным импульсом, а «0» - коротким. В режиме записи все импульсы данных формируются контроллером. В режиме чтения контроллер формирует последовательность единиц, а абонент накладывает на них свою маску нулей (рис.5).

Рис.5. Тактирование и кодирование на физическом уровне

Более подробные сведения об архитектуре магистрали 1-Wire приведены в следующих официальных документах фирмы Maxim:

Архитектура ЗУ и регистров периферийных устройств платформы организована таким образом, что совокупность всех сетевых устройств может быть представлена как единая файловая система, что позволяет работать с сетью как с интегрированным носителем данных. Описание ее структуры приведено в AN114 1-Wire File Structure .

Номенклатура микросхем платформы 1-Wire и устройств iButton включает как простые носители кода идентификации, так и носители кода идентификации с дополнительными функциями, в т.ч.

  • с функциями различных типов ЗУ - Memory EPROM, EEPROM, ROM, NV SRAM ;
  • с функциями измерения температуры - Temperature Sensors ;
  • с функциями мониторинга, защиты и конфигурирования элементов электропитания - Battery Monitors, Protectors, and Selectors и Battery ID and Authentication ;
  • с функциями хронирования - Timekeeping & Real-Time Clocks ,
а также интерфейсные микросхемы для сопряжения контроллеров с магистралью 1-Wire - 1-Wire Interface Products .

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

Рис.6. Фрагмент схемы модуля дискретного ввода-вывода фирмы ЭлИн

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

Наиболее развитую номенклатуру OEM-устройств, включающую в т.ч. и управляемые розетки для коммутации электропитания, предлагает НТЛ ЭлИн. За рубежом наибольшей популярностью пользуются модули фирмы Embedded Data Systems. Однако в целом число OEM-производителей невелико, они не относятся к категории «гигантов» индустрии средств автоматизации и, кроме того, в значительной степени ориентированы на рынок домашних умельцев.

Рис.7. Примеры OEM-модулей 1-Wire

Фирма Maxim Integrated предоставляет для программирования систем на базе 1-Wire библиотеки API и SDK для широкого ряда платформ - персональных компьютеров с ОС Windows/Linux/MacOS, мобильных устройств, микроконтроллеров, .NET и JAVA. Их общее описание приведено в AN155 , а описание конкретных пакетов со ссылками на скачивание дистрибутивов и документации приведено в следующих документах:

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

Из сторонних разработок наибольший интерес представляют следующие:

Существует также большое число специализированных программ, разрабатываемых под узкие задачи (см., например, для модулей НТЛ ЭлИн).

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

Классификация 1‑Wire‑сети Протяжённость кабеля магистрали Количество ведомых абонентов Тип используемого кабеля Топология Мастер 1‑Wire‑сети
Миниатюрная До 5 м До 10 шт Любой Свободная Любой ведущий с пассивной подтяжкой (резистор к питанию)
Короткая До 30 м До 50 шт 4‑хпроводный телефонный Общая шина с патчами до 0,5 м Адаптеры на базе дискретных компонентов DS9097E, DS1410E
Средняя До 100 м До 100 шт Витая пара 3 категории Строгая общая шина Активная подтяжка (DS2480В, DS2482, DS2483 или специальное схемное решение (MAX6314))
Длинная До 300 м До 250 шт Витая пара 5 категории или IEEE1394 (Firewire) Общая шина без разрыва ствола Link или программная модификация временных слотов 1‑Wire‑протокола

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

Ещё одним вариантом эффективного обслуживания радиальных 1‑Wire‑сетей является применение драйверов DS2482. Так, микросхема ведущего DS2482‑800 способна управлять восьмью независимыми 1‑Wire‑ветвями, каждая из которых может быть перестроена с индивидуальными параметрами активной подтяжки. Наличие трёх адресных выводов I2C‑интерфейса позволяет организовать на базе такой микросхемы и универсального микроконтроллера полномасштабный 8‑, 16‑, 24‑, 32‑канальный и т.д. 1‑Wire‑hub, реализующий очень недорогую разветвлённую радиальную сетевую структуру, без коммутации шины данных и возвратной шины. В отличие от компонента DS2482‑800, драйвер DS2482‑100 позволяет реализовать мастера только одной 1‑Wire‑ветви. Благодаря наличию двух адресных входов интерфейсного узла I2C, ведущий микроконтроллер сможет обслуживать по одной такой I2C‑магистрали до 4 подобных драйверов. Причём каждый из них без затруднений может быть гальванически развязан со стороны I2C‑магистрали. А это позволяет, в отличие от 1‑Wire‑hub на базе DS2482‑800, реализовывать, в случае применения нескольких DS2482‑100, более помехоустойчивые изолированные друг от друга радиальные 1‑Wire‑структуры.

Если же организация 1‑Wire‑сети на базе персонального компьютера связана с особыми трудностями (большая протяжённость кабеля магистрали, большое количество ведомых абонентов, плохое качество кабеля или сложная топология, много помех и т.д.), то наиболее оптимально использование интеллектуального адаптера для COM‑порта типа Link или его аналога для USB‑порта адаптера LinkUSB. Основой любого из таких адаптеров является микропроцессор, оснащённый специализированной программой управления. При этом все устройства, реализованные по технологии Link, полностью эмулируют со стороны последовательного порта работу популярного адаптера DS9097U производства Maxim Integrated. Поэтому всё программное обеспечение, ранее разработанное для поддержки адаптеров DS9097U, также подходит для взаимодействия с любым из адаптеров Link. Но главное, что благодаря собственным интеллектуальным ресурсам адаптеры Link и LinkUSB обеспечивают льготный режим работы ведомых абонентов в составе проблемных 1‑Wire‑сетей, в условиях сложной помеховой обстановки. Адаптеры Link и LinkUSB многократно улучшают механизм активной подтяжки шины данных 1‑Wire‑магистрали, что позволяет действительно получать идеальные сигналы обмена при длинах кабеля до 300 метров и числе ведомых абонентов до 250 шт. Кроме того, использование процессором Link‑адаптера специальных алгоритмов цифровой фильтрации многократно улучшает устойчивость обслуживаемой им 1‑Wire‑сети к электромагнитным помехам, шумам и отражениям сигналов.

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

    DS2401, DS2405 – первые компоненты с 1‑Wire‑интерфейсом в пластиковых корпусах, полностью аналогичны по схемотехнике первым моделям “таблеток” iButton, которые были ориентированы для работы на коротких 1‑Wire‑магистралях (до 1994 года),

    DS1820, DS2407P, DS2450, DS2404, DS2415, DS2417, DS1920 и т.д. – вторая версия, специально ориентированная для работы в составе 1‑Wire‑сетей с протяжённой магистралью (до 2000 года, сейчас эти компоненты в основном снимаются с производства),

    DS18S20, DS18B20, DS1822, DS2406P, DS2409, DS2438, DS2890, DS1973 и т.д. – третий вариант, более устойчивый к коллизиям в 1‑Wire‑сетях по сравнению с предыдущим (с 2000 года).

    DS2408, DS2411, DS2413, DS2422, DS2431, DS1923, DS1977 и т.д. ‑ последний вариант, наиболее удачной по надёжности схемотехники 1‑Wire‑интерфейса, учитывающей особенности работы в составе зашумлённых 1‑Wire‑сетей (c 2003 года).

Материал данной статьи взят с сайта:

Для одного из проектов по автоматизации потребовалось сделать устройство, которое является подчинённым 1-Wire устройством, принимает команды от мастера и выставляет на своих выходах значение аналогового сигнала в диапазоне от 0 до 10В.
Проанализировав линейку стандартных микросхем 1-Wire от Maxim, стало ясно, что нет микросхемы, которая позволит реализовать подобный функционал.
Потому было принято решение реализовывать 1-Wire slave на микроконтроллере. Надеюсь, данный материал будет интересен и полезен людям, которые делают «умный дом» своими руками, т.к. 1-Wire достаточно популярная шина в подобных проектах. В качестве камня был выбран МК Cortex M0+ ATSAMD20G16 от Atmel, но о реализации в коде расскажем во второй части. Забегая немного вперед, скажу что в третьей части цикла пойдет речь о реализации собственного семейства устройств для линуксовой библиотеки OWFS (One Wire File System). А сегодня расскажем о некоторых аппаратных решениях, к которым мы пришли в процессе разработки.

Речь в основном пойдет о том как подключить ногу микроконтроллера к 1-Wire шине с минимальным вредом для здоровья. Будем двигаться от простого к сложному.

Преобразование уровней


Самый простой вариант - двунаправленный преобразователь уровня на транзисторе. Для него потребуется где-то брать 5В со стороны шины 1-Wire.
Первый вариант - делать 5В на своем устройстве (помимо 3.3В) для «запитки» шины. Как следствие, усложнение схемотехники.
Второй вариант - прокладывать шину 1-Wire в три провода . Третьим проводом идёт линия питания +5В. Из проблем - лишний провод, просадка напряжения на длинном проводе.

Согласование уровней

Если очень не хочется использовать +5В можно разделить сигнальную линию на 2 составляющих (вход и выход)

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

Повышаем устойчивость

Для того что бы сделать прием данных по 1-Wire более уверенным необходимо сделать крутые фронты импульсов со стороны микроконтроллера. Для этого воспользуемся компаратором от TI LMV331 , который обеспечит более точный и резкий переход между логическими «0» и «1», а так же гистерезис 160mV. Еще заменим выходной би-полярный транзистор BC547 на полевой IRLML6346 и поставим защитный TVS диод ESD5Z6 на 6В.


Для данной схемы компаратор потребуется запитать от 5В. Где их можно взять было сказано выше.

Развязанный 1-Wire

Для обеспечения электрической развязки шины 1-Wire и внутренней электроники устройства воспользуемся изолированным транслятором уровней ADuM1201 , и изолированным DC/DC конвертор TES 1-1211 . Как и в предыдущем случае, линию данных 1-Wire делим на 2 линии: 1W_Rx и 1W_Tx.


DC/DC конвертор с 12 на 5 вольт взят для примера, можно использовать аналогичный 3.3/5.

Остальная схемотехника

Для полноты картины покажем схемотехнику подключения микроконтроллера, а так же выходных аналоговых каналов 0-10В.




Т.к. протокол 1-Wire требует наличие уникального адреса для каждого устройства на шине, на плату ставим 1-Wire UID от Maxim DS2411 . Будучи для неё мастером шины будем считывать её UID и использовать его в качестве собственного адреса. У DS2411 код семейства 0x01 (family code - старший байт UID’а). Мы же на сайте OWFS выберем незанятый код семейства для нашего нового устройства и будем подменять первый байт.

Как уже было сказано, во второй части приступим к программной реализации протокола 1-Wire Slave.

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



Top