Особенности 7-и битной адресации

Процедура адресации для I2C-шины такова, что первый байт после START-условия обычно определяет, какой из ведомых выбран ведущим. Исключение составляет так называемый «адрес общего вызова» вида 0000 0000, который может адресовать все устройства. Когда используется этот адрес, теоретически, всем устройствам следует откликнуться с подтверждением приема. Однако можно заставить устройства проигнорировать этот адрес. Второй байт адреса общего вызова в этом случае определяет действие, которое должно быть выполнено.

Первые 7 бит первого байта определяют адрес ведомого. Восьмой - младший бит (LSB) - определяет направление сообщения. Распределение I2C адресов координируется комитетом I2C-шины (Philips) (таблица 3.2 ).

Таблица 3.2 - Распределение 7-ми битных адресов

Особенности 7-и битной адресации - student2.ru

Комбинация 11110ХХ адреса ведомого зарезервирована для 10-и битной адресации. Адреса, зарезервированные для иного формата шины, позволяют использовать в системе I2C другие протоколы. Только те устройства, совместимые с I2C-шиной, которые могут работать с такими форматами и протоколами, могут откликаться на этот адрес.

Таким образом, при 7-ми битовой адресации в системе доступно до 112 уникальных адресов, распределяемых устройствам.

Когда адрес послан, каждое устройство в системе сравнивает первые 7 бит после START-условия со своим адресом. Если они совпадают, то данное устройство считает себя адресованным. По отношению к ведущему, адресовавшему его, оно является ведомым приемником или ведомым передатчиком, в зависимости от R/W бита.

Адрес ведомого может быть построен из фиксированной и программируемой частей. Так как наверняка в системе могут быть несколько одинаковых устройств, то программируемая часть адреса ведомого позволяет присоединить к шине максимально возможное число таких приборов. Число бит программируемой части адреса устройства зависит от числа внешних выводов (контактов). Например, если прибор имеет 4 фиксированных и 3 программируемых бита адреса, то с одной шиной может быть связано восемь идентичных приборов.

Адрес общего вызова

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

START-байт

Микроконтроллер может быть связан с I2C-шиной двумя способами:

1. Микроконтроллер с аппаратным обеспечением интерфейса I2C-шины на кристалле может быть запрограммирован так, чтобы его прерывание производилось только запросом с шины.

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

В последнем случае передаче данных может предшествовать стартовая процедура, которая намного длиннее нормальной (рис. 3.13). Стартовая процедура состоит из:

o START-условия (S);

o START-байта (0000 0001);

o такта подтверждения приема;

o повторного START-условия (Sr).

Никаким устройствам не разрешается подтверждать прием при получении START-байта.

Особенности 7-и битной адресации - student2.ru

Рисунок 3.13 - Байт START - процедуры

После того, как START-условие передано ведущим, который требует доступ к шине, передается START-байт (0000 0001).

Следовательно, другой микроконтроллер может производить опрос SDA-линии с низкой частотой, пока один из семи «нулей» START-байта не будет зарегистрирован. После регистрации «нуля» на SDA-линии микроконтроллер может переключиться в режим высокой скорости опроса и обнаружить повторное START-условие (Sr), которое теперь используется для синхронизации.

Аппаратнообеспеченный приемник при получении повторного START-условия (Sr) приходит висходное состояние, игнорируя START-байт.

Тактовый импульс подтверждения генерируется после START-байта. Он нужен только для соответствия формату, используемому на шине. Никаким устройствам не позволено подтверждать прием START-байта.

3.4 Расширенная спецификация I2C-шины

Введение

I2C-шина со скоростью передачи данных до 100 Кбит/с и 7-и битной адресацией существует уже более 10 лет с неизменной спецификацией. Концепция повсеместно принята как фактический стандарт и сотни различных типов интегральных схем, совместимых с I2C-шиной, поставляются Philips и другими производителями. Сейчас спецификация I2C-шины расширена следующими двумя особенностями:

· быстрый режим (fast mode), который позволяет 4-х кратно увеличить скорость до 400 Кбит/с;

· 10-и битная адресация, которая позволяет использовать до 1024 дополнительных адресов.

Существуют две причины введения этих дополнений:

a. В новых приложениях нужно передавать большее количество последовательных данных и, следовательно, требуется скорость большая, чем 100 кбит/с. Улучшенная технология изготовления интегральных схем позволяет сегодня 4-х кратно увеличить скорость без увеличения стоимости производства интерфейсных цепей.

b. К большинству из 112 адресов, доступных при 7-и битной адресации, обращение происходит не один раз. Для преодоления проблемы с размещением адресов ведомых желательно иметь большее количество адресных комбинаций. Почти 10-и кратное увеличение числа доступных адресов получается при новой 10-и битной адресации.

Все новые приборы с интерфейсом I2C-шины имеют возможность поддержания быстрого режима. Предпочтительно, чтобы они могли принимать и/или передавать со скоростью 400 Кбит/с. Минимальное требование состоит в том, чтобы они могли синхронизироваться со скоростью передачи 400 Кбит/с, тогда они могут продлить низкий уровень сигнала SCL-линии, чтобы замедлить передачу. Устройства с быстрым режимом должны быть совместимы с устройствами низкого быстродействия. Это означает, что они должны обладать способностью обмениваться информацией с устройствами, имеющими скорость от 0 до 100 Кбит/с в I2C-шинных системах со скоростью от 0 до 100 Кбит/с.

Очевидно, что старые устройства с интерфейсом I2C-шины со скоростью от 0 до 100 Кбит/с не могут быть включены в высокоскоростную I2C-шинную систему, т.к. они не могут следовать высокой скорости передачи. Могут произойти непредсказуемые ситуации.

Ведомые с высокоскоростным интерфейсом I2C-шины могут иметь 7-и битный или 10-и битный адрес. Однако 7-и битный адрес предпочтительнее, т.к. это наиболее дешевое решение аппаратного обеспечения, и при такой адресации получается наименьшая длина сообщения. Устройства с 7-и битным и 10-и битным адресами можно смешивать в одной I2C-шинной системе, несмотря на то, является ли эта система стандартной (0 - 100 Кбит/с) или быстрой (0 - 400 Кбит/с). Существующие и будущие ведущие могут генерировать 7-и битные или 10-и битные адреса.

Быстрый режим

В быстром режиме I2C-шины протокол, формат, логические уровни и максимальная емкостная нагрузка для SDA- и SCL-линий остаются неизменными. Имеются следующие изменения спецификации I2C-шины:

· максимальная скорость увеличена до 400 Кбит/с;

· доработаны временные характеристики последовательности данных (SDA) и последовательных тактовых (SCL) сигналов. Нет нужды иметь совместимость с другими системами, т.к. они не могут работать в режиме повышенной скорости;

· SDA- и SCL-входы высокоскоростных приборов должны иметь схему подавления выбросов и триггер Шмидта;

· выходные каскады SDA- и SCL-линий высокоскоростных приборов должны иметь ограничение крутизны среза выходных импульсов;

· если питание высокоскоростного прибора выключено, выводы SDA и SCL должны иметь плавающий потенциал, чтобы не мешать работе линий шины;

· внешние подтягивающие устройства (схемы), соединенные с линиями шины, должны быть настроены на получение наименьшего времени установления I2C-шины быстрого режима.

И битная адресация

10-и битная адресация не изменяет формат в спецификации I2C-шины. Использование 10-и бит для адреса опирается на зарезервированную комбинацию 1111 ХХХ для первых 7-и бит первого байта, следующего за START-условием (S) или повторным START-условием (Sr). 10-и битная адресация не влияет на существующую 7-и битную адресацию. Устройства с 7-и битной и 10-и битной адресацией могут быть присоединены к одной и той же шине. И 7-и битная, и 10-и битная адресация могут использоваться в стандартных системах (до 100 Кбит/с) или в системах быстрого режима (до 400 Кбит/с).

Хотя существует 8 возможных комбинаций зарезервированных адресных бит 1111 ХХХ, только 4 комбинации 1111 0ХХ используются для 10-и битной адресации. Оставшиеся 4 комбинации 1111 1ХХ зарезервированы для дальнейших улучшений I2C-шины.

10-и битный адрес ведомого формируется из первых двух байт, следующих за START-условием (S) или повторным START-условием (Sr). Первые 7 бит первого байта - это комбинация 11110ХХ, в которой последние два бита (XX) являются двумя старшими битами (MSBs) 10-и битного адреса. Восьмой бит первого байта - это R/W-бит, который определяет направление сообщения.

«Нуль» в младшем бите первого байта означает, что ведущий будет передавать информацию выбранному ведомому. «Единица» в этой позиции означает, что ведущий будет принимать информацию от ведомого. Если бит R/W равен «нуль», то второй байт содержит оставшиеся 8 бит (ХХХХ XХХХ) 10-и битного адреса. Если бит R/W - «единица», тогда следующий байт содержит данные, передаваемые от ведомого ведущему.

В рамках передачи, которая включает 10-и битную адресацию, возможны различные комбинации форматов чтения/ записи. Рассмотрим возможные форматы передачи.

1. Ведущий передатчик передает ведомому приемнику с 10-и битным адресом. Направление передачи не изменяется (рис. 3.14). Когда 10-и битный адрес следует за START-условием, каждый ведомый сравнивает первые 7 бит первого байта адреса ведомого (1111 0ХХ) со своим собственным адресом и проверяет, содержит ли 8-ой бит (R/W-бит направления) «нуль».

Особенности 7-и битной адресации - student2.ru

Рисунок 3.14 - Формат записи с 10-ти битным адресом ведомого приемника

Возможно, что более одного устройства установят соответствие и дадут подтверждение приема (А1). Все ведомые, которые обнаружили соответствие, будут сравнивать восемь бит второго байта адреса ведомого (ХХХХ ХХХХ) с их собственным адресом, но только один ведомый обнаружит соответствие и выдаст подтверждение приема (А2). Этот ведомый будет оставаться адресованным ведущим, пока не получит STOP-условие (Р) или повторное START-условие (Sr), за которым следует другой адрес ведомого.

2. Ведущий приемник принимает от ведомого передатчика с 10-и битным адресом (ведомого). Направление передачи изменяется после второго R/W-бита (рис. 3.15). До и включая бит подтверждения приема (А2), процедура такая же, как описано выше для ведущего передатчика, адресующего ведомый приемник.

Особенности 7-и битной адресации - student2.ru

Рисунок 3.15 - Формат чтения с 10-ти битным адресом ведомого передатчика

После повторного START-условия (Sr) соответствующий ведомый помнит, что ранее он был адресован. Этот ведомый теперь проверяет, являются ли первые семь бит первого байта адреса ведомого, следующего за Sr условием, теми же, что и раньше, после START-условия (S), и проверяет, содержит ли 8-ой бит (R/W) «единицу». Если соответствие есть, ведомый считает, что он адресован как передатчик и генерирует подтверждение (A3). Ведомый передатчик остается адресованным, пока не получит STOP-условие (Р) или другое повторное START-условие (Sr) с последующим отличным адресом ведомого. После Sr все остальные ведомые также будут сравнивать первые семь бит первого байта адреса ведомого (11110ХХ) со своими собственными адресами и проверять 8-ой(R/W) бит. Однако, ни одно из них не будет адресовано, если R/W = 1 (для 10-и битных устройств), или 11110ХХ адрес ведомого (для 7-и битных устройств) не будет совпадать.

3. Комбинированный формат. Ведущий передает информацию ведомому с 10-ти битным адресом, после читает данные от того же ведомого. Один и тот же ведущий занимает шину все это время. Процедура похожа на описанную выше (рис. 3.15). Разница заключается в том, что до повторного START-условия (Sr) ведущий передатчик выдает на приемник нужное количество байт данных. Затем после повторного START-условия (Sr) повторяется старший байт адреса того же ведомого. Направление передачи изменяется после R/W бита.

4. Комбинированный формат. Ведущий передает данные одному ведомому с 10-ти битовой адресацией, после передает данные другому ведомому с 10-ти битовой адресацией. Ведущий занимает шину все это время. Процедура (рис. 3.14) полностью повторяется после выдачи повторного START-условия (Sr) с учетом смены адреса ведомого.

5. Комбинированный формат. 10-и битная и 7-и битная адресация присутствуют в одной последовательной передаче. После каждого START-условия (Sr) может быть передан 10-и или 7-и битный адрес.

Наши рекомендации