|
реклама |
|
http://kiev-security.org.ua
Подробно описывать в все особенности протокола I2С вряд ли целесообразно, так как техническая документация на него открыта, распространяется бесплатно и легко доступна. Однако не которые комментарии будут полезны для успешной работы с чип-картами, микросхемы памяти которых используют этот протокол.
Шина состоит из двух линий (без учета общего провода и питания): SCL и SDA. Элементы, подключенные к этой шине, должны постоянно отслеживать состояние обеих линий, никак на них не влияя, а при необходимости иметь возможность перевести их в со стояние лог. 0. Следовательно, выходные каскады всех подключае мых к этой шине устройств должны быть либо с «открытым коллек-
тором», либо с «открытым стоком».
Принято именовать «передатчиком» все устройства, которые передают данные по шине, а «приемником» - все устройства, которые принимают данные. Элемент, который инициирует обмен данными, называется «хозяином» или «мастером» (master), а все остальные - «рабами» (slave); используются также термины ведущий/ведомый.
В рассматриваемом случае чип-карта (то есть память) обязательно будет «рабом», а блок чтения-записи - «хозяином».
Начальное состояние шины - неактивное (линии SCL и SDA находятся в «третьем» - высокоимпедансном - состоянии). Обмен данными начинается с появлением условия START, формируемого «мастером». При этом линия SDA переходит из высокого в низкий логический уровень, а на линии SCL сохраняется высокий уровень. И наоборот, всякий обмен данными заканчивается при появлении
условия STOP - перехода из низкого в высокий логический уро вень на линии SDA при высоком уровне на линии SCL. В конце операции считывания данных с чип-карты I2C условие STOP вы зывает ее возврат в состояние ожидания. И наоборот, в конце опе рации записи это условие запускает внутренний цикл программирования в EEPROM.
Сигнал АСК (подтверждение или квитирование) информирует о нормальном завершении каждого обмена данными. Передатчик, как «мастер», так и «раб», освобождает линию SDA после передачи восьмого бита данных. Во время девятого тактового импульса приемник переводит линию SDA в низкий логический уровень, подтверждая прием переданного ему байта, а передатчик проверяет состояние шины и в зависимости от результата либо повторяет байт, либо готовит передачу следующего. Действительно, в чип-картах с шиной I2C данные считываются и записываются целыми байтами, а не отдельными битами.
Протокол I2C
На рисунке приведены временные диаграммы работы шины, где видно, как передается каждый бит: приемник фиксирует состояние линии SDA по переднему фронту на линии SCL, а все изменения состояния на линии SDA должны происходить только тогда, когда на линии SCL низкий логический уровень.
Вместе с данными по шине передаются и адреса. Каждое устройство, подключенное к шине I2C, имеет свой собственный адрес, первые четыре разряда которого предназначены для обозначения функционального семейства, к которому данное устройство относится. В общем случае для памяти этот код всегда равен 1010. Последний бит адреса (то есть самый младший разряд) определяет режим ра-
боты: 1 - для чтения данных, 0 - для их записи.
Три оставшихся разряда позволяют выбрать нужное устройство из ряда одинаковых, подключенных к этой же шине, или же блок объемом 256 байт (страницу) при постраничной организации памяти в одной микросхеме. Если чип-карта имеет память объемом 256 байт и работает только с блоком чтения-записи, то эти три бита
можно установить нулевыми. При этом адрес для чтения будет 10100001, а для записи - 10100000.
Большинство микросхем ЭСППЗУ (EEPROM) для шины I2C имеет несколь ко различных режимов записи и чтения. На рисунке внизу приведены циклограммы всех возможных режимов записи и чтения для микросхемы ST 14C02 компании SGS-Thomson - варианта классической микросхемы 24С02, емкость которой составляет ровно 256 байт, в исполнении для монтажа в чип-карты.
<a href="http://kiev-security.org.ua" title="Самый большой объем в сети онлайн инф-ции по безопасности на rus" target="_blank"><img src="http://kiev-security.org.ua/88x31.gif" width="88" height="31" border="0" alt="security,безопасность,библиотека"></a> |