0000 001 X Адрес устройства шины CBUS (для совместимости)
0000 010 X Адрес для устройств иных шин
0000 011 X Зарезервировано
0000 1XX X Код ведущего устройства режима Hs
1111 1XX X Зарезервировано
1111 0XX X Признак 10-битной адресации

При 7-битной адресации в первом байте после S (Sr) ведущее устройство передает 7 бит адреса (А[6:0] в битах [7:1]) и признак операции RW (в бите 0 RW=1 — чтение, RW=0 — запись). Адреса ведомых устройств не должны попадать в области, указанные в таблице. Диапазоны адресов устройств различных типов централизованно выдаются изготовителям микросхем фирмой Philips. Для микросхем памяти, например, 7-битный адрес содержит две части: старшие 4 бита А[6:3] несут информацию о типе устройства (EEPROM — 1010), а младшие 3 бита А[0:2] определяют номер устройства данного типа на шине. Микросхемы с интерфейсом I²C имеют три адресных входа, коммутацией которых на логические уровни 1 и 0 задается номер устройства, на который оно «отзовется», а тип устройства «зашит» в нем самом его изготовителем.

Когда ведущее устройство является передатчиком данных, оно в первом байте передает адрес ведомого устройства, при этом RW=0. Выбранное ведомое устройство отзывается подтверждением (ACK=0), после чего ведущее устройство посылает один или несколько байт данных, на каждый из которых ведомое устройство должно отвечать подтверждением.

Когда ведущее устройство является приемником данных, оно в первом байте передает адрес ведомого устройства с RW=1. Выбранное ведомое устройство также отзывается подтверждением (ACK=0), после чего происходит смена направления передачи и данные уже передает ведомое устройство. Ведущее устройство подтверждает каждый принятый байт, кроме последнего.

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

Отметим, что спецификация I²C не оговаривает правил модификации внутреннего (для микросхемы) адреса данных при последовательных обращениях — их определяет разработчик устройства в соответствии с его функциями. Для памяти естественен автоинкремент адреса, упрощающий последовательные обращения. Для регистроориентированных устройств автоинкремент обычно не нужен.

Специальные коды, приведенные в табл. 11.1, трактуются следующим образом.

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

♦ Байт Start предназначен для облегчения программной реализации протокола I²C (для функций ведомых устройств, не имеющих полной аппаратной реализации протокола). На байт Start не должно отвечать ни одно устройство. Формируемый сигнал SDA (рис. 11.2) может быть использован как запрос аппаратного прерывания, по которому процессор «вплотную» займется обработкой сигналов I²C. До получения этого байта процессор (микроконтроллер) может не отвлекаться на слежение за сигналами интерфейса.

♦ На адреса шины CBUS (трехпроводный «родственник» шины I²C) и иных шин устройства I²C отвечать не должны.

♦ При использовании 10-битной адресации биты [2:1] содержат старшую часть адреса, форматы 10-адресных посылок рассмотрены ниже.

Рис. 11.2. Временна́я диаграмма байта Start

Посылка общего вызова используется для одной из двух целей, определяемых вторым байтом, младший бит которого называется В. При В=0 устройства, принявшие общий вызов, должны считать программируемую часть своего аппаратного адреса, выполнив (второй байт 00000110b) или не выполнив (000000100b) внутреннюю процедуру сброса. Другие значения байта устройства должны игнорировать. Каким образом программируется адрес, зависит от устройства (указывается в его описании). При В=1 общий вызов используется для широковещательной передачи данных. В этом случае ведущее устройство в старших 7 битах второго байта сообщает свой адрес (тот же, на который оно отзывается в роли ведомого), а далее посылает требуемое количество байт данных, которые оно желает донести до неизвестного ему приемника. Приемник (как правило, это интеллектуальное устройство) должен отвечать подтверждением на каждый принятый байт начиная с первого (общий вызов), затем на адрес ведущего устройства и последующие байты данных.

Широковещательная передача может использоваться, например, аппаратным контроллером клавиатуры, не знающим, на какой адрес посылать свои асинхронно возникающие сообщения. Вместо этого возможна и иная схема: по включении (и сбросу) это устройство становится ведомым приемником, которому ведущее устройство (системный контроллер) сообщит адрес потребителя информации для дальнейших «узконаправленных» передач, в которых это устройство будет уже ведущим.

Введение 10-битной адресации стало решением проблемы дефицита адресов: при 7-битной адресации с учетом зарезервированных комбинаций остается только 112 адресов, при 10-битной доступны еще 1024 адреса. Передача данных ведущим устройством с 10-битной адресацией выглядит просто: в первом байте после S (Sr) биты 2:1 несут старшие биты адреса, бит 0 — признак RW=0; второй байт несет младшие 8 бит адреса, а последующие байты — передаваемые данные. Приемник дает подтверждения обычным способом. Прием данных ведущим

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату