Аппаратная реализация I2C. Часть 5 Протокол I2C – формат передачи

Разобравшись с условиями передачи данных по шине I2C, обра­тим внимание на форматы передачи (протоколы). Что такое фор­мат? И не проще ли использовать передачу по 8 битов, как это пред­писывается, наполняя их содержимым по своему усмотрению? Ока­зывается, нет. Каждое устройство должно иметь на шине свой уникальный адрес, по которому к нему можно обратиться. Адрес устройства всегда располагается в определенном месте (специалисты говорят: в определенных ячейках внутренней памяти). Адрес может быть назначен, а может быть жестко определен. В случае шины I2C адреса устройств, называемые slave-адресами, жестко определяются.

Они «закладываются» при изготовлении микросхем и не подлежат переназначению, то есть модификации. В принципе часто все же пе­реназначить адрес можно (и это делается с помощью 2—3 битов), но, за редким исключением, эти биты нужно предварительно определить аппаратно, то есть установить перемычки на соответствующие выво­ды. Этот принцип был заложен еще на заре возникновения шины для того, чтобы предельно упростить протокол обмена и аппаратную реализацию интерфейсов. Отметим, что значение slave-адреса можно узнать из документации на соответствующую микросхему.

Поскольку все абоненты шины не имеют иных способов обще­ния, кроме обмена данными по линиям SDA и SCL, в момент нача­ла передачи все slave-абоненты «слушают» линию на предмет опо­знавания своего slave-адреса. Опознавший свой адрес абонент про­должает прием данных и выдачу сигналов АСК, остальные только следят за моментом выдачи состояния Stop. В связи с этим воз­можны три формата передачи, определяемые как 7-битные (тради­ционные):

• master транслирует данные на slave;

• master читает данные со slave;

• комбинированный формат трансляции/чтения.

Исторически сложилось, что вначале возник формат 7-битной адре­сации, при котором осуществляется передача slave-адреса 7 битами, а восьмой бит должен содержать признак операции «чтение/запись» (R/W). Легко посчитать — при 7-битной адресации на шине может при­сутствовать только 128 устройств с уникальными адресами. Реально устройств и того меньше, так как некоторые адреса зарезервированы под некоторые служебные функции, о которых мы расскажем ниже.

На рис. 1.28 приведен формат передачи данных от master-устрой­ства к slave-абоненту. Заметим, что прямоугольники, отображенные на этом и последующих рисунках серым тоном, относятся к направ­лению передачи от master к slave, а белым цветом — от slave к master.

clip_image002[4]

Необходимо сразу оговориться, что первый бит, передающий slave-адрес устройства, содержит признак операции R7W. Когда этот бит установлен в «О», будет осуществляться запись в slave-устройст­во, когда в «1» — чтение из него.

На рис. 1.29 приведен формат передачи данных от slave-абонента к master-устройству.

Обратите внимание: после чтения информационного байта DATA master-абонент обязан подтвердить получение байта сигналом АСК.

clip_image004[4]

На рис. 1.30 показан так называемый комбинированный формат, применяющийся в случаях, когда осуществляется запись и чтение в одном цикле.

clip_image006[4]

Обычно комбинированные форматы используются для работы с последовательной памятью (для сокращения времени доступа к дан­ным). Изучая рис. 1.30, мы можем заметить, что здесь повторяются знакомые нам по рис. 1.28 и рис. 1.29 форматы. Единственное нов­шество, введенное в комбинированный формат, — повторное усло­вие Start (repeated Start condition), обозначаемое на рисунке сокраще­нием «Sr». Чуть позже, в соответствующей главе, мы рассмотрим ти­пы последовательной памяти и способы работы с ней.

Как уже было сказано ранее, некоторые slave-адреса используют­ся не для прямой адресации устройств на шине I2C, а для служебных сообщений. Рассмотрим эти сообщения с учетом рис. 1.31, на кото­ром укрупненно показана структура байта адресации.

clip_image008[4]

Таблица 1.3. Служебные адреса

Slave-адрес

R/W

Описание служебного адреса

0000 000

0

Общий вызов

0000 ООО

1

Программный Start ;

0000 001

x

Адрес шины CBUS

0000 010

x

Зарезервирован для других форматов шины

0000 011

x

Зарезервирован на будущее

0000 1хх

x

Код режима Hs-mode

1111 1хх

x

Зарезервирован на будущее

1111 Охх

x

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

Литература:


Б. Ю. Семенов, «ШИНА 12С В РАДИОТЕХНИЧЕСКИХ КОНСТРУКЦИЯХ» ,Москва СОЛОН-Р 2002

Предлагаю ознакомиться с аналогичными статьями: