Dallas Semiconductor ... или 20 лет спустя


МНОГИЕ РАЗРАБОТЧИКИ РЭА ГОВОРЯТ, ЧТО НАЧАТЬ ИСПОЛЬЗОВАТЬ "DALLAS" НАСТОЛЬКО ЖЕ ЛЕГКО, НАСКОЛЬКО И СЛОЖНО ОТ НЕГО ОТКАЗАТЬСЯ - ТАКОЙ ШИРОКОЙ СПЕКТР НЕОБЫЧНЫХ УСТРОЙСТВ ПРЕДЛАГАЕТ ФИРМА DALLAS SEMICONDUCTOR.

Фирма Dallas Semiconductor была основана в 1984 г. в Далласе, штат Техас, и производит электронные компоненты и системы, применяемые более чем 15000 крупными производителями мира. Основой для производства является КМОП технология, позволившая внедриться в рынок малопотребляющих устройств и добиться минимально возможного энергопотребления. В результате изделия Dallas Semiconductor применяются в таких областях, как телекоммуникации, беспроводная телефония, базовые станции сотовой связи, оборудование защищенных Internet-узлов, медицинское оборудование, сетевое оборудование и т.п.

Основными направлениями производства Dallas Semiconductor являются:
Микросхемы для телекоммуникационных устройств: роутеров, серверов, мультиплексоров, устройств оптической передачи данных, концентраторов. Усовершенствованные контроллеры цифровых потоков E1/T1 и E3/T3 позволяют производить устройства, обеспечивающие мультиплексированный доступ к глобальным сетям из локальных сетей. Наиболее широкое применение в устройствах телекоммуникаций нашли фреймеры и мультиплексоры потоков Е1 и Е3. Новое семейство мультиканальных HDLC контроллеров позволяет обеспечить неискаженную передачу данных по IP-протоколу.

Микросхемы, поддерживающие интерфейс MicroLan. Организация многоранговых сетей, в которых присутствуют десятки и сотни устройств, значительно упростилась с появлением микросхем, поддерживающих протокол MicroLan. Прокладка и обеспечение надежной работы таких сетей стандартными методами всегда было делом дорогим и очень хлопотным. И если необходима сеть со скоростью передачи данных, ограниченной десятком килобит в секунду, то экономически целесообразным будет выбор именно MicroLan. Во-первых, передача данных в обоих направлениях идет по одному проводу. Во-вторых, каждая микросхема (даже если она не очень похожа на микросхему) содержит уникальный 64-битный номер, который записывается в нее в процессе производства. Это позволяет решить одновременно как минимум две задачи: адресация в сети и ее идентификация в приложениях, которые контролируют целостность сети и ее неизменность. На основе этого протокола фирмой Dallas Semiconductor была разработана принципиально новая модель промышленного контроллера, управляемого по IP. Этот контроллер, получивший название TiniBoard, может применяться как обычный промышленный контроллер, так и как система дистанционного управления, например, метеорологической станцией, тепличным хозяйством и т.п. Выбор типовых микросхем, поддерживающих протокол MicroLan довольно широк: в него входят цифровые термодатчики, устройства автоматической идентификации iButton, микросхемы EPROM, EEPROM, SRAM, часы реального времени, транзисторные ключи, цифровые потенциометры и т.п.

8051-совместимые микроконтроллеры. Для управления процессами фирмой Dallas Semiconductor были созданы несколько семейств микроконтроллеров с 8051-совместимой архитектурой. Но при этом сама реализация архитектуры сильно отличается от традиционной. Своеобразной ╚визитной карточкой╩ микроконтроллеров Dallas Semiconductor стали 4 такта на выполнение простейшей инструкции вместо привычных 12-ти. Соответственно, в зависимости от эффективности реализации программного кода, производительность этих микроконтроллеров выросла в 1,7 .. 2,9 раз по сравнению с классической архитектурой. Вторым значительным ╚но╩ стало наличие второго аппаратного порта UART. Довольно интересной является микроконтроллеры серии DS225x и DS500x. Разработанные специально для применения в приложениях, требующих защиты программного кода от взлома, они реализуют аппаратное шифрование программного кода с использованием 64-битного ключа. Кроме того, некоторые микроконтроллеры имеют встроенные часы реального времени, что значительно упрощает схему и удешевляет устройство в целом, не говоря уже о сокращении времени разработки.

В последнее время появилось несколько интересных моделей микроконтроллеров, таких как DS80C390, имеющий встроенный математический сопроцессор, оперирующий с 16- и 32-разрядными операндами. Кроме всего прочего он имеет аппаратно реализованный сдвоенный контроллер интерфейса CAN версии 2.0. Это в совокупности с повышенной до 40 МГц тактовой частотой позволяет реализовывать довольно сложные системы с достаточно высокой вычислительной мощностью на микроконтроллере, имеющем 8-битное ядро. Другой новинкой является микроконтроллер DS89C420 - первый микроконтроллер Dallas Semiconductor, имеющий flash-память программ, максимальную тактовую частоту 50МГц с выполнением одной простейшей команды за один такт и позволяющий осуществлять внутрисхемное программирование с использованием одного из двух портов UART.
Часы реального времени. Нет ничего дороже времени и нет более важной проблемы, чем его контроль. Для реализации этой проблемы Dallas Semiconductor разработал несколько семейств микросхем часов реального времени (RTC). В них вошли RTC с последовательным интерфейсом, с параллельным интерфейсом, фантомные часы, которые используют общую шину данных и адреса, но позволяющих производить обмен данными только во время, когда в шине присутствуют так называемые ╚запрещенные╩ комбинации сигналов, т.е. когда ни одно из устройств, подключенных к этой шине, не является активным. Таким образом, фантомные часы не занимают полезного адресного пространства. Отсюда и такое несколько странное название данного семейства. Большинство микросхем часов из данных семейств имеют встроенное ОЗУ. Особо следует отметить микросхемы часов со встроенной литиевой батареей, автоматически подключаемой при пропадании основного питания и гарантирующей сохранность данных в ОЗУ и управляющих регистрах в течение не менее 10 лет при отключенном питании.
Датчики температуры. Еще одной существенной частью спектра устройств, производимых Dallas Semiconductor, являются цифровые датчики температуры. Преобразование аналогового значения напряжения, зависимого от температуры в цифровой код происходит прямо на кристалле, что позволяет избежать погрешностей, связанных с передачей аналогового сигнала к входам АЦП, а также сами АЦП. В среднем значение погрешности измеряемой температуры лежит в диапазоне от 0,5 до 2оС, что часто вполне достаточно для большинства приложений.

Также Dallas Semiconductor выпускает большой спектр супервизоров, от простейших генераторов сигнала сброса до сложных систем, следящих за несколькими источниками напряжения, температурой, текущим временем; цифровых потенциометров, от триммеров на восемь положений до сшестеренных на 256 положений с логарифмической характеристикой и с управлением по последовательному интерфейсу и/или с помощью обычных кнопок; цифровых линий задержек с диапазоном времени задержки от единиц наносекунд до микросекунд, программируемых и температурноскомпенсированных генераторов с точностью 2 ppm; контроллеров батарейного питания, включающих в себя функции зарядного устройства; SCSI терминаторов.

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

 

 

 

 

 

Журнал Радио 10 номер 2002 год. ВИДЕОТЕХНИКА     П. Вовк
 
 

 

 

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

 

 

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

 

 

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

 

 

Введение

 

 

 

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

 

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

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

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

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

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

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

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

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



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

 

 

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

 

 

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



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

 

 

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

 

 

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



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

 

 

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

 

 

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

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



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

 

 

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

 

 

 

 

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

 

 

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

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

Копирование домофонных ключей

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

 

 

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

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сигнал Скорость связи Передаваемое значение Принимаемое значение
«Запись лог. 1» 115200 FFh FFh
«Запись лог. 0» 115200 00h 00h
Чтение 115200 FFh Если принято FFh, то это эквивалентно приему лог. 1;
прием любого другого значения эквивалентен приему лог. 0
Сброс/Присутствие 9600 F0h Если принято F0h, то это означает нет подтверждения «присутствия», иначе «присутствие» принято.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



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

 

 

 

 



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

 

 

 

 



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

 

 

 

 



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

 

 

 

 



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

 

 

 

 

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

 

 

 

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

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Команда Код Назначение
READ ROM (ЧТЕНИЕ ПЗУ) 33H Идентификация
SKIP ROM (ПРОПУСК ПЗУ) CCH Пропуск адресации
MATCH ROM (СОВПАДЕНИЕ ПЗУ) 55H Адресация подчиненного устройства
SEARCH ROM (ПОИСК ПЗУ) F0H Получение идентификационных данных о всех устройствах на шине
OVERDRIVE SKIP ROM 3CH Ускоренная версия SKIP ROM
OVERDRIVE MATCH ROM 69H Ускоренная версия MATCH ROM

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

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

 

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

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

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

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

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

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

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

Команда «Поиск ПЗУ»

Команда "Поиск ПЗУ” может использоваться, если
идентификаторы подчиненных устройств неизвестны заранее. Это делает
возможным обнаружить идентификаторы всех подчиненных устройств,
подключенных к шине. Для этого, вначале передается команда "Пропуск
ПЗУ”. Каждый подчиненный размещает первый бит своего идентификатора на
шине. Ведущий считывает результат, как логическое И над всеми первыми
битами идентификаторов всех подчиненных устройств. Затем подчиненные
размещают на шине двоичное дополнение к первому биту своего
идентификатора. Ведущий считывает состояние шины, которое есть
результат логического «И» над всеми дополнениями к первому биту
идентификатора всех подчиненных устройств. Если все устройства в первом
разряде ИК содержат 1, то ведущий считает 10b. Аналогично, если
значения 1 разряда всех устройств равно 0, то ведущий примет 01b. В
этих случаях, бит может быть сохранен как значение первого бита всех
адресов. После этого ведущий снова выполняет размещение этого бита на
шине, чем сигнализирует подчиненным о необходимости дальнейшего
продолжения передачи разрядов ИК. Если на шине будут присутствовать
устройства, как с лог. 0, так и с лог. 1 в первом бите идентификатора,
то ведущий примет 00. В этом случае, ведущий должен выбрать с какими
адресами продолжать работу, с лог. 0 или 1 в первом разряде. Выбор
передается по шине, указывая выбранным подчиненным о необходимости
дальнейшей передачи ИК, а остальные подчиненные переходят в режим
ожидания.

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

Ускоренные команды ПЗУ

Ускоренные команды ПЗУ не рассматриваются здесь, т.к. в данном документе рассматривается только режим стандартной скорости.
 

Команды памяти/функций

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

Типичная последовательность сеанса связи

Все однопроводные устройства придерживаются основной последовательности связи:
 

  1. Ведущий отправляет импульс "Сброс”.
  2. Подчиненный (ые) отвечает (ют) импульсом «Присутствие».
  3. Ведущий отправляет команду ПЗУ, адресуя одно или несколько подчиненных устройств.
  4. Ведущий отправляет команду памяти.

 

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

 

Проверка циклическим избыточным кодом

Кодирование циклическим избыточным кодом (CRC) используется для гарантирования целостности принятых данных через 1-Wire.

Подробности по теории CRC в этом документе не
приводятся и в дальнейшем не обсуждаются. Если необходима информация по
CRC, то рекомендуется использовать [2].

Среди семейства 1-Wire обычно используются две
различные схемы CRC. Одна из них – 8-разрядная CRC (CRC8), другая –
16-разрядная CRC (CRC16). CRC8 используется в секторе ПЗУ всех
микросхем. CRC8 также используется в некоторых ИС для проверки других
данных, например, вводимых через шину команд. CRC16 используется
некоторыми ИС для проверки на наличие ошибок в больших наборах данных.

Аппаратный эквивалент 8-разрядного CRC используется
64-разрядным идентификатором и показан на рисунке 11. Блоки
представляют индивидуальные биты в 8-разрядном сдвиговом регистре.
Эквивалентное полиноминальное выражение для CRC: X8 + X5 + X4 + 1.



Рисунок 11 – Аппаратный эквивалент 8-разр. CRC, используемого в микросхемах 1-Wire

 

 

Аппаратный эквивалент 16-разрядного CRC используется
некоторыми ИС и показан на рисунке 12. Блоки представляют
индивидуальные биты в 16-разрядном сдвиговом регистре. Эквивалентное
полиноминальное выражение для CRC: X16 + X15 + X2 + 1.

 

 



Рисунок 12 - Аппаратный эквивалент 16-разр. CRC, используемого в микросхемах 1-Wire

 

 

Реализация

 

 

 

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

 

Рассмотрим программный подход к реализации протокола
1-Wire без задействования специальных аппаратных блоков
микроконтроллера. Преимуществом данного подхода является то, что из
аппаратных затрат потребуется только одна линия ввода-вывода общего
назначения (GPIO). Поскольку все линии ввода-вывода у
AVR-микроконтроллеров двунаправленные и содержат опциональные
подтягивающие резисторы, то AVR-микроконтроллер может управлять шиной
1-Wire без какой-либо внешней схемы. В случае, если номинал внутреннего
подтягивающего резистора не соответствует текущей конфигурации
подчиненных устройств, то понадобиться только один внешний резистор.
Недостатком данного подхода является возникновение задержек в процессе
генерации "Сброс/Присутствие” и передачи бит. Чтобы гарантировать
корректность временных интервалов на шине 1-Wire, прерывания должны
быть отключены на время передачи бит. Длительность интервала между
передачами двух бит никак не ограничивается. Таким образом, после
передачи каждого бита можно смело активизировать прерывания. В этом
случае генерация прерывания может возникать с задержкой, но ее
наихудшее значение не превысит длительности генерации сигнала
"Сброс/Присутствие” (менее 1 мс).

Драйвер УАПП с управлением по опросу использует
модуль УАПП, который входит в состав многих микроконтроллеров AVR. Он
используется для генерации сигнала необходимой формы на битном уровне.
Остальная часть драйвера эквивалентна программному. Основными
преимуществами данного драйвера по сравнению с программным –
компактность программного кода и отсутствие необходимости
манипулировать прерываниями во время передачи сигналов, т.к. УАПП
выполняет это автономно. Недостатки: требует двух линий ввода-вывода и
несложную внешнюю схему.

Драйвер УАПП с управлением по прерываниям использует
УАПП для генерации сигналов необходимой формы тем же способом, что и
драйвер УАПП с управлением по опросу. Дополнительным преимуществом
данного подхода является возможность автоматического приема-передачи до
255 бит данных.

Драйверы с опросом состояния

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

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

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

Количество подключаемых шин ограничивается восемью,
а перенос шины в пределах порта может конфигурироваться. Выводы,
которые не задействованы шинами 1-Wire, остаются незатронутыми.
Поскольку все шины 1-Wire подключены к одному и тому же порту, то
несколько операций может быть выполнено на одной или более шинах
одновременно. Это стало возможным благодаря аргументу pin или pins,
которые входит в интерфейс каждой функции. Данный аргумент должен
содержать маску для выводов, которые задействованы для работы.
Например, имеется возможность отправить сигнал СБРОС восьми шинам
одновременно, указав в качестве аргумента 0xff. Значение, возвращаемое
этой функцией будет битовой маской всех шин, где один или более
подчиненных устройств сгенерировали сигнал «присутствие». Данная
битовая маска может подставляться в качестве аргумента pins в функцию,
которая вводит команду «Пропуск ПЗУ». Все функции в этой реализации
поддерживают возможность выбора вывода (pin). Следует руководствоваться
общим правилом: все команды записи могут адресовать несколько шин
одновременно. Команды чтения могут адресоваться только к одной шине.

Инициализация

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

Функции битового уровня

Функции битового уровня реализованы в соответствии с
рекомендациями по применению AN126 компании Dallas Semiconductors. Все
параметры временной диаграммы выдержаны в соответствии с
рекомендованными значениями в этом документе. Значения приведены в
таблице 3.

Таблица 3 – Значения используемых задержек времени

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Параметр Рекомендованная задержка, мс
A 6
B 64
C 60
D 10
E 9
F 55
G 0
H 480
I 70
J 410

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Обратите внимание, что в стандартном режиме задержка G равна 0.

 

 

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

Функции уровня передачи бит реализованы так, как
показано на рисунке 13. Обратите внимание, что функция "Определение
присутствия” отправляет сигнал «Сброс» и считывает "Сигнал
присутствие”. Также следует учесть, что все функции уровня передачи бит
могут адресоваться к нескольким шинам одновременно.



Рисунок 13 – Функции слоя передачи бит

 

 

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

 

 

Реализация на УАПП с опросом

При использовании данного подхода за параметры всех
временных диаграмм отвечает модуль УАПП. Для отправки бита
устанавливается соответствующая скорость связи УАПП, а затем в регистр
данных записывается значение, которое вызовет генерацию сигнала
желаемой формы (см. «Генерация сигналов с помощью УАПП”).

Инициализация

Для инициализации интерфейса 1-Wire при использовании
рассматриваемого драйвера, первоначально необходимо инициализировать
модуль УАПП с корректными параметрами: разрешить передачу и прием,
установить формат данных 8 бит, отключить паритет, установить генерацию
одного стоп-бита и задать скорость связи до 115,2 кбод.

Установка данных параметров приведет к переходу
вывода TXD в неактивное состояние УАПП, которое равно лог. 1.
Подчиненные устройства воспримут, возникающий при этом, нарастающий
фронт, как сигнал «Сброс» и ответят на него сигналом «Присутствие».

Функции битового уровня

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

Интерфейс с данными функциями такой же, как и у
драйвера с программной реализацией. Однако, аргумент ‘pins’ в данном
случае опускается. Набор макросов делает возможным вызвать данные
функции с или без аргумента pins. Если же аргумент pins будет указан,
то макрос его исключит.

Функции высокого уровня

Обратите внимание, что многие функции в этом слое
получают аргумент с типом «unsigned char pointer» (символьный указатель
без знака). Данный указатель адресует массив из 8 байт памяти, который
может использоваться функцией. Расположение, а также редкая
инициализация, этих массивов должна выполняться пользователем. В данном
документе полагается, что перед вызовом функции была выполнена
инициализация памяти каки<