Электронные идентификаторы iButton
iButton — это семейство микроэлектронных устройств, разработанных фирмой Dallas Semiconductor, USA (в настоящее время выпускаемых фирмой Maxim).
Каждое устройство iButton заключено в стальной герметичный цилиндрический корпус и имеет уникальный номер (ID), записываемый в процессе изготовления.
Все устройства iButton помещаются в стальной цилиндрический корпус MicroCan, выполнены по жестким стандартам и выдерживают серьезные механические и температурные нагрузки.
Обмен данными с iButton производится через интерфейс 1-Wire. Информация в этом интерфейсе передается по единственному проводнику. Питание iButton получают из этого же проводника, заряжая внутренний конденсатор в моменты, когда на шине нет обмена данными.
Скорость обмена достаточна для обеспечения передачи данных в момент касания контактного устройства.
Для подключения iButton к компьютеру компанией «Аладдин Р.Д.» выпускаются считыватели (адаптеры), преобразующие сигналы стандартных портов компьютера (RS232, USB) в сигналы 1-Wire.
Брелки-держатели позволяют надежно закрепить «таблетку» iButton.
| Тип | Наименование | Объем памяти | Особенности |
|---|---|---|---|
| DS-1990 | Электронный идентификатор Touch Serial Number | 0 | |
| DS-1991 | Электронный ключ с защищенной памятью Touch MultiKey | 4 страницы по 48 байт | Первые три страницы имеют защиту от доступа Снята с производства, рекомендуем заменять на DS-1977 |
| DS-1992 | Электронный ключ с памятью 1К-бит Touch Memory 1K-bit | 4 страницы по 32 байта | |
| DS-1993 | Электронный ключ с памятью 1К-бит Touch Memory 4K-bit | 16 страниц по 32 байта | |
| DS-1994 | Электронный ключ с памятью 1К-бит Touch Memory 4K-bit | 16 страниц по 32 байта | Дополнительно часы/календарь реального времени |
| DS-1995 | Электронный ключ с памятью 1К-бит Touch Memory 16K-bit | 64 страницы по 32 байта | |
| DS-1996 | Электронный ключ с памятью 1К-бит Touch Memory 64K-bit | 256 страниц по 32 байта | |
| DS-1977 | Электронный ключ с защищенной памятью Touch MultiKey | 4 страницы по 48 байт | Первые три страницы имеют защиту от доступа Рекомедуется для замены устаревшей модели DS-1991 |
48-битный уникальный серийный номер, присваиваемый методом «прожигания» лазером при изготовлении чипа. Первый байт ROM-памяти содержит код семейства, восьмой байт – CRC первых семи байт.
| Размер EEPROM-памяти | 0 — 8192 байт (в зависимости от модели) |
| Рабочий диапазон температур | От -40°С до +70°C |
| Температура хранения | От -55°C до +85°C |
| Используемый интерфейс | 1-Wire |
| Мин. время записи/стирания | 5 мс |
| Рабочее напряжение питания | 0,5 В — 7 В |
| Долговечность | 1 000 000 циклов |
| Срок хранения данных в памяти | 10 лет |
| Макс. потребляемый ток | 5 мкА |
| Устройства чтения | Считыватели iButton |
| Назначение | Системы идентификации |
Считыватели для iButton
Cчитыватели представляют собой контактные устройства, предназначенные для считывания / записи информации при прикосновении к ним электронного идентификатора («таблетки») iButton.
Считыватель имеет удобный пластмассовый корпус и снабжен клеящейся подложкой, что позволяет прикрепить его к поверхности стола или к корпусу монитора. Форма и устройство считывателя защищены патентом РФ на полезную модель (патент №32353 от 22 апреля 2003 г.).
Для удержания «таблетки» при длительной работе считыватели могут иметь специальный фиксатор.
Для подключения к компьютеру или к другому оборудованию считыватели могут иметь различные варианты адаптеров:
- с адаптером для порта RS-232
- для USB-порта
- без адаптера с разъемом RJ-11
- без адаптера.
Возможные варианты исполнения считывателей:
- Цвет корпуса и провода: черный, серый, белый, на заказ
- Без фиксатора «таблетки» (только касание) / с фиксатором
- Различная длина провода (стандартная длина — 0,7 м.)
- Логотип заказчика на фронтальной части корпуса считывателя.
Для крепления «таблетки» iButton и удобной работы рекомендуется приобрести брелок-держатель, позволяющий прикрепить его на связку ключей.
Модели считывателей для iButton
RDS-01
Контактное устройство без фиксатора, телефонный провод 70 см, разъем DB9 для последовательного порта RS-232 (9 pin).
RDS-01 USB
Контактное устройство без фиксатора для USB порта.
RDS-03
Контактное устройство без фиксатора, телефонный провод 70 см, разъем RJ-11.
RDS-04
Контактное устройство без фиксатора, телефонный провод 70 см, без разъема.
RDS-11
Контактное устройство с фиксатором, телефонный провод 70 см, разъем DB9 для последовательного порта RS-232.
RDS-11 USB
Контактное устройство с фиксатором для USB порта.
RDS-13
Контактное устройство с фиксатором, телефонный провод 70 см, разъем RJ-11.
RDS-14
Контактное устройство с фиксатором, телефонный провод 70 см, без разъема.
Брелки-держатели для iButton
Брелок служит для надежного удержания электронного идентификатора («таблетки») iButton и удобной работы с ней при использовании практически любых считывателей.
Брелок выполнен из прочной пружинящей неломающейся пластмассы, позволяет многократно менять «таблетку» iButton, крепящуюся в своем посадочном месте с помощью двух защелкивающихся направляющих-фиксаторов.
Брелок с «таблеткой» удобно носить на связке с ключами.
Форма и устройство брелка-держателя защищены патентом РФ на полезную модель.
Возможные варианты поставки:
- Цвет корпуса: черный, зеленый, белый, красный, синий, на заказ
- Логотип заказчика на корпусе.
Модели брелков-держателей для iButton
RDS-21
Брелок для крепления «таблетки» iButton
RDS-20
Брелок для крепления «таблетки» iButton (вариант для использования совместно с контактными устройствами RDS-11 – RDS-14)
Новый обзор электронных ключей-идентификаторов iButton от фирмы Dallas Semiconductor.
В 1991 году компания Dallas Semiconductor выпустила свои первые электронные ключи-идентификаторы серии DS199х. В начале для них было запатентован товарный знак «Touch Memory», которое достаточно полно отражало основные свойства этих изделий. Touch — переводится «прикоснись», Memory — «память». Действительно, все ключи, которые внешне выглядят как металлические дисковые батарейки, в обязательном порядке имеют внутри микросхему-ПЗУ с уникальной для каждого устройства двоичной 48-разрядной кодовой комбинацией (идентификационным номером), а считывается эта комбинация при прикасании металлическим корпусом ключа к металлическому же зонду-считывателю.
Новый электронный ключ из Далласа стал популярным среди потребителей, и, как следствие, стали появляться новые модели. Последнее изделие этого ряда DS1954 имеет внутри своего корпуса специальный микропроцессор для шифрования информации, разработан был также идентификатор со встроенным термопреобразователем, планируется реализовать идеи размещения других схем в стандартизованном компанией Dallas Semiconductor металлическом корпусе. Поэтому с начала 1997 года Dallas Semiconductor заявила о смене названия всех своих идентификационных ключей на iButton(Information Button — «таблетка с информацией»), как более общее и охватывающее весь ряд изделий в настоящем и в будущем.
Данное сообщение содержит описание конструкции, принципов работы и обзор последней номенклатуры электронных ключей из Далласа в соответствие с новой терминологией.
Внешний вид электронного ключа iButton
Все электронные ключи-идентификаторы iButton внешне похожи на дисковую металлическую батарейку (См. Рис 1). Металл представляет собой нержавеющую сталь. Диаметр диска около 17 мм, толщина 3,1 мм или 5,89 мм. Диск состоит из двух электрически разъединенных половинок.
Внутри он полый. В герметичную полость заключена электронная схема на кремниевом кристалле. Выход схемы соединен с половинками диска двумя проводниками. Половинки диска образуют контактную часть однопроводного последовательного порта. При этом через центральную часть идет линия данных, внешняя оболочка — земля. Для того чтобы произошел обмен информации iButton с внешними устройствами, необходимо прикоснутся обеими поверхностями половинок металлического диска к контактному устройству (зонду), также состоящему из двух электрически не связанных, проводящих электрический ток частей.
Обычно для материала контактов зонда используют нержавеющую сталь или медный сплав, с нанесенным на него защитным токопроводящим покрытием. Процесс касания к зонду показан на Рис.2.
Большая площадь поверхности контактов защищает систему от неточного совмещения при подключении по причине «человеческого фактора» или при автоматизированном касании, когда идентификатор и зонд расположены на различных подвижных механизмах . Кроме того дисковая форма корпуса направляет и очищает контакты, гарантируя надежное соединения, а закругленный край корпуса легко совмещается с зондом.
Области применения
Устройства семейства iButton предназначены для различных секторов рынка, в зависимости от их типа. Наиболее распространены они сейчас в качестве:
Идентификационных карточек персонала для систем ограничения доступа в здания или отдельные помещения. Особенно они популярны в секторе рынка с повышенным уровнем воздействия внешней среды и условий эксплуатации, то есть там, где традиционные карточки или устройства для считывания с них информации могут быстро выйти из строя.При этом, в зависимости от категории защищенности объекта, применяются различные типы iButton. Так, для ограничения доступа в подъезды жилых домов, где не предъявляются повышенные требования к системам ограничения доступа, используют самые дешевые iButton DS1990, которые стоят около 2 долларов. В подъезды iButton устанавливают обычно в единой системе с домофоном — переговорной и управляющей дверным электромагнитным замком системой. Учитывая низкую цену считывающего устройства — около 25 долларов, установщики домофонов получают беспрецендентно низкие цены и на всю электронную систему управления замками, при очень высоких потребительских параметрах, в особенности, защищенности от внешних воздействий. В таких системах жильцам подъезда выдаются iButton DS1990, в качестве ключей для подъездного замка. Закрепленные на пластмассовом брелке, который можно носить в одной связке вместе с обычными механическими ключами, iButton можно ронять на землю или бетонный пол, они не боятся воды, льда (предел рабочей температуры -40С), кислот, масел, бензина, электромагнитных полей. Корпус рассчитан на 1млн. касаний к зонду. Металлический зонд также хорошо вписывается в жесткие эксплуатационные нагрузки общих входных дверей подъезда.
Широко используются iButton также в качестве идентификационных карточек ограничения доступа в офисные помещения и на промышленные предприятия.
В этих вариантах использования часто закрепляют диск iButton на личной пластиковой карточке персонала, где дополнительно может быть размещена фотография и другие данные о специалисте.
Дополнительные возможности по повышению степени ограничения доступа в помещения позволяют реализовывать iButton с защищенной паролем энергонезависимой памятью, а также новые iButton DS1954 с микропроцессором-шифратором с длиной кода ключа 1024 бит, энергонезависимой памятью и часами-календарем. Последняя модель имеет высокую степень защиты информации. Такие системы обычно используются в банках и на предприятиях с повышенными требованиями безопасности.
Идентификационные метки оборудования и аппаратуры. Специальное приспособление закрепляет диск iButton на плате оборудования или в его корпусе. Уникальный номер позволяет производителю идентифицировать свое оборудование или защищать его от подделок. IButton с энергонезависимой памятью могут дополнительно хранить параметры эксплуатации, гарантийные обязательства и другие служебные характеристики изделий.
Аппаратный ключ в системах защиты информации. Используется для защиты программного обеспечения компьютеров. Защищаемая программа имеет встроенную процедуру обращения через один из портов компьютера к идентификационному номеру или энергонезависимой памяти iButton. Сам идентификатор закрепляют в специальном адаптере к порту. Хозяин программы распределяет по ней защитные метки с номерами конкретной iButton или с содержимым его энергонезависимой памяти. В случае несоответствия номера или содержимого энергонезависимой памяти идентификатора этим записями, программа не работает.
Принципы конструкции iButton и считывающих устройств для них
Как отмечалось выше, iButton представляют собой микросхему, помещенную в дисковый металлический корпус. В структурной схеме этой микросхемы в обязательном порядке присутствуют однопроводный порт, логика управления и ПЗУ в виде 64-битного блока, содержащего 48-битный идентификационный номер, 8-ми битный номер типа изделия и 8-битный код для контроля. Идентификационный номер записывается в микросхему при помощи лазера во время ее изготовления. Он не может быть изменен в течение всего срока службы прибора. Dallas Semiconductor не выпускала и никогда не планирует выпускать iButton с одинаковыми идентификационными номерами. Комбинаций из 48-разрядов вполне достаточно даже при самых оптимистичных объемах выпуска в сотни миллионов ключей в год, чтобы сотни лет номера их не повторялись.
При считывании идентификационного номера, считывающее устройство вычисляет через принятый номер код контроля по общей для всех iButton формуле и сравнивает его с принятым кодом контроля. При совпадении, запускается процесс двунаправленной передачи данных по принципу «запрос-ответ». Считывающее устройство выступает здесь в роли мастера, а iButton выполняет его команды. На одной двухпроводной линии параллельно к одному порту мастера могут быть подключены одновременно в общем случае значительное количество iButton. Ограничения определяются особенностью протокола со скоростью обмена до 115 кБод и физической длиной линии до 300 м, ограниченной процессами затухания сигнала. Хотя, конечно, с помощью специальных схем усилителей и ретрансляторов расстояние можно увеличить практически неограниченно. Интересной особенностью принципов схемотехники самой iButton является то, что питание ее микросхемы формируется от «паразитного источника» — конденсатора емкостью 800 пФ, который заряжается через диод от порта зонда в момент касания. Для микропотребляющих МОП-схем iButton емкости такого источника вполне достаточно. Схема входных цепей iButton в момент касания к микроконтроллеру показана на Рис. 3.
Кроме обязательных составляющих различные типы iButton могут содержать энергонезависимую SRAM (данные хранятся не менее 10 лет благодаря встроенной в корпус литиевой батарейке), однократно программируемую память, часы-календарь реального времени, термодатчик и, наконец, криптографический микропроцессор.
Практически любой стандартный микроконтроллер, например 8051-совместимый, или компьютер может быть использован для обмена данными с iButton. При этом металлическая контактная площадка зонда соединяется обычной витой парой с портом микроконтроллера или компьютера.
В случае, если в качестве мастера для считывания iButton используется персональный компьютер, то в простейшем случае схема соединения его с контактной площадкой достаточно проста.
Схема эта показана на Рис.4. В ней могут быть использованы отечественные кремиевые маломощные стабилитроны типа КС139 и КС162 и любые маломощные диоды Шотки типа КД808. Dallas Semiconductor поставляет адаптер DS9097, который внешне оформлен в виде стандартной розетки 9-ти или 25-выводного разъема последовательного порта. Распаянная внутри адаптера схема аналогична показанной на Рис. 4. Этот адаптер обеспечивает расстояния в десятки метров до контактной площадки и для простых линий с одним узлом приема информации его вполне достаточно. Схемы на расстояния до узла контакта в сотни метров сложнее незначительно. В них используется драйвер однопроводной линии DS2480.
Описание протокола iButton
Данные в соответствие с протоколом iButton Standarts передаются в дискретные временные интервалы, которые называются временными сегментами (типовая длительность около 60мкс) с помощью коротких и длинных импульсов, аналогичных азбуке Морзе. При этом инициатором обмена (ведущим) всегда является считывающее устройство. При соприкосновении с зондом или его эквивалентом прибор iButton выдает ответный сигнал, за которым следует код семейства, 48-битный серийный номер iButton и код контроля.
Длинные или короткие активные состояния логического нуля во временных сегментах представляют единицы или нули. Ведущая система запускает передачу каждого бита.
В общем случае iButton может работать относительно мастера как на считывание, так и на запись информации в свою энергонезависимую память. Для записи логической 1 в течение типового сегмента времени однопроводная линия передачи должна за время выборки данного вернуться в состояние логической 1, для записи нуля в течение всего этого временного окна линия должна находиться в состоянии логического 0 (Рис 5.).
Синхронизация временного сегмента осуществляется отрицательным фронтом сигнала, который формируется мастером, при этом длительность состояния логического нуля на однопроводной линии связи должна составлять не менее 1мкс.
В цикле считывания идеальный момент стробирования считываемого данного — это 8мкс после начала временного сегмента (Рис 6). Задающее устройство подает на однопроводную линию активный логический 0 на время синхронизации данного (не менее 1мкс), после чего переходит в режим приема. Далее в течение всего времени выборки данного состояние линии определяется прибором iButton . После начала временного сегмента состояние линии с помощью пассивной нагрузки выдерживается на уровне логической 1 от 15 до 60мкс. Возможна приостановка сеанса связи на любое время между временными сегментами, при этом на однопроводной линии связи поддерживается состояние логической 1. Во всех сеансах связи первым передается младший значащий разряд данного.
Подробно ознакомиться с протоколом iButton Standarts можно в многочисленных изданиях самой фирмы Dallas Semiconductor в виде книг, CDROM или по Интернету (сервер iButton.com).
Обзорная таблица iButton представлена в Табл.1.
Для упрощения восприятия обзора попытаемся внести элементы классификации в семейства iButton. Необходимо отметить, что делается это самовольно — Dallas Semiconductor пока этого еще не сделал и представляет свои семейства по принципу возрастания номера маркировки.
Основной раздел между iButton можно провести по признаку наличия средств защиты области данных от несанкционированного пользователя. В этом случае явно выделяются два типа: iButton с незащищенной областью данных и iButton со специальной защитой данных.
В данной части обзора Вы сможете найти описание основных свойств и особенностей устройства iButton с незащищенной областью данных. Мы также их разделили на группы, но приборы внутри группы уже мало чем отличаются по своей структурной схеме. Отличие состоит обычно в объеме памяти того или иного вида.
| Табл. 1. Обзорная таблица iButton | ||
| Маркировка | Описание | Емкость памяти |
| DS1920 | Цифровой термодатчик | 16битЕЕРРОМ |
| DS1954 | Криптографический микропроцессор | 32К ROIVI+6K NVSRAM |
| DS1963 | Электронный кошелек | 4096 бит NVSRAM |
| DS1971 | EEPROM память | 256+64 бит EEPROM |
| DS1981U | EPROM память и специальный номер | 512битЕРРОМ |
| DS1982U | EPROM память и специальный номер | 1024 бит EPROM |
| DS1982 | EPROM память | 1024 бит EPROM |
| DS1985 | EPROM память | 16384 бит EPROM |
| DS1986 | EPROM память | 65536 бит PROM |
| DS1990A | Только номер | нет |
| DS1991 | Энергонезависимая память с паролем | 1344 бит NVSRAM |
| DS1992 | Энергонезависимая память | 1024 бит NVSRAM |
| DS1993 | Энергонезависимая память | 4096 бит NVSRAM |
| DS1994 | Энергонезависимые память и часы | 4096 бит NVSRAM |
| DS1995 | Энергонезависимая память | 16384 бит NVSRAM |
| DS1996 | Энергонезависимая память | 65536 бит NVSRAM |
1. iButton с уникальным серийным номером
Группа состоит из одного семейства — DS1990А. Это первое изделие Dallas Semiconductor, впервые поступившее в продажу в 1991 году. Имеются две разновидности по толщине корпуса. DS1990A-F5 — имеет толщину корпуса 5,89 мм, а DS1990A-F3 толщину 3,1 мм.
По схемотехнике DS1990A самая простая iButton и имеет только ПЗУ с уникальным 48-разрядным номером, кодом семейства и кодом контроля. Доступ к ПЗУ происходит через интерфейсную схему, поддерживающую протокол iButton Standart (блок-схема на Рис. 2). Питается микросхема DS1990A, как и все iButton, от «паразитного источника» (на рисунке не показан), состоящего из внутренних выпрямителя и конденсатора (см. первую часть обзора). Энергия в этот источник поступает через резистор 5 КОм открытого коллектора порта считывателя в момент времени, когда контактная часть считывателя и iButton прикоснулись друг к другу.
DS1990A не имеет никаких средств защиты области данных пользователя, так как области этой как таковой и нет. Уникальный номер, записанный в ПЗУ на заводе в Далласе, доступен для любого считывающего устройства-эонда, поддерживающего протокол iButton Standart.
Четыре КОМАНДЫ ПЗУ составляют систему команд iButton DS1990А: ЧТЕНИЕ ПЗУ, СОВПАДЕНИЕ ПЗУ, ПРОПУСК ПЗУ и ПОИСК ПЗУ. В режиме с одним узлом считывания достаточно команды СЧИТЫВАНИЕ ПЗУ. Остальные команды необходимы для работы в сетевом варианте применения для исключения конфликтов при одновременном касании многих iButton к разным считывающим контактам, подсоединенным к одной линии данных.
Порядок выдачи содержимого ПЗУ при исполнении команды ЧТЕНИЕ ПЗУ следующий: код семейства(01H для DS1990A ), 48 бит уникального номера и последним идет 8-битный код контроля. Передача идет побитно, младший значащий разряд идет первым. Прием считается завершенным, только если вычисленный мастером на основе уникального номера по стандартной формуле контрольный код, совпадает с принятым контрольным кодом из ПЗУ iButton. Полный цикл считывания ПЗУ длится около 5мс.
2. iButton с энергонезависимой статической памятью
Группа этих iButton включает в себя четыре семейства: DS1992L, DS1993L, DS1995L и DS1996L. Буква L в наименовании означа- ет наличие трехвольтовой литиевой батарейки. Энергия батарейки использует- ся для питания микромощной статической памяти (SRAM) в течение всего срока службы этих iButton, который составляет не менее 10 лет.
Для коммуникационных процессов здесь, как и в других iButton, используется «паразитный» внутренний источник — выпрямитель+конденсатор. В случае разряда батарейки по какой-либо причине, имеется возможность доступа только к ПЗУ.
Как и у всех iButton, ПЗУ этих семейств имеет идентификационный номером, код семейства и код контроля (См. Рис. 3). Каждое семейство отличается от другого только размером статической энергонезависимой памяти.
Структурно эта память разбита на страницы по 32 байта и имеет систему адресации. DS1992 имеет всего четыре таких страницы, DS1993 — 16 страниц, DS1995 — 64 страницы, DS1996 — 256 страниц. Содержимое страниц может быть считано любым устройством считывания, поддерживающим iButton Standart.
Скорости записи данных и считывания одинаковы и составляют в обычном режиме 16,3 Кбит в секунду. Модели DS1995 и DS1996 поддерживают режим ускоренного обмена «overdrive», отличие которого от обычного в сокращенных примерно в 10 раз длительностях цикла инициализации и временных окон для данных. Так инициализация происходит за время от 48мкс, а достаточный временной интервал для данных 6мкс. Скорость полудуплексного обмена данными в режиме «overdrive» 142Кбит в секунду. Запись в энергонезависимую SRAM осуществляется диспетчером памяти через 32-байтную блокнотную память, которая выполняет функцию буфера. Блок данных записывается вместе с блоком адреса для этих данных. Данные и адрес верифицируются, то есть считываются обратно мастером из блокнотной памяти, и проверяются им на предмет идентичности с отправленными. Только после удачного исхода мастер командой «копировать блокнотную память» разрешает переносить данные из блокнотной памяти на выбранную страницу основной энергонезависимой SRAM. Формат записываемых данных может быть от 1 байта до 32 байт. Считываются данные минуя блокнотную память.
Восемь команд поддерживаются данным типом iButton: четыре КОМАНДЫ ROM, три команды ЗАПИСИ, СЧИТЫВАНИЯ и КОПИРОВАНИЯ БЛОКНОТНОЙ ПАМЯТИ и команда ЧТЕНИЕ ПАМЯТИ.
3. iButton с энергонезависимой однократнопрограммируемой EPROM-памятью.
В отличие от семейств с энергонезависимой статической памятью, в этих приборах не используются литиевые батарейки, хотя и имеется память данных. . Память данных здесь однократнопрограммируемая EPROM. Напряжение программирования 11,5В +0,5В, ток 10мА.
Питание всей схемы осуществляется только от «паразитного» источника. Отсутствие литиевой батарейки позволяет Dallas Semiconductor выпускать эти модели, как в толстом F5, так и в тонком F3 корпусах. Группа включает семейства DS1981U,DS1982U, DS1982,DS1985 и DS1986. У всех семейств имеется стандартного вида ПЗУ, но разный объем памяти данных. Последняя адресуется и разбита на страницы по 32 байта. DS1981 имеет 2 страницы,DS1982 — 4 страницы, DS1985 -64 страницы и DS1986 — 256 страниц. Модели с маркировкой U отличаются от остальных моделей тем, что 12 бит из общего пространства уникального номера занимает прошивка 5E7H, остальные же 36 бит имеют уникальную прошивку.
Для повышения надежности занесения данных в однократнопрограммируемую память данных в электрическую схему введены дополнительные элементы: детектор напряжения, генератор контрольной суммы, регистр статуса и 8-битная блокнотная память (см. Рис. 4).
Чистая EPROM имеет записанными логические единицы. Однажды установленный в логический ноль бит памяти невозможно в дальнейшем изменить, однако оставшийся в единичном состоянии может быть изменен в логический ноль при повторном программировании. Каждая страница памяти данных может быть защищена от попытки повторной записи в нее данных, установкой соответствующего бита регистра статуса в состояние логического нуля. Регистр статуса программируется только однократно, поэтому обратно открыть для записи страницу уже будет нельзя. Кроме байта защиты памяти данных, регистр статуса имеет байты переадресации страниц. Запись в эти байты позволяет переписать содержимое страницы на другую открытую для записи страницу и дополнить ее содержимое модифицированными данными. Для приложений, требующих модификации данных, Dallas Semiconductor предлагает брать модели с заведомо большим количеством страниц.
Что касается механизма записи информации в память данных этого семейства, то он несколько усложнен. Адреса, коды команд и данные проверяются исключительно побайтно. Мастер считывает код, вычисленный генератором проверочного кода, и сравнивает со своими вычислениями. Только после этого разрешается продвижение на очередной байт в процедуре записи.
Протокол обмена с мастером поддерживает восемь команд: четыре ПЗУ КОМАНДЫ, команды с памятью данных ЧТЕНИЕ и ЗАПИСЬ, а также команды для регистра статуса ЧТЕНИЕ и ЗАПИСЬ. Модель DS1986 имеет возможность работать в скоростном режиме «overdrive».
В приложениях не требующих частого обновления данных эти iButton находят применение, вследствие своей дешевизны.
4. iButton с EEPROM памятью данных
Группа пока представлена одним семейством DS1971. Это новое семейство выпускается с 1997 года. Поставляется DS1971 в двух корпусах F3 и F5. Кроме стандартного ПЗУ, эта модель содержит память данных типа EEPROM в виде одной 256 битной странички. Данные могут неоднократно перезаписываться только постранично.
Напряжение программирования +5В. Запись происходит через блокнотную память, объем которой также 256 бит (см. Рис. 5). После верификации данных, содержимое блокнотной памяти переносится в память данных одним блоком. Имеется регистр для занесения служебной информации — РЕГИСТР ОДНОКРАТНОЙ ЗАПИСИ. Данные в него заносятся через его блокнотную память и могут быть записаны только один раз. В дальнейшем этот регистр открыт только для считывания. Регистр однократной записи может использоваться производителем оборудования с использованием DS1971 для занесения служебной информации, например, дата выпуска, номер партии и т.п.. Событие о том, что запись в РЕГИСТР ОДНОКРАТНОЙ ЗАПИСИ произведена, отражается в состоянии регистра СТАТУС-ПАМЯТЬ. Два бита его устанавливаются при этом в логический ноль. Мастер может только считать состояние этого регистра.
Одиннадцать команд возможны в работе с DS1971: четыре КОМАНДЫ ПЗУ, три команды ЧТЕНИЕ, ЗАПИСЬ и КОПИРОВАНИЕ блокнотной памяти, три команды регистра однократной записи — ЧТЕНИЕ, ЗАПИСЬ и КОПИРОВАНИЕ С ЗАМКОМ и команда ЧТЕНИЕ СТАТУС-ПАМЯТИ.
5. iButton с энергонезависимыми таймером и статической памятью.
Эта группа представлена одним семейством DS1994L. Микросхема его содержит обычную ПЗУ с идентификационным номером, кодом семейства и кодом контроля, статическую память 16 страниц по 32байта каждая, кварцевый генератор часовой частоты 32768 Гц, таймер-календарь в двоичном формате, программируемые счетчики циклов включения-выключения, интервальный таймер.
Статическая память и все элементы таймера энергонезависимы за счет литиевой батарейки. Режимы работы таймерной части DS1994 определяют два его регистра: регистр статуса и регистр управления. В регистр статуса помещают свои флаги по наступлению заданного события таймер-календарь, интервальный таймер и счетчик циклов. Состояния флагов доступны для считывающего прибора и могут быть использованы им для принятия решения. Календарь таймера организован так, что необходима предварительная установка даты и времени отсчета. Исход времени будет затем отсчитываться от этой даты. Емкость по времени календаря 136 лет.
Состояние регистра управления определяет доступность ресурсов как таймера, так и страниц энергонезависимой памяти. Установки его битов останавливают генератор, запрещают изменения установок календаря, интервального таймера, счетчика циклов, чтение общей энергонезависимой памяти.
DS1994 удобно использовать для ограничения срока работы приборов или устройств. В этом варианте он устанавливается в специальном зажиме, по аналогии с дисковыми аккумуляторами, и имеет постоянное соединение со схемой устройства.
Система команд DS1994 содержит как типичные для iButton команды ПЗУ так и команды работы с таймерами и счетчиком.
6. Автономный цифровой термопреобразователь в корпусе iButton
Представлен одной моделью DS1920. Внутри стандартного для iButton корпуса толщиной F3 или F5 установлена микросхема, осуществляющая полный цикл преобразования температуры окружающей ее среды в 9-разрядный цифровой код. Датчиком температуры служит термистор, также установленный в корпусе DS1920. 9-разрядный АЦП осуществляет преобразование сопротивления датчика, как функцию температуры, в цифровой код.
Преобразование происходит в момент касания DS1920 зондом. Питание поступает от порта зонда. Имеется особенность в организации питания, которая обусловлена повышенными токами потребления микросхемы DS1920 в момент преобразования. Рекомендуется вместо выходного открытого коллектора с нагрузочным резистором 5 Ком, использовать «сильно открытый коллектор», где резистор заменен полевым транзистором, открытым в период преобразования и пропускающим больший ток, ввиду меньшего сопротивления.
Диапазон температур измеряемый DS1920 лежит в интервале от -55С до +100С, время преобразования 0,2 секунды, точность 0,5С в диапазоне от 0С до +70С.
Имеются специальные триггеры порогов температуры, значения которых записываются в их память EEPROM. Триггеры сообщают мастеру, при его обращении, о превышении порогов, что бывает удобно при поиске узла измерения в сетевом варианте, когда в одну линию соединены большие количества DS1920.
Интерфейс и ROM DS1920 соответствуют всем требованиям iButton Standart, а система команд состоит как из обычных для iButton ПЗУ КОМАНД, так и из специфичных ТЕМПЕРАТУРНОЕ ПРЕОБРАЗОВАНИЕ, ВЫБОРКА СОСТОЯНИЯ ПОРОГА и команд работы с БЛОКНОТНОЙ ПАМЯТЬЮ.
Типичным способом использования DS1920 является закрепление его на объекте с использованием специальных дисков с липкими поверхностями или пластиковых зажимов на винтах. При этом можно в параллель соединить проводниками несколько приборов, а опрос вести переносным зондом из одной точки. По уникальному номеру нетрудно будет выяснить место измерения для каждой точки температурных измерений.
В заключение хотелось бы отметить, что Dallas Semiconductor поставляет программное обеспечение DS0621-SDK для работы со всеми типами iButton. Оно специально предназначено разработчикам и содержит драйверы для DOS, Windows 3.1, Windows-95/NT. Имеются варианты процедур работы с iButton, написанные на ассемблере микропроцессоров MCS-51, на С, на Паскале, Дельфи, Visual Baisic. В пакете представлена также оболочка TMEX для сетевых систем с использованием iButton. Утилиты этой оболочки включают команды для сети iButton , сходные с командами COPY, FORMAT, DIR, RENAME, DELETE, DIR и т.п.. Dallas Semiconductor поставляет готовый адаптер для последовательного порта (25 у.е. в розницу). Внешний вид дан ниже:
Домофонный мультиключ и всё про имитацию «таблеток»
Да, это жутко избитая тема. Универсальный домофонный ключ «таблетку» делал наверное каждый второй, кто начинал изучать микроконтроллеры. В Интернете очень много и статей на эту тему, и готовых решений. Однако, интерес к этому угасать не перестаёт даже с массовым переходом на RFID. Это не удивительно, ведь многим хочется собрать такое устройство, которое выполняет не только весьма интересную задачу, но ещё и всегда с собой. К тому же оно не такое уж сложное в изготовлении.
В этом посте мне хотелось бы собрать в одном месте всю необходимую информацию для тех, кто хочет изготовить такой ключ. Сейчас я постараюсь рассказать о том, какими бывают контактные домофонные ключи, как они работают, как их имитировать, какие при этом бывают подводные камни, а также рассказать о своей реализации такого устройства и о том, как можно собрать аналогичное самому.
Внимание! Этот ключ не позволяет нелегально проникать куда-либо. Это устройство лишь для того, чтобы носить один ключ вместо нескольких.
Хотя ничто не мешает вам записать в него универсальные коды открытия домофонов.
Типы домофонных ключей «таблеток»

На самом деле подобные ключи в корпусе MicroCAN бывают разных типов, хотя внешне и выглядят почти одинаково. Объединяет их только то, что ключ имеет два контакта — земля и данные, при этом используется паразитное питание, т.е. ключ питается непосредственно от линии данных. Для открытия двери используется серийный номер, который даётся на заводе. То есть это не ключ программируется на открытие домофона, а в память домофона заносится список ключей, которые могут его открывать. Рассмотрим их подробнее.
iButton
Самый популярный тип домофонных ключей — это iButton, а именно DS1990A от компании Dallas, работает по протоколу 1-Wire. Протокол весьма хитрый, подразумевает двустороннее взаимодействие — на ключ можно отправлять различные команды, на которые он по-разному реагирует. Серийный номер имеет размер в шесть байт, что даёт 2 8*6 = 281474976710656 различных комбинаций и подразумевает, что все выпущенные ключи должны быть уникальны. Если вам повезло, и у вас оригинальный iButton, то этот номер в шестнадцатеричном виде должен быть выгравирован на нём лазером:

То есть теоретически чужой такой ключ можно подделать, если просто записать куда-то или сфотографировать эти цифы!
Для взаимодействия с iButton достаточно подключить его к микроконтроллеру и подтянуть линию данных к питанию (2.8-5 вольт) через резистор:

Скорее всего для многих это всё уже старо как мир, но всё-таки расскажу кратко принцип работы 1-Wire. Обмен данными происходит за счёт поочерёдного прижимания линии к земле, информация при этом кодируется длительностью таких сигналов. Происходит это примерно так:
- Reset — мастер прижимает линию к земле как минимум на 480 микросекунд, это говорит о начале передачи данных.
- Presence — через некоторое время ключ отвечает импульсом около 120 микросекунд, что подтверждает его наличие на линии.
- Команда — мастер посылает команду из восьми бит, при этом логическая единица — это 1-15 микросекунд, а ноль — 60-120.
Далее всё зависит от посланной команды. Обычно это 33h — «READ ROM«, чтение серийного номера, после которого мастер читает 64 бита (1 байт — тип устройства, 6 байт — сам номер, 1 байт — CRC). Чтение каждого бита инициализируется мастером, для этого он посылает импульс в 1-15 микросекунд. Если после этого линия прижата к земле со стороны ключа на 60-120 микросекунд, то прочитан ноль, иначе — единица.
Как видите, прочитать ключ достаточно легко. Имитировать ключ гораздо сложнее, тем более многие домофоны используют разные хитрости. Вот основные подводные камни:
- Нужно всегда реагировать на reset, даже если он послан во время передачи данных. Импульс длиннее 480 микросекунд говорит о том, что надо начать всё сначала.
- Момент прикладывания ключа с его точки зрения — это тоже reset, ведь до этого питания не было. Поэтому теоретически домофон может и не посылать reset, и следует периодически отвечать сигналом presence по своей инициативе.
- Ключи могут реагировать и на другие команды: 0Fh как альтернатива 33h, SKIP ROM (CCh), MATCH ROM (55h) и самое хитрое, о чём я расскажу отдельно ниже, — SEARCH ROM (F0h). Некоторые домофоны могут послать самые разные комбинации таких команд, чтобы убедиться в том, что ключ настоящий.
- Бывает и обратная ситуация — домофон посылает команду, на которую ключ реагировать не должен. Дело в том, что некоторые программируемые ключи на них всё-таки реагируют, и так происходит ещё одна проверка. Необходимо полностью игнорировать всё, что идёт за этими командами, пока не будет послан reset.
- Для отсчёта времени лучше использовать асинхронный таймер в микроконтроллере, т.к. счёт идёт на микросекунды. Однако, установка кварца при этом будет излишней.
Про SEARCH ROM (F0h) — это команда поиска всех 1-Wire устройств на шине. Дело в том, что теоретически можно подключить параллельно много ключей и получить список всех серийных номеров. В реальности для iButton такое не используется, ведь к домофону всегда прикладывается один ключ. Однако, некоторые домофоны посылают эту команду, ожидая найти один единственный серийный номер. Алгоритм весьма интересный. Каждое из устройств на шине одновременно посылает бит своего серийного номера, при чём два раза (т.е. мастер должен прочитать два бита). Сначала обычным образом, а затем инвертированным. Что же получается в итоге? Если у устройства в серийном номере стоит единица, то посылается «10». Если ноль, то «01». И всё отлично, пока у всех устройств эти биты совпадают. А если нет… Выше я написал, что при чтении наличие длинного сигнала — это 0, а отсутствие — это 1, т.е. 0 является доминантным. Таким образом, при возникновении конфликтов читаются два нуля. После получения «10», «01» или «00» мастер должен послать в линию только что прочитанный бит. В случае с «00» он таким образом выбирает, с какой группой устройств работать далее. В результате после N итераций получается бинарное дерево из N серийных номеров.
Ответить на такую команду получается несколько сложнее, чем на обычный READ ROM. Нужно посылать каждый бит дважды — обычный и инвертированный, а затем проверять — совпадает ли с ним полученный от мастера ответ, и если не совпадает, то игнорировать дальнейшие команды.
Cyfral
Ключ «Цифрал DC-2000А» — это отечественная разработка. Взаимодействовать с ними гораздо проще, т.к. они весьма глупые — не принимают никакие команды. Достаточно просто подать на ключ питание, и он сразу начнёт бесконечно посылать код, изменяя своё сопротивление. Если дать ему 5 вольт, подключив через резистор в 1 кОм, то на осциллографе можно увидеть примерно такую картину:

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

И да, домофон после этого можно открыть самым обычным MP3 плеером. Но нас же интересуют более цивилизованные методы, верно?
Кодирование немного странное. Ключ циклически посылает девять нибблов (четыре бита), меняя своё сопротивление. Если оно сохраняется низким около 50 микросекунд, то это логический ноль, а если 100 микросекунд — это единица. Но данные кодируется не логическими нулями и единицами, а положением единиц среди нулей! То есть ключ при посылке кода может выдать только одну из четырёх комбинаций: «1000», «0100», «0010» и «0001». Однако, используется ещё и комбинация «0111» как стартовая последовательность. В итоге данные от ключа могут выглядеть как-то так: «0111 1000 0100 0010 0001 1000 0100 0010 0001 «, где «0111» указывает на начало. Никакой контрольной суммы нет — код просто читается несколько раз для уверенности.
Итого восемь последовательностей, в которых возможны четыре комбинации. Не сложно посчитать, что это даёт нам 65536 вариантов ключей. Не так уж и много, они явно часто повторяются. Теоретически если в подъезде 50 квартир, каждой из которых выдано три ключа, можно подобрать один из них перебрав всего 436 комбинаций. Но я таким не занимался.
Как же лучше читать ключи от Cyfral? Как я уже говорил, уровни аналоговые. Варианта два: аналого-цифровой преобразователь и компаратор. Последний мне кажется надёжнее. Всё отлично работает, если к одному из входов компаратора подключить линию данных подтянутую к Vdd резистором в 650 Ом, а ко второму — ровно половину Vdd, для чего можно использовать делитель напряжения из двух одинаковых резисторов. После этого результат вывода компаратора можно с уверенностью воспринимать как высокое и низкое сопротивление ключа.
Как же имитировать такой ключ? С первого взгляда кажется, что тоже нужно менять сопротивление, но результаты показали, что домофонам не нужна такая точность — можно смело замыкать линию на землю вместо низкого сопротивления и полностью отпускать её, когда нужно высокое.
Метаком
Ещё одна отечественная разработка — домофоны Метаком и ключи К1233КТ2. Как и Cyfral он просто бесконечно посылает код, меняя своё сопротивление/потребляемый ток. К счастью в Интернете доступна официальная документация:


Это всё, что нужно знать для работы с этим ключом. Он посылает четыре байта данных, но в каждом из них один бит уходит на проверку чётности. Итого выходит 28 полезных бит, а 2 28 = 268435456 комбинаций.
Увы, я так и не смог найти ни один такой ключ, чтобы поэкспериментировать с ним. Однако, в Интернете легко найти универсальный код, который открывает 99% домофонов Метаком. Один из них как раз в соседнем от меня подъезде. Я написал программу, посылающую этот код, основываясь только на технической документации. Соседний подъезд открылся с первой попытки. Похоже, что этому домофону тоже не так уж важно точное сопротивление. На этом я оставил Метаком в покое и решил, что чтение их ключей не так уж и нужно.
Универсальные коды ключей
На самом деле универсальные ключи от домофонов — это скорее миф. Разработчики почти никогда не делают для себя какой-то специальный код для всех дверей, исключение составляют только Vizit.
Но есть легенда, которая гласит, что после чтения кода ключа многие домофоны сверяют его со всеми кодами, которые записаны в ячейках памяти. Однако, в ячейках, где ещё ничего не было записано, лежат FFки или нули. Таким образом домофон можно открыть, послав ключ только из нулей или только из FFок.
Звучит как полнейший бред. Каким надо быть программистом, чтобы допустить такой баг? Но… это действительно часто работает. Да, в свежих прошивках это обычно исправлено, но многие домофоны стоят без изменений годами. Невероятно, но факт.
Любые другие коды ключей выдаваемые за универсальные — это обычно всего лишь служебные ключи для сотрудников почты, ЖКО или самой домофонной компании, и они работают только в отдельных населённых пунктах.
Создание мультиключа
Перейдём уже к практике! Да, я пытался совместить в одном устройстве и имитацию ключей, и их считывание (кроме Метаком), и синхронизацию с компьютером по USB. Вот схема того, что получилось (кликабельно):

Компоненты и их предназначение:
- IC1 — микроконтроллер ATMEGA8/ATMEGA8A/ATMEGA8L;
- U1 — USB-контроллер FT232RL, нужен для подключения устройства к компьютеру;
- CON1 — miniUSB разъём;
- BT1— батарейки, дающие 3-5 вольт;
- D1 и D2 — диоды (желательно шоттки), которые изолируют питание от батареи от питания от USB;
- P1 — «таблетка» iButton, используется для подключения к домофонам;
- P2 — контакты считывателя ключей, используются для подключения к ключам;
- R1 — резистор, подтягивающий линию 1-wire к VCC;
- R2 — токопонижающий резистор для управления транзистором Q2;
- R3 — резистор, ещё сильнее подтягивающий линию к VCC для считывания ключей Cyfral;
- R4 — токопонижающий резистор, используется для открытия Q1 и определения подключения к USB;
- R5 — подтягивает базу Q1 к земле, чтобы закрывать его, когда нет подключения к USB;
- R6 — токопонижающий резистор для светодиодов, достаточно одного, т.к. одновременно они не горят;
- R7 и R8 — делитель напряжения для одного из входов компаратора, чтобы считывать ключи Cyfral;
- Q1 — транзистор для определения подключения к USB;
- Q2 — транзистор для включения земли на считывателе и эмуляторе, чтобы не сажать батарейки, случайно замкнув контакты в кармане;
- C1, C2 и C3 — конденсаторы для фильтрации питания;
- SW1 — единственная кнопка для управления устройством;
- LEDS — семь светодиодов в форме восьмёрочки для отображения номера ключа.
Печатная плата (кликабельно):

Это было ещё время до покупки 3D принтера, когда я проектировал устройства под корпуса, а не корпуса под устройства. Ко мне в руки попал очень приятный экземпляр в виде брелка и с кнопкой. Просто идеально, оставалось только проделать отверстия под USB и светодиоды. Увы, я до сих пор не могу найти в продаже точно такой же корпус. В итоге получилось как-то так:


Батарейки под платой. Кстати, мне их хватило на год, пока я случайно не полез купаться, забыв вытащить ключи.
Управление производится всего одной кнопкой. При её первом нажатии устройство включается. Кратковременным нажатием кнопки производится выбор ключа, номер которого отображается светодиодами. Когда нужный ключ выбран, достаточно приложить контакты к считывателю домофона.
Длительное нажатие на кнопку переводит устройство в режим считывания ключей, при этом мигает средний светодиод. В этот момент нужно приложить ключ к контактам считывателя ключей (именно для этого у меня снизу вкручен винтик). Если считывание прошло успешно, отобразится номер, под которым ключ занесён в память.
При подключении по USB устройство видится как виртуальный COM-порт. Для простоты работы был написан клиент под Windows:

Он позволяет считывать ключи из устройства, при этом автоматически заносит их в базу данных. Само собой, ключи можно и записывать.
Заключение
Очень удобно в одном устройстве иметь ключи от дома, родственников, работы и подъездов друзей. Особенно актуально для тех, кто не провёл в квартиру домофонную трубку. Но создавать мультиключ было не столько полезно, сколько интересно. Это отличная практика для изучения микроконтроллеров. Да, именно с этого я в своё время начинал. Помимо этого каждый новый не открывающийся подъезд вызывал целую бурю интереса. Бегать по городу и решать логические задачи, чтобы открыть какую-то дверь — это как видеоигра в реальной жизни! Чертовски увлекательно. Не хватает только схваток с гопниками и бабулек у подъездов в виде боссов
Электронный замок на ключах — «таблетках» i Button
В статье использована документация фирмы Dallas Semiconductor — Книга Стандартов i Button, техническое описание DS1990A (Serial Number i Button) и указания по применению №74 (Application Note 74: Reading and Writing i Buttons via Serial Interfaces).
Электронный замок на ключах — » таблетках » i Button
Основные принципы работы i Button фирмы Dallas Semiconductor
Технология
Протокол
Синхронизация
Передача данных
Обзор разновидностей i Button фирмы Dallas Semiconductor
Регистрационный номер, записанный в ПЗУ (ROM)
Типы устройств i Button
Электрические стандарты и характеристики i Button
Интерфейс 1-Wire, временнЫе диаграммы
Интерфейс 1-Wire, электрические параметры
Система команд DS1990A
Генерирование CRC
Электронный замок
Основные особенности
Программирование мастер-ключа, очистка памяти, установка времени удержания соленоида
Программирование ключей
Описание принципиальной схемы
Литература
1. Основные принципы работы i Button фирмы Dallas Semiconductor
1.1. Технология
i Button — это просто микросхема, заключённая в стандартный круглый корпус из нержавеющей стали, диаметром 16.3 мм. Прочный корпус очень устойчив к воздействию ударов, грязи и влажности. i Button MicroCan (название стандарта корпуса) имеет диаметр 16.3 мм. Имеется две стандартные толщины: 3.1 мм (версия F3) и 5.9 мм (версия F5). Устройства, запитываемые от master через линию данных, поставляются в обоих типах корпусов. Все другие устройства поставляются только в корпусах MicroCan толщиной 5.9 мм. На рис. 1-1 показаны чертежи корпусов обоих версий. Поскольку крышки у всех версий одинаковы, то для всех применяется одна и та же считывающая чашка. Кромка корпуса MicroCan позволяет удобно его закреплять в держателях. Более полно размеры, внешний вид и гравировку корпуса MicroCan можно увидеть в Книге Стандартов i Button фирмы Dallas Semiconductor, часть 3.
Рис. 1-1: Корпус i Button (размеры указаны в миллиметрах).
Корпус состоит из двух электрически изолированных друг от друга частей, являющихся контактами, через которые микросхема соединяется с внешним миром. Таким образом, образуется очень недорогой (в смысле использования аппаратных ресурсов считывающей аппаратуры) и надёжный интерфейс — один провод данных и один общий провод. Энергия, необходимая для обмена информацией и работы микросхемы в корпусе, берётся от провода данных. На рис. 1-2 показано общее внутреннее устройство i Button.
Рис. 1-2: Блочная диаграмма i Button.
Внутренняя микросхема изготовлена по технологии CMOS (КМОП), и в состоянии ожидания основной ток потребления — только ток утечки (который для CMOS очень мал), что позволяет использовать для хранения перезаписываемых данных внутри i Button собственный маломощный элемент питания. Для сохранения энергопотребления на предельно низком уровне во время состояний активности (чтение данных, например), а также для совместимости с существующими сериями микросхем логики и микропроцессорами, линия данных в i Button выполнена как в выход с открытым стоком (см. рис. 1-3).
Рис. 1-3: Внутренний интерфейс данных i Button.
Для нормальной работы с внешней логикой типа CMOS нужен только нагрузочный резистор 5 кОм, подсоединённый к плюсу питания VDD (5 вольт) и к выходу обычного двунаправленного порта с открытым стоком (см. рис. 1-4).
Рис. 1-4: Узел мастера шины (двунаправленный порт с открытым стоком).
Если вход и выход процессора используют разные выводы, то их подключают, как показано на рис. 1-5. Выход, подключенный на рисунке к базе транзистора, должен быть обычным двухтактным либо с внутренним нагрузочным резистором.
Рис. 1-5: Узел мастера шины с раздельными входным и выходным портами.
1.2. Протокол
Для простого аппаратного исполнения i Button, описанного выше, используется специальный, оптимизированный протокол, позволяющий осуществлять двунаправленный обмен данными. Протокол носит название 1-Wire. Последовательная передача осуществляется в полудуплексном режиме (т. е. либо приём, либо передача), внутри дискретно определённых временнЫх интервалов, называемых тайм-слотами. Микроконтроллер (master устройство), подключенный к считывающей чашке, всегда инициирует передачу с помощью посылки командного слова на прикладываемый к чашке i Button (он играет роль подчинённого, или slave устройства). К шине может быть подключено несколько slave-устройств. Подобно электрическим вилке и розетке, которые определяют потребитель и источник электричества, контактное считывающее устройство в виде чашки является атрибутом master-устройства (которое, кстати, во многих случаях служит источником энергии для i Button), а круглая металлическая «таблетка» i Button является признаком slave-устройства. Такое точное разделение позволяет автоматически избежать конфликтов типа соединения двух master-устройств.
Команды и данные посылаются бит за битом и собираются в байты, причём вначале передаётся наименее значащий бит LSB (Least Significant Bit). Синхронизация master и slave происходит по спадающему срезу сигнала, когда master замыкает стоком выходного транзистора порта линию данных на провод земли. Через определённое время после среза сигнала происходит анализ (выборка) состояния данных на линии (лог. 0 или лог. 1) для получения одного бита информации. В зависимости от направления передачи информации в данный момент эту выборку делает либо устройство master, либо устройство slave. Этот метод обмена информацией называют передачей данных в тайм-слотах. Каждый тайм-слот отсчитывается независимо от другого, и в обмене данными могут иметь место паузы без возникновения ошибок. Рис. 1-6 показывает основные характеристики такого обмена данными.
Рис. 1-6: Передача данных в тайм-слотах.
1.3. Синхронизация
Почти сразу после присоединения к считывающему устройству (через несколько микросекунд) slave-устройство i Button выдаёт на линию импульс низкого уровня, чтобы сказать устройству master, что оно на линии и ожидаёт получения команды. Этот сигнал называется presence pulse (импульс присутствия, далее просто presence). Master может также давать запрос на i Button с целью получения presence, путём выдачи на i Button специального импульса, называемого импульсом сброса (reset pulse, далее просто reset). Если i Button принял reset или если он был отсоединён от считывающего устройства, он будет анализировать линию данных, и как только линия снова достигнет высокого уровня, i Button сгенерирует presence. Полная последовательность импульсов reset и presence показана на рис. 1-7.
Рис . 1-7: Импульсы RESET и PRESENCE.
1.4. Передача данных
После выдачи presence i Button ожидает получения команды. Любая команда записывается в i Button с помощью последовательности тайм-слотов, записывающих в i Button биты 1 и 0. Такая последовательность создаёт полный байт команды.
Передача данных в обратном направлении (чтение i Button) использует те же самые временнЫе правила для представления 0 или 1. Поскольку i Button разработано как slave-устройство, то оно оставляет устройству master определять начало каждого тайм-слота. Чтобы произвести чтение i Button, master для чтения одного бита данных просто генерирует тайм-слот записи лог. 1 (именно тайм-слот записи, а не чтения). Если бит, который посылает i Button, равен 1, то i Button просто ожидает появления следующего тайм-слота, пропуская текущий. При этом с линии данных master считывает 1. Если бит, который посылает i Button, равен 0, то i Button удерживает линию данных в состоянии лог. 0 определённое время, и master считывает с линии данных 0. Пример полной последовательности выполнения команды показан на рис. 1-8. Активность устройства master нарисована толстыми линиями. Серой линией показан ответ i Button. Тонкая линия показывает, что не активно ни одно из устройств. Линия, через которую происходит обмен данными, подключена к положительному полюсу источника питания (обычно +5 в) через специальный нагрузочный резистор.
Рис. 1-8: Пример чтения ROM (одна из разновидностей i Button, например — носитель уникального кода DS1990A. Он и используется в качестве ключа для электронного замка).
2. Обзор разновидностей i Button фирмы Dallas Semiconductor
2.1. Регистрационный номер, записанный в ПЗУ (ROM)
Запрограммированная лазерным лучом ROM-секция содержит 6-байтное, уникальное для каждого устройства i Button число — серийный номер. Кроме того, во всех i Button записан в одном байте код типа устройства (family code), а также проверочный байт CRC. Младшие 7 бит family code указывают на тип устройства. Старший бит family code используется в качестве флага для версий, предназначенных для особых покупателей. Таким образом, можно закодировать 128 стандартных разновидностей устройств. 48-битный (6-байтный) серийный номер может представить любое десятичное число до 2.81 * 10 14 . Если выпускать в год 1000 миллиардов (10 12 ) устройств одного и того же типа, то этого числа хватит на 281 год. Кроме того, можно выпускать 128 типов различных устройств. Если старший бит family code установлен в 1, то устройство функционирует так же, как и стандартное, однако серийный номер устанавливается по специальным правилам — часть серийного номера резервируется для обозначения конкретного покупателя (заказчика).
2.2. Типы устройств i Button
В таблице 2-1 показан полный обзор разновидностей i Button.
температурный i Button
Таблица 2-1: Типы устройств i Button, поставляемых в корпусе MicroCan.
NVRAM — NonVolatile Random Access Memory — память с произвольным доступом на чтение и запись, с энергонезависимым хранением информации.
EEPROM — Electrically Erasable, Programmable Read Only Memory — электрически стираемая (не всегда) память с произвольным доступом на чтение.
Остановимся на кратком описании каждого из устройств.
DS1990A
Этот i Button является устройством — серийным номером, который может служить уникальным электронным идентификатором чего-либо или кого-либо. Это самый простейший из всех типов i Button, и как раз он используется в качестве ключа для электронного замка. DS1990A содержит только ROM, запрограммированное на заводе. Поскольку информация сохранена на перерезаемых лазером связях в полисиликоне (нет зарядных элементов памяти или статических триггеров), DS1990A не нуждается в энергии для сохранения данных. Кроме того, для функционирования также почти не требуется энергии. DS1990A использует напряжение на линии данных для работы и сохраняет минимальный внутренний заряд для обеспечения работоспособности во время генерирования presence и в течение небольшого времени в любом из тайм-слотов, когда происходит операция чтения. На рисунке 2-2 показано, как организованы данные внутри DS1990A.
Рис. 2-2: Структура данных DS1990A.
Первый байт, передаваемый из ROM, является кодом типа устройства — family code. После него идёт гарантированно уникальный серийный номер (6 байт), у которого наименее значащий байт передаётся первым. Последний байт несёт информацию Cyclic Redundancy Check (CRC), что означает проверочный циклический избыточный код. CRC специальным образом вычисляется от первых семи байт. Это позволяет быстро проверить правильность передачи информации — если CRC, вычисленный устройством master от первых 7 байт, совпадает с принятым от i Button, то чтение было полностью верным. Этот метод — одна из причин, по которой i Button не требует стабильного электрического контакта со считывающим устройством.
В Книге Стандартов от фирмы Dallas Semiconductor говорится, что «из-за особенностей разработки i Button и строгого заводского контроля DS1990A является уникальным электронным идентификатором, который невозможно подделать».
Примечание 1. На мой взгляд, это верно, но с небольшими оговорками. Само собой, не существует двух совершенно одинаковых электронных ключа DS1990A, один из которых подойдёт вместо другого (откроет замок). Однако ничто не мешает злоумышленнику разработать прибор, который будет считывать ключ DS1990A и затем воспроизводить его последовательный код, полностью имитируя поведение slave-устройства DS1990A. Имея такой прибор, злоумышленник может считать оригинал ключа и потом просто использовать его код, чтобы открыть замок (кстати, на корпусе MicroCan нанесена гравировка, полностью воспроизводящая family code, serial number и даже CRC). Правда, не надо забывать, что для этого владелец ключа должен передать ключ злоумышленнику во временное пользование, а в этом казусе владелец, пожалуй, и сам в некоторой степени виновен. Снятие кода с электронного ключа очень похоже, таким образом, на снятие слепка с ключа механического. Разница только в технологиях, а также в том, что двух одинаковых электронных ключей не бывает.
DS1991, MultiKey i Button
Так же, как и DS1990A, DS1991 содержит серийный номер, family code и CRC. Кроме того, DS1991 содержит 64 байта энергонезависимой памяти scratchpad (необходимой для корректной операции записи в условиях ненадёжного контакта со считывающим устройством) и три независимые защищённые паролем области памяти по 48 байт каждая, которые называются субключами (отсюда, похоже, и пошло название DS1991 — MultiKey i Button). Для каждой защищённой области имеется поле пароля из 8 байт и открытое для свободного чтения поле из 8 байт. Таким образом, каждая защищённая область занимает 64 байта.
DS1991 разработан как электронный ключ с высокой степенью защиты, который позволяет получать доступ к различным защищённым областям с помощью только одного устройства. Каждый из трёх ключей можно рассматривать как защищённый файл, для доступа к которому надо знать пароль. Открытое поле такого ключа содержит имя защищённого файла. Таким образом, разные люди могут использовать даже один и тот же пароль, хотя они и пользуются разными экземплярами DS1991.
DS1991 имеет защиту от взлома. Если для чтения данных используется неверный пароль, то устройство будет выдавать случайные числа. Если запрограммирован новый пароль, то все данные субключа будут автоматически стёрты. Несмотря на то, что возможна прямая запись в защищённые субключи, незащищённая область памяти scratchpad должна использоваться как временное хранилище для проверки данных перед тем, как они будут скопированы в свое положенное место (субключ). Это даёт гарантию, что будут записаны неискажённые данные, даже если во время соединения прервётся контакт. В зависимости от применения, незащищённая область памяти scrat c hpad может альтернативно использоваться как простая память общего назначения, работающая на чтение и запись.
DS1992, i Button с энергонезависимой памятью на 1 Кбит
Как и все i Button, DS1992 содержит уникальный серийный номер. Внутренние 128 байт энергонезависимой памяти организованы как 4 области памяти (страницы) по 32 байта. Имеется также память scrat c hpad размером 32 байта (её назначение то же самое, что и у DS1991). Начать чтение RAM можно с любой байтовой позиции и на любой странице. Запись возможна только через scratchpad. После того, как записанные в scratchpad данные проверены на соответствие оригиналу, выполняется команда копирования данных из scratchpad в конечное место назначения данных, чем предотвращаются ошибки записи из-за возможного непостоянного контакта со считывающим устройством.
DS1993, i Button с энергонезависимой памятью на 4 Кбит
DS1993 является версией DS1992 с увеличенным объёмом памяти — в четыре раза больше. Вместо 4-х имеется 16 страниц памяти по 32 байта. Конечно, DS1993 имеет собственный family code, размещённый в ROM.
DS1992 и DS1993 разработаны как уникальное идентификационное устройство и мобильный носитель данных. С использованием специальных структур данных эти устройства могут сохранять многочисленные независимые файлы разного назначения. Кроме того, для защищённого доступа легко доступный серийный номер может использоваться как исходная величина совместно с секретным ключевым словом для кодирования приватных файлов данных. Несмотря на то, что закодированные данные можно прочитать, невозможно их продублировать из-за того, что два серийных номера не могут быть одинаковыми (см. примечание 1).
DS1994, i Button с таймером и энергонезависимой памятью на 4 Кбит
DS1994 добавляет к DS1993 часы реального времени, таймер временнЫх интервалов и счётчик циклов. За исключением family code, DS1994 полностью совместим с DS1993. Дополнительные регистры для часов и управляющие регистры размещены в верхней, последней странице памяти.
Что касается представления времени, часы DS1994 имеют отличительные особенности по сравнению с обычными часами реального времени на рынке. Часы в DS1994 — это двоичный счётчик с дискретностью 1/256 секунды. Минута, час, день, месяц и год вычисляются от количества секунд, прошедших относительно произвольно выбранной «нулевой даты» (обычно 1-е января 1970 года, 00 часов, 00 минут, 00 секунд). Таким образом, любое изменение в правилах отображения времени, зависящее от страны перелагается на внешнее программное обеспечение, с которым работает DS1994. Кроме того, это представление времени упрощает вычисление интервалов времени между событиями и увеличивают точность настройки часов.
Таймер интервалов времени можно использовать как секундомер с остановом для подсчёта времени между некоторыми событиями, или как инструмент для контроля времени использования приборов, поскольку DS1994 включает в себя свойство для генерирования прерываний. Для получения статистики работы счётчик циклов запоминает, как часто прибор (например, машина или компьютер) был включен. Таймер интервалов добавляет в память время функционирования прибора. Для этого применения, однако, DS1994 должен быть встроен в контролируемый прибор. К тому же, когда устройство DS1994 используется в процедурах касания со считывающим устройством, оно даёт полную информацию о частоте использования и среднее время каждого касания. RTC (Real Time Clock — часы реального времени) с регистрами тревоги обеспечивают функцию доступа с ограничением по времени. При достижении определённого времени доступ к устройству будет запрещён с помощью управляющего компьютера.
Возможность защиты от записи счётчиков и закрытие доступа к внутренним регистрам тревоги переводят устройство DS1994 на уровень не сбрасываемого контроллера истекающего времени. Все эти дополнительные особенности и связанные с ними регистры и управляющие флаги размещены на последней странице памяти (с номером 16). Доступ к содержимому этой страницы тот же самый, как и к обычным страницам памяти. Несмотря на то, что для операции записи обычно используют scrat c hpad, структура команд позволяет записать один или несколько байт.
DS1995, i Button с энергонезависимой памятью на 16 Кбит
Для применений, требующих сохранения нескольких файлов различного размера, ёмкость DS1993 может оказаться недостаточной. DS1995 учетверяет доступную ёмкость предыдущих версий i Button до 16 Кбит (до 64 страниц по 32 байта каждая). Поскольку DS1995 имеет ту же самую логическую структуру и понимает тот же самый набор команд, что и другие версии i Button с энергонезависимой памятью, устройство DS1995 полностью совместимо с существующим прикладным программным обеспечением. Новое уникальное значение family code указывает на наличие дополнительной ёмкости памяти.
DS1996, i Button с энергонезависимой памятью на 64 Кбит
DS1996 учетверяет ёмкость DS1995 до 64 Кбит (до 256 страниц по 32 байта каждая). С теми же самыми командами, как и у других i Button с энергонезависимой памятью, DS1996 позволяет легко провести апгрейд существующих систем. Как и все i Button, это устройство имеет уникальное значение family code.
DS1995 и DS1996 значительно превосходят по ёмкости существующие мобильные носители данных, как, например, серийные чип-карты или магнитные полосы. Использование серийного номера как исходной величины совместно с секретным ключевым словом позволяет сохранять как закодированные, так и незащищённые файлы данных в одном устройстве. Из-за недостатка места в статье мы не будем рассматривать методы использования большой ёмкости памяти этих устройств (см. Книгу Стандартов i Button фирмы Dallas Semiconductor, часть 7).
DS1982, Add-Only i Button с однократно программируемой памятью на 1 Кбит
Серии DS198x используют технологию EEPROM, которая не требует встроенного источника энергии для поддержания сохранности данных. Так же как и у DS1990A, энергия для работы берётся непосредственно с линии данных. Как и все i Button, DS1982 содержит секцию ROM с серийным номером и family code. Память организована как 4 страницы по 32 байта каждая.
Чтение DS1982 происходит так же, как и чтение других i Button со встроенной памятью, однако запись происходит по-другому. Перед тем как байт данных попадёт на своё место назначения в памяти, он сначала записывается в scrat c hpad размером в 1 байт. Далее происходит самопроверка команды записи — адреса назначения и записываемых данных — с помощью 8-битного CRC. Если проверка прошла успешно, импульс длительностью 1 мс и напряжением 12 В сделает копию байта scrat c hpad в место назначения байта. Эта процедура предотвращает некорректную запись в случае пропадания контакта с устройством.
Такая изощрённая проверка перед записью необходима для устройств, основанных на технологии EEPROM, поскольку однажды записанные неверные данные уже невозможно исправить. Когда данные нуждаются в обновлении, старые данные «переназначаются» и добавляется новый набор данных. Этот режим функционирования объясняет имя Add-Only i Button ( i Button только для добавления данных) для этой группы. Устройства Add-Only i Button невозможно стереть. Каждая страница памяти аппаратно защищена от последующих попыток записи. Таким образом, каждое обновление будет оставлять для контроля постоянный след. Такое свойство памяти используется, например, в кассовых аппаратах (фискальная память).
Флаги, показывающие состояние страницы данных (запрещена она для записи и т. п.), помещены в 8-ми байтах статуса памяти устройства. Запись в данные статуса применяет ту же самую интегрированную процедуру, как и для страниц данных. Когда читаются информация статуса или просто данные, встроенный генератор CRC защищает поток данных от потенциальных ошибок.
DS1985, Add-Only i Button с однократно программируемой памятью на 16 Кбит
С 16-кратной ёмкостью по сравнению с DS1982, DS1985 является наименьшим устройством типа Add-Only, полностью поддерживающим сохранение и обновление нескольких файлов приложений. За подробностями обращайтесь в Книгу Стандартов i Button фирмы Dallas Semiconductor, часть 7. Память приложений организована как 64 страницы по 32 байта каждая. В дополнение к памяти приложений, имеется 88 байт памяти статуса, выделенной для байт переназначения, флагов и бит защиты от записи. Специальная команда сигнализирует о перенаправлении данных для предотвращения потерь времени и чтения неверных данных. Другие функции у DS1985 те же самые, что и у DS1982.
DS1986, Add-Only i Button с однократно программируемой памятью на 64 Кбит
DS1986 является 64 Кбитным апгрейдом DS1985. Память организована как 256 страниц по 32 байта каждая. Расширенная область памяти потребовала увеличения памяти статуса до 352 байт. Все другие особенности DS1986 те же, что и у DS1985.
Выдающаяся особенность i Button типа Add-Only — невозможность удаления данных. Если данные нуждаются в обновлении, то это происходит путём изменения пути на другую страницу, что оставляет постоянный след изменений. Это позволяет реконструировать оригинальные и промежуточные версии данных. Благодаря аппаратной защите от записи такие устройства устойчивы к вмешательству в содержимое данных. Если запрограммирован бит защиты от записи, нет никаких шансов изменить хотя бы один бит соответствующей страницы или перенаправить байт.
DS1920, Temperature i Button
Как показывает название, это устройство содержит термометр в корпусе MicroCan. Вместо памяти пользователь получает доступ к 9-битному преобразователю (дающему точность 0.5 градуса по Цельсию), как если бы это была бы память, и к управляющим регистрам. Уникальная секция ROM тоже является стандартной для этих устройств, что позволяет создать цепочку из термометров и считывать их значения из одного места. Точность измерения температуры составляет 0.5 градуса Цельсия в диапазоне температур от 0 до +70 градусов. В диапазонах от -40 до 0 градусов и от +70 до +85 градусов по Цельсию точность ухудшается до 1 градуса. Время определения температуры составляет около одной секунды. Подробности см. в Книге Стандартов i Button фирмы Dallas Semiconductor, часть 6.
Описанные выше устройства поставляются в корпусе MicroCan. Кроме того, имеются некоторые другие устройства в других корпусах, имеющие некоторые общие особенности вышеописанных i Button. Например, продукты, предназначенные для пайки — адресуемый электронный ключ DS2407 и двухинтерфейсная память с таймером DS2404S-C01. Более подробно про эти устройства написано в Книге Стандартов i Button фирмы Dallas Semiconductor, часть 6.
3. Электрические стандарты и характеристики i Button
3.1. Интерфейс 1-Wire, временнЫе диаграммы
Введение
i Button являются устройствами, требующими для функционирования электрического контакта. ВременнАя логика обеспечивает методы измерения и генерирования цифровых импульсов различной длительности. Передача данных является асинхронной по отношению к битам (не используется внешний синхросигнал для их генерации) и полудуплексной (в определённый момент времени может идти передача только в одном направлении). Данные, передаваемые в i Button, могут интерпретироваться ими как команды (в соответствии с предопределённым форматом, зависящим от family code), которые сравниваются с информацией, заранее сохранённой в i Button для принятия решения (о предназначении команды), либо просто сохраняться внутри i Button для дальнейшего использования. Поскольку именно спад сигнала на линии данных является наименее чувствительным к ёмкостной нагрузке (для генерации спада используется транзистор с открытым стоком), i Button использует этот спад для синхронизации своих внутренних временнЫх узлов. Устройства i Button считаются подчинёнными устройствами (slave), а считывающее либо записывающее их устройство — главным устройством (master).
Тайм-слоты записи
ВременнЫе соотношения в i Button задаются соотносительно тайм-слота (специально сформированной порции цифрового сигнала). Для определения максимальной границы всех типов погрешностей формирования временнЫх диаграмм, i Button делает выборку значения данных на линии посередине тайм-слота. По определению активная часть 1-Wire тайм-слота (tSLOT) составляет 60 мкс. В нормальном состоянии i Button будет делать выборку сигнала с линии после 30 мкс относительно спада сигнала.
Внутренняя величина базового времени i Button может отличаться от стандартной, следовательно, может меняться время выборки сигнала. Допустимый диапазон изменения составляет от 15 до 60 мкс. Это означает, что реальное чтение линии slave-устройством может произойти в любом месте относительно старта тайм-слота между 15 и 60 мкс, т. е. может изменяться в соотношении 1 к 4. Во время этого окна времени напряжение на линии должно оставаться либо ниже VILMAX (максимально допустимое входное напряжение для лог. 0), либо больше VIHMIN (минимально допустимое входное напряжение для лог. 1). Основная форма тайм-слотов записи 1 и записи 0 показана на рисунках 3-1 и 3-2 соответственно. Эти тайм-слоты необходимы для записи команд и данных в i Button.
Рис. 3-1: Тайм-слот записи 1.
Рис. 3-2: Тайм-слот записи 0.
Длительность импульса низкого уровня для записи 1 (tLOW1) должна быть короче 15 мкс; для записи 0 длительность импульса низкого уровня должна быть не менее 60 мкс для удовлетворения условиям самого худшего случая допуска.
Длительность активной части тайм-слота можно увеличить и сделать намного больше 60 мкс. Максимальное увеличение ограничено фактом, что импульс низкого уровня как минимум в 8 тайм-слотов (480 мкс) определён как Reset Pulse (импульс сброса). Если принять во внимание наихудший допуск, то импульс низкого уровня в 120 мкс уже может быть воспринят как reset. Это ограничивает увеличение активной части тайм-слота до максимума в 120 мкс для предотвращения ошибочной интерпретации импульса низкого уровня как reset.
По окончании активной части каждого тайм-слота i Button нуждается во времени восстановления tREC (с минимальной величиной в 1 мкс) для подготовки следующего бита. Это время восстановления можно рассматривать как неактивную часть тайм-слота, оно должно быть добавлено к длительности активной части тайм-слота для получения времени, затрачиваемого на передачу бита. Широкий допуск на тайм-слот и некритичное время восстановления позволяют медленным микропроцессорам легко выполнять временнЫе требования для соединения 1-Wire.
Тайм-слоты чтения
Команды и данные посылаются в i Button путём комбинирования тайм-слотов, записывающих 0 и 1. Для чтения данных master генерирует тайм-слоты чтения для определения момента начала каждого бита. С точки зрения master, тайм-слоты чтения выглядят так же, как и тайм-слоты записи 1. Начиная с момента изменения уровня сигнала с высокого на низкий, i Button посылает один бит своего адресованного содержимого. Если передаваемый устройством i Button бит равен 1, то i Button оставляет импульс (линию данных) без изменения. Если бит равен 0, i Button будет притягивать линию данных на низкий уровень (открывая канал своего выходного транзистора) в течение времени tRDV, или 15 мкс (см. рис. 3-3). В течение этого окна времени данные доступны для чтения устройством master.
Рис. 3-3: Тайм-слот чтения данных.
Длительность tLOWR определяет время импульса низкого уровня, посылаемого устройством master. Оно должно быть как минимум 1 мкс, но в тоже время как можно меньше, чтобы увеличить окно выборки сигнала для master. В целях компенсации ёмкости линии интерфейса 1-Wire, master должен делать выборку сигнала как можно точнее через 15 мкс после начала синхронизирующего среза сигнала. Следующий за интервалом tRDV интервал tRELEASE является дополнительным, в течение которого i Button отпускает линию 1-Wire и сигнал возвращается к значению VPULLUP. Длительность tRELEASE может меняться в пределах от 0 до 45 мкс. Номинальная величина 15 мкс.
Детектирование presence (присутствия на шине)
Как упомянуто выше, интерфейс 1-Wire использует импульс reset. Этот импульс определён как импульс низкого уровня с минимальной длительностью 8 тайм-слотов или 480 мкс, за которым следует время reset с высоким уровнем на линии tRTSH и длительностью тоже 480 мкс (см. рис. 3-4). Это время нужно для того, чтобы i Button мог выдать импульс presence.
Рис 3-4: Импульсы reset и presence.
* Чтобы не маскировать сигналы прерываний от других устройств на шине 1-Wire, время tRSTL+tR должно быть всегда меньше 960 мкс.
Во время tRSTH на линии 1-Wire не разрешены никакие другие соединения. Импульс reset предназначен для обеспечения чистого старта, который прерывает любую синхронизацию других тайм-слотов. В окружении с неуверенным контактом необходимо снова запустить старт, если контакт прерывался. Если master послал импульс reset, i Button будет ожидать время tPDH, а затем сгенерирует импульс presence длительностью tPDL. Это позволяет устройству master легко определить, присутствует или нет i Button на линии. Кроме того, если несколько i Button соединены параллельно (см. Книгу Стандартов, часть 5, «Логические стандарты и характеристики»), master может измерить оба времени (tPDH и tPDL) и таким способом получить информацию о реальных временнЫх допусках для всех устройств на линии.
Нормальные величины 30 мкс для tPDH и 120 мкс для tPDL. Измеренное время tPDH показывает внутреннее базовое время для самого быстрого устройства на шине. Сумма измеренного времени tPDH и tPDL в 5 раз больше внутреннего базового времени самого медленного устройства на шине. Если на линии присутствует только одно устройство, обе величины tPDH и tPDL будут пропорциональны и будут изменяться в одну и ту же сторону. Это соотношение может быть использовано для построения адаптивной системы. Специальные вычисления этой системы должны быть приложены для корректировки временнЫх характеристик каждый раз после reset, поскольку индивидуальные временнЫе характеристики устройств i Button могут меняться в зависимости от температуры и нагрузки.
Точность измерений времени, требуемая для адаптивной подстройки временнЫх диаграмм, ограничена характеристиками входной логики master, постоянной времени линии 1-Wire (сопротивление нагрузочного резистора помножить на ёмкость кабеля) и прикладываемой частотой выборок состояния линии 1-Wire. Если видимое время нарастания или спада сигнала превышает 1 мкс, или если возможная наивысшая частота выборок не превышает 1 МГц, то адаптивную подстройку применить не получится.
Если i B u tton отключен от считывающего устройства, то он притягивает свою линию данных на низкий уровень через внутренний источник тока 5 мкА. Это симулирует импульс reset неограниченной длины. Как только i Button определит высокий уровень на своей линии данных, он сгенерирует импульс presence. Эта особенность может быть использована для автоматического включения устройства master с целью сохранения энергии между чтениями или записями. Это также удобно использовать для включения аппаратного прерывания последовательного порта, когда используется PC и адаптер COM-порта.
Устройства i Button специально разработаны для работы в условиях плохих электрических соединений. Однако требуется некоторое минимальное время контакта, требуемое для пересылки команд и пакета данных. Оно зависит от вида выполняемой операции. Для DS1990A, используемого в качестве электронного ключа, это время может не превышать 5 мс.
Повышенная скорость
Устройство i Button можно ввести в состояние ожидания, в котором i Button больше не отвечает ни на какие события на шине 1-Wire, пока не поступит импульс reset. С этой особенностью может сосуществовать возможность высокоскоростного соединения на шине 1-Wire без конфликтов с существующим протоколом. Линия данных при этом не может быть в состоянии низкого уровня более чем 120 мкс.
Фактически повышенная скорость реализуется изменением внутренней временнОй базы i Button в 10 раз. Это относится ко всем коммуникационным формам сигнала, включая импульсы reset и presence, но не включая длительность программирующих импульсов для устройств EEPROM (детали см. на рис. 3-1…3-4). Все i Button, которые могут работать с повышенной скоростью, будут работать со скоростью нормальной, если их специально не переключить на повышенную скорость. Устройства, реализующие повышенную скорость, можно идентифицировать по их family code, или с помощью специальных команд, которые не распознаются «не высокоскоростными» устройствами. Более подробно о протоколе, вводе i Button в состояние ожидания и о повышенной скорости обмена можно прочитать в Книге Стандартов i Button фирмы Dallas Semiconductor, часть 5.
3.2. Интерфейс 1-Wire, электрические параметры
Паразитное питание
Обычно в цифровых системах переменные величины напряжения относятся к цифровым сигналам, которые таким способом представляют высокие и низкие уровни семейства логики. ВременнЫе диаграммы 1-Wire отличаются от этой хорошо известной схемы из-за паразитного питания систем i Button, которые поддерживают ROM и высокотехнологичную логику большей части устройств. DS1991 использует не паразитное питание, а внутренний источник энергии, который обеспечивает работу защищённой памяти. DS1990A, DS198x и DS1920 разработаны только для использования паразитного питания. Логика ROM устройств от DS1992 до DS1996 питается либо от внутреннего литиевого источника напряжения 3 B, либо от напряжения на линии 1-Wire, в зависимости от того, какое из них больше. Эта возможность позволяет получить доступ к записанной лазером ROM-секции, даже если внутренний литиевый элемент истощился после истечения 10 лет или более.
Системы с паразитным питанием нуждаются в конденсаторе для сохранения энергии и диоды для предотвращения нежелательного разряда от линии данных (когда на ней появляются низкие логические уровни). Здесь применяется точно такая же схема, как у однополупериодного выпрямителя. После того, как конденсатор зарядится до нормального рабочего уровня, на нём будут кое-какие незначительные провалы и возрастания напряжения из-за импульсов перезаряда, возникающих при изменении сигнала на линии данных 1-Wire. Ёмкость энергосберегающего конденсатора i Button равна примерно 800 пФ. Эта ёмкость видна короткое время, когда i Button подсоединяется к считывающему устройству. После того, как конденсатор зарядился, на шине данных будет видна только малая часть от ёмкости конденсатора, соответствующая требуемой полной подзарядке конденсатора. Полная постоянная времени для зарядки конденсатора определяется самим конденсатором, внутренним сопротивлением около 1 кОм, сопротивлением кабеля и контактов, ёмкостью кабеля и внешним нагрузочным резистором. Добавочное падение напряжения на диоде и минимальное внутреннее рабочее напряжение кристалла дают минимально возможное напряжение на линии данных 1-Wire. В таблице 3-1 более подробно даны параметры, справедливые для всех видов i Button. Минимально возможное напряжение питания линии важно для выбора времени восстановления tREC времени высокого уровня reset tRSTH.
Спец. питающее напряжение
Импульс прогр. Vpp
Табл. 3-1: Общие электрические параметры i Button.
Из-за применяемой в устройствах Add-Only технологии EEPROM, эти i Button требуют для программирования импульсов определённой длительности, напряжения и тока. Например, для DS1982 применяют импульс длительностью минимум 500 мкс, номинальное напряжение 11.5 В с пиковым максимальным током 10 мА. Для предотвращения повреждений других i Button, во время программирования к сети MicroLAN должны быть подключены только DS198x. Температурный i Button DS1920 требует усиленного питания 5 В от сети MicroLAN во время измерения температуры и записи внутренних ячеек памяти. Это не критично для работы других устройств на шине, поскольку i Button не будут начинать самостоятельно любой обмен данными. Не могут также в этой ситуации происходить прерывания от DS1994, поскольку их работа автоматически запрещается (см. Книгу Стандартов i Button фирмы Dallas Semiconductor, часть 6).
Нагрузочный резистор
Рекомендуемый номинал нагрузочного резистора для линии 1-Wire составляет 5 кОм. Эта величина была выбрана для обеспечения работы с контактами высокого сопротивления и для обеспечения хороших логических уровней на обоих концах короткого соединительного кабеля. Обычно считывающий узел master воспринимает напряжения до 0.8 В как логический 0. Поскольку на линию между master и i Button оказывает влияние постоянная времени шины 1-Wire, иногда может потребоваться использовать нагрузочный резистор с номиналом меньшим, чем 5 кОм.
Оптимизация при повышении длины соединительного кабеля
Идеальным соединением между i Button и мастер является короткий кабель с малой паразитной ёмкостью. В случае применения длинных кабелей появляется гораздо больше забот для обеспечения необходимых требований по постоянному и, в особенности, по переменному току. Появляются критические моменты для времени восстановления tREC и для чтения или записи бита 1. Время восстановления становится критичным, если для обмена данными необходимы два следующих друг за другом тайм-слота записи нуля. Если передача данных идёт на максимально возможной скорости, должен быть сформирован импульс tREC лог. уровня 1 с минимальной длительностью 1 мкс между двумя тайм-слотами записи нуля с длительностью 60 мкс. Возможность распространения такого короткого импульса по длинному кабелю значительно ухудшается пропорционально длине кабеля. Случается так, что короткий импульс полностью отфильтровывается и связь с i Button на дальнем конце кабеля становится невозможным. Можно легко увеличить расстояние передачи, просто увеличив величину tREC. Например, если tREC увеличить с 1 мкс до 15 мкс, максимальная скорость передачи данных упадёт с 16.3 Кбит/с до 13.3 Кбит/с, однако импульс tREC длительностью 15 мкс позволяет значительно повысить надёжность передачи на длинном кабеле. Запись бита 1 можно также улучшить путём уменьшения длительности tLOW1 тайм-слота записи 1, однако при этом не превышая нижнюю минимальную величину (см. рис. 3-1). Это также улучшает вероятность верного чтения 1 на длинном кабеле. Кроме того, на длинном кабеле нужно уменьшить номинал нагрузочного резистора линии.
Тесты показывают, что нагрузочный резистор номиналом 1 кОм позволяет работать с кабелем максимально возможной длины. Если применить резистор номиналом менее 1 кОм, то ухудшается качество логических уровней, и в сочетании с большой ёмкостью кабеля не получается достичь правильной формы сигналов. Маленький резистор повышает зависимость работы системы от качества контактов (зависимость от сопротивления контакта). Для увеличения длины кабеля рекомендуется использовать кабели с малой погонной ёмкостью – около 15 пФ/м.
Тесты также показывают, что витая пара проводов работает лучше, чем просто два параллельные провода. Простой нагрузочный резистор на стороне master показал лучшие результаты, чем усиленная активная импульсная нагрузка, поскольку резистор больше подходит к сопротивлению линии. В порядке улучшения работы можно применить на стороне master выходной ключ (драйвер) с улучшенными характеристиками включения. В особых случаях может потребоваться использовать компаратор на приёмном входе master для оптимизации порогов чтения лог. 0 и лог. 1 на длинных линиях.
Например, корректная работа i Button была достигнута на линии до 300 м с использованием простого витого телефонного кабеля. Нагрузочный резистор был уменьшен до 1 кОм; 30 экземпляров i Button были подключены параллельно в конце кабеля. Шина 1-Wire управлялась выводом порта 0 микроконтроллера DS5000 (совместимый с Intel 8051). Адаптеры для COM-порта PC работают на расстояниях до 200 м на большинстве PC (см. указания по применению №74 “Чтение и запись i Button через последовательный интерфейс”). Более подробную информацию можно получить из указаний по применению №55 “Расширение зоны контактирования устройств i Button” и №108 “MicroLAN – длинные дистанции”.
4. Система команд DS1990A
Как только мастер определил на шине наличие импульса presence, он может послать одну из четырёх команд, работающих с ПЗУ (ROM) DS1990A. Каждая команда состоит из 8 бит. Перечень этих команд следующий (в квадратных скобках указан hex-код команды):
Read ROM [33h] или [0Fh] (прочитать ПЗУ)
Эта команда позволяет мастеру шины прочитать из DS1990A код устройства (family code), уникальный 48-битный серийный номер и 8-битный CRC. Эта команда может быть использована только в том случае, если на шине присутствует только одно устройство DS1990A (для электронного замка это условие выполняется). Если на шине присутствует более одного подчинённого устройства, произойдёт коллизия данных, когда все slave-устройства начнут передавать одновременно (параллельно соединённые открытые стоки будут работать как логический элемент И). DS1990A будет одинаково реагировать как на код команды 33h, так и на код 0Fh для обеспечения совместимости с более ранней версией электронного серийного номера DS1990, который реагирует только на команду 0Fh.
Math ROM [55h], Skip ROM [CCh], Sear с h ROM [F0h]
Не будем останавливаться на этих командах, поскольку для электронного замка они не нужны (подробности по ним см. в Книге Стандартов i Button фирмы Dallas Semiconductor).
5. Генерирование CRC
Для проверки правильности данных, переданных из DS1990A (как, впрочем, и из других устройств i Button) master может генерировать значение CRC из принятых данных. Эта сгенерированная величина затем сравнивается с величиной, сохранённой в последних 8 битах DS1990A. Master вычисляет CRC от 8-битового family code и всех 48 бит серийного номера, но не от самой сохранённой в i Button величины CRC (от первых 7 байт содержимого DS1990A). Если две величины, вычисленная и считанная напрямую, совпадают, то передача была безошибочной. Для генерации CRC используется полином вида:
CRC = x 8 + x 5 + x 4 + 1
Ниже приведён код из технического описания DS1990A фирмы Dallas Semiconductor для процессора с системой команд Intel 8051, реализующий алгоритм вычисления CRC. Этот код без изменений был использован в программе электронного замка.
Более подробно принцип вычисления CRC описан в Книге Стандартов i Button фирмы Dallas Semiconductor.
6. Электронный замок
6.1. Основные особенности
Описываемый электронный замок предназначен для установки в квартирах, подъездах жилых домов. Очень хорошо он подходит для входных дверей офиса, куда должен иметь доступ ограниченный круг лиц. Основные достоинства такого замка:
— быстрое, удобное открытие двери простым прикладыванием металлической “таблетки” – электронного серийного номера DS1990A (далее по тексту просто “ключа”);
— увеличенная защищённость – отсутствие замочной скважины или клавиатуры, которую легко повредить, подбор ключа полностью исключён;
— очень простая процедура смены или добавления ключа – они записываются в память электронного замка, и так же легко оттуда удаляются;
— при утере одного ключа нет необходимости покупать новый замок или менять вставку – можно просто стереть память замка и “обучить” замок заново (занести в память ключи);
— большое количество (до 510) пользователей.
Недостатком, которым страдают все электронные замки, можно считать тот факт, что электронному замку и исполнительному механизму (соленоиду задвижки или электромотору) нужно резервированное питание, например, от аккумулятора, чтобы всегда можно было открыть дверь (в случае пропадания питания от сети).
Для постоянной работы с замком используется только чашка считывающего устройства и кнопка открывания двери, которая монтируется внутри запираемого помещения. Нажатие на эту кнопку точно так же открывает дверь, как прикладывание ключа. Для программирования замка служит перемычка, звуковой сигнализатор, два светодиода – зелёный и красный, а также специальный мастер-ключ. Мастер-ключ необходим для доступа к программированию замка. Кроме своих специальных функций, он может работать как обыкновенный ключ, если его занести в память электронного замка.
В таблице 6-1 приведены основные параметры, а на рисунке 6-1 – принципиальная схема электронного замка.
