9.0 7-битная адресация

(см. 10-битная адресация).

Процедура адресации на шине I2C заключается в том, что первый байт после сигнала СТАРТ определяет, какой ведомый выбирается ведущим для работы. Исключение составляет адрес “Общего вызова”, который адресует все устройства на шине. Когда используется этот адрес, все устройства в теории должны послать сигнал подтверждения. Однако, устройства могут быть сделаны игнорирующими этот адрес. Второй байт посылки общего вызова определяет действие, которое должны произвести устройства. Более подробно процедура описана в разделеНазначение битов первого байта.

 

9.1 Назначение битов первого байта

Первые семь битов первого байта образуют адрес ведомого (см. Рис 15). Восьмой, младший бит, определяет направление пересылки данных. “Ноль” означает, что ведущий будет записывать информацию в выбранного ведомого. “Единица” означает, что ведущий будет считывать информацию из ведомого.

Рисунок 15. Первый байт после сигнала СТАРТ

  1. Старший разряд
  2. Младший разряд
  3. Адрес ведомого

После того, как адрес послан, каждое устройство в системе сравнивает первые семь бит после сигнала СТАРТ со своим адресом. При совпадении устройство полагает себя выбранным как ведомый-приёмник или как ведомый-передатчик, в зависимости от бита направления.

Адрес ведомого может состоять из фиксированной и программируемой частей. Вероятно, что в системе будет несколько таких одинаковых устройств, поэтому при помощи программируемой части адреса становится возможным подключить к шине максимально возможное количество таких устройств. Количество программируемых бит в адресе зависит от количества свободных выводов микросхемы. Например, если устройство имеет 4 фиксированных и 3 программируемых адресных битов, всего 8 одинаковых устройств может быть подключено к шине.

Комитет I2C координирует выделение I2C адресов. Дальнейшая информация может быть получена у представителей Philips, указанных на обложке. Две группы по восемь адресов (0000ХХХ и 1111ХХХ) зарезервированы для целей, указанных в таблице 2. Комбинация бит 11110ХХ адреса зарезервирована для 10-битной адресации (см.Раздел 13.0).

Адрес

R/W бит

Описание

0000000

0

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

0000000

1

Байт СТАРТА

0000001

Х

Адрес CBUS

0000010

Х

Адрес, зарезервированный для шин другого формата

0000011

Х

Зарезервирован для дальнейшего использования

00001ХХ

Х

Зарезервирован для дальнейшего использования

11111ХХ

Х

Зарезервирован для дальнейшего использования

11110ХХ

Х

10-битная адресация

Примечания:

  1. Устройствам запрещается подтверждать прием байта СТАРТА
  2. Адрес CBUS зарезервирован для того, чтобы можно было использовать CBUS-совместимые и I2C-совместимые устройства в одной системе. I2C-совместимым устройствам запрещается реагировать на прием этого адреса.
  3. Адрес, зарезервированный для шин другого формата также предназначен для смешанного использования различных протоколов. Отвечать на прием этого адреса могут только устройства, умеющие работать с другим форматом.

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

Адрес общего вызова адресует все устройства на шине. Однако, если устройству не нужны какие-либо данные, которые могут быть переданы по общему вызову, оно может игнорировать обращение путем не выдачи подтверждения. Если устройству нужны данные общего вызова, оно генерирует подтверждение и становится ведомым-приёмником. Второй и последующий байты должны подтверждаться каждым ведомым-приёмником, способным обработать эти данные. Есть ведомый не может обработать один из байтов, он не генерирует подтверждение. Значение посылки общего вызова всегда определяется вторым байтом (рис. 16).

Существуют два варианта:

  • когда бит направления второго байта равен нулю
  • когда бит направления второго байта равен единице

Когда бит “0” второй байт обладает следующим значением:

  • 00000110. Сбросить устройство и записать программируемую часть адреса. При получении этой посылки все устройства сбрасываются и перечитывают программируемую часть их адресов. Перед выдачей команды необходимо убедиться, что устройства после подачи питания не удерживают линии шины в низком состоянии
  • 00000100. Записать программируемую часть адреса. Все устройства, имеющие возможность задания программируемой части адреса защелкивают текущее значение адреса при принятии этой команды. Устройства не сбрасываются
  • 00000000. Этот код недопустим для использования в качестве второго байта

Последовательности процедуры программирования опубликованы в соответствующих ТУ.

Остальные коды не установлены и устройства должны игнорировать их.

Когда бит “1” двухбайтовая последовательность называется “аппаратный общий вызов”. Это означает, что последовательность передана аппаратным ведущим устройством (таким как сканер клавиатуры), которое не может быть запрограммировано на выдачу конкретного адреса ведомого. Поскольку аппаратный ведущий не знает, какому устройству передается посылка, он может только сгенерировать аппаратный общий вызов и свой собственный адрес – идентифицируя себя для системы (рис. 17).

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

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

Рисунок 16. Формат адреса общего вызова

  1. Первый байт
  2. Второй байт
  3. Младший разряд

Рисунок 17. Пересылка данных из аппаратного ведущего-передатчика

  1. Адрес общего вызова
  2. Второй байт
  3. N байт + подтверждение

Рисунок 18. Передача данных аппаратным ведущим, способным пересылать данные непосредственно ведомым устройствам
(а) Конфигурирующий ведущий посылает адрес начала данных к аппаратному ведущему
(b) Аппаратный ведущий посылает данные выбранному ведомому

  1. Адрес аппаратного ведущего
  2. Запись
  3. Адрес начала данных для аппаратного ведущего
  4. Адрес начала данных от аппаратного ведущего
  5. n байт + подтверждение

9.1.2 Байт СТАРТА

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

В этом случае посылка данных может начинаться со стартовой процедуры, которая много дольше, чем обычный сигнал СТАРТ (рис. 19). Процедура старта состоит из

  • Сигнала СТАРТ
  • Байта СТАРТА
  • Импульса подтверждения
  • Повторного сигнала СТАРТ

Ведущий-передатчик после обычного сигнала СТАРТ передает байт СТАРТА (00000001). Микроконтроллер поэтому может отслеживать линию SDA с меньшей частотой, пока не обнаружит последовательность из семи нулей, по сути – НИЗКИЙ уровень на SDA на протяжении семи тактовых импульсов. После обнаружения этой последовательности микроконтроллер может переключится на более высокую частоту опроса шины, для того чтобы обнаружить повторный сигнал СТАРТ.

Аппаратный приёмник I2C сбросится при приёме повторного сигнала СТАРТ и поэтому проигнорирует байт СТАРТА.

После байта СТАРТА генерируется тактовый импульс для подтверждения. Он присутствует только для совместимости с форматом байта. Устройствам запрещается подтверждать прием байта СТАРТА.

9.1.3 Совместимость с CBUS

Приёмники CBUS могут быть подключены к шине I2C. Однако, при этом должна быть введена третья линия DLEN и бит подтверждения должен быть опущен. Обычно посылки I2C состоят из 8-битовых байтов, в то время как CBUS-совместимые устройства обладают другим форматом.

В смешанной шине I2C-совместимые устройства не должны отвечать на посылки формата CBUS. Для этого зарезервирован специальный адрес CBUS (0000001Х). После передачи адрес CBUS линия DLEN может быть сделана активной и посылается посылка формата CBUS (рис. 20). После сигнала СТОП все устройства опять готовы принимать данные.

Ведущие-передатчики могут посылать данные в CBUS формате после посылки адреса CBUS. Передача заканчивается сигналом СТОП, распознаваемым всеми устройствами.

ПРИМЕЧАНИЕ:
Если конфигурация шины CBUS известна и расширение CBUS-совместимых устройств не предусматривается, конструктору разрешается устанавливать время удержания (??? DLEN?), руководствуясь конкретными требованиями используемых устройств.

Рисунок 19. Процедура байта СТАРТА

  1. Байт СТАРТА
  2. Фальшивое подтверждение (ВЫСОКОЕ)
  3. Сигнал СТАРТ (S)
  4. Сигнал повторный СТАРТ (Sr)

Рисунок 20. Формат данных при посылках с CBUS передатчиком/приемником

  1. Сигнал СТАРТ
  2. Адрес CBUS
  3. Бит направления передачи
  4. Синхроимпульс подтверждения
  5. n бит данных
  6. Сигнал СТОП