�������@Mail.ru
Главная страница Техподдержка Основные принципы работы iButton фирмы Dallas Semiconductor. Часть 5
Поиск по сайту

Вход/Регистрация



Магазин

Список всех товаров


Расширенный поиск
Расширенный поиск по характеристикам
Показать корзину
Ваша корзина пуста.
Пользователи online
Сейчас на сайте находятся:
 13 гостей 
Поделись ссылкой с друзьями
Баннер

Основные принципы работы iButton фирмы Dallas Semiconductor. Часть 5

Система команд 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]

Не будем останавливаться на этих командах, поскольку для электронного замка они не нужны (подробности по ним см. в Книге Стандартов iButton фирмы Dallas Semiconductor).

Генерирование CRC.

Для проверки правильности данных, переданных из DS1990A (как, впрочем, и из других устройств iButton) master может генерировать значение CRC из принятых данных. Эта сгенерированная величина затем сравнивается с величиной, сохранённой в последних 8 битах DS1990A. Master вычисляет CRC от 8-битового family code и всех 48 бит серийного номера, но не от самой сохранённой в iButton величины CRC (от первых 7 байт содержимого DS1990A). Если две величины, вычисленная и считанная напрямую, совпадают, то передача была безошибочной. Для генерации CRC используется полином вида:

CRC = x8 + x5 + x4 + 1

Ниже приведён код из технического описания DS1990A фирмы Dallas Semiconductor для процессора с системой команд Intel 8051, реализующий алгоритм вычисления CRC.

DO_CRC:
; Процедура DO_CRC считает КУМУЛЯТИВНО CRC от всех данных, передаваемых в acc.
; Перед началом подсчёта в CRC надо поместить 0. Затем каждый байт помещается
; в acc, вызывается процедура DO_CRC, и величина CRC в ней обновляется.
; После того, как все данные прошли через DO_CRC, переменная CRC будет
; содержать результат (контрольную сумму). Эквивалентная полиномная; функция этой подпрограммы:
; CRC = X^8 + X^5 + X^4 + 1
mov         a, r7                        ;параметр  в C-функции передаётся через r7
push       acc
push       b
push       acc                            ;сохраним сдвигаемые биты
mov         b, #8                       ;установить сдвиг = 8 бит
CRC_LOOP:
xrl           a, CRC                     ;вычисляем CRC
rrc           a                             ;двигаем её в перенос
mov         a, CRC                     ;получаем последнюю величину CRC
jnc           ZERO                       ;пропускаем, если data=0
xrl           a, #18h                    ;обновляем CRC
ZERO:
rrc           a                              ;позиционируем новую CRC
mov         CRC, a                     ;запомним новую CRC
pop         acc                           ;получим оставшиеся биты
rr             a                             ;позиционируемся на следующий бит
push       acc                            ;сохраним оставшиеся биты
djnz         b, CRC_LOOP            ;повторим для восьми бит
pop         acc                            ;очистим стек
pop         b
pop         acc
ret

Более подробно принцип вычисления CRC описан в Книге Стандартов iButton фирмы Dallas Semiconductor.

Комментарии (0)
Только зарегистрированные пользователи могут оставлять комментарии!
 
Баннер
Рейтинг@Mail.ru

Rambler's Top100

top100.sec.ru Центр безопасности и связи. Каталог оборудования, технические описания, поставщики, рейтинг компаний, поисковая система