Разобравшись с условиями передачи данных по шине 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.
Необходимо сразу оговориться, что первый бит, передающий slave-адрес устройства, содержит признак операции R7W. Когда этот бит установлен в «О», будет осуществляться запись в slave-устройство, когда в «1» — чтение из него.
На рис. 1.29 приведен формат передачи данных от slave-абонента к master-устройству.
Обратите внимание: после чтения информационного байта DATA master-абонент обязан подтвердить получение байта сигналом АСК.
На рис. 1.30 показан так называемый комбинированный формат, применяющийся в случаях, когда осуществляется запись и чтение в одном цикле.
Обычно комбинированные форматы используются для работы с последовательной памятью (для сокращения времени доступа к данным). Изучая рис. 1.30, мы можем заметить, что здесь повторяются знакомые нам по рис. 1.28 и рис. 1.29 форматы. Единственное новшество, введенное в комбинированный формат, — повторное условие Start (repeated Start condition), обозначаемое на рисунке сокращением «Sr». Чуть позже, в соответствующей главе, мы рассмотрим типы последовательной памяти и способы работы с ней.
Как уже было сказано ранее, некоторые slave-адреса используются не для прямой адресации устройств на шине I2C, а для служебных сообщений. Рассмотрим эти сообщения с учетом рис. 1.31, на котором укрупненно показана структура байта адресации.
Таблица 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
0 коммент.:
Отправить комментарий