Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[2]

Состояние STOP - переход от "0" к "1" на линии SDA при "1" на линии SCL.

Эти два состояния всегда генерируются мастером.

Детектирование состояний start и stop в специализированных элементах обычно производится аппаратно. При полностью программной реализации шины I2C в микроконтроллерах без аппаратной -части необ-

ходимо как минимум 2 раза проверять состояние линии SDA.

Рисунок 6. START и STOP состояния. ПЕРЕДАЧА ДАННЫХ

Все передачи производятся 8-разрядными байтами. Число байтов, которые могут быть переданы за одну передачу не ограничено. Каждый байт должен сопровождаться битом подтверждения (ACK). Данные передаются начиная со старшего бита (MSB),(Рисунок 7).

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

Рисунок 7. Передача данных по шине I2C.


ACKNOWLEDGE

Для подтверждения передачи байта передатчик устанавливает линию SDA в "1" в течение синхронизирующего импульса. Приемник при этом должен выставить "O" на SDA (рисунок 8). Естественно при этом должны бить выдержаны определенные временные соотношения.

Обычно, приемник, который был адресован, должен генерировать сигнал ACK после того, как каждый байт был получен, за исключением того, когда сообщение начинается с адресом CBUS.

Когда подчиненный приемник не подтверждает подчиненный адрес (например, устройство не готово, потому что это выполняет некоторую внутреннюю функцию), линия SDA данных должна быть оставлена в "1". Мастер затем может выдать состояние STOP, чтобы прервать передачу.

Если подчиненный приемник подтверждает подчиненный адрес, но, некоторое время позднее не может получать больше байты данных, мастер должен приостановить передачу.

При приеме последнего байта в серии, вместо сигнала ACK мастер может выставить состояние STOP, при этом подчиненный передатчик должен освободить линию данных.

CLOCK PULSE FCFi ACKNOWLEDGMENT

Рисунок 8. Подтверждение передачи.

АРБИТРАЖ И СИНРОНИЗАЦИЯ

Синхронизация

Каждое мастер-устройство генерирует собственные сигналы синхронизации на линии SCL. Данные на линии SDA действительны только течение ВЫСОКОГО уровня SCL.

Синхронизация осуществляется благодаря "монтажному-И" на линии SCL. Это означает, что состояние "O" на линии SCL будет длиться до тех пор, пока все мастер-устройства не освободят линию синхронизации (рисунок 9). Линия SCL будет, следовательно, задержана в уровне "O" элементом с самым длинным уровнем "O". Элементы с более коротким уровнем "O" при этом входят в состояние ожидания.


START COUNTING

Рисунок 9. Синхронизация в течение процедуры арбитража

Арбитраж

Мастер может начинать передачу только, если шина свободна. Два или больше мастера могут генерировать состояние START практически одновременно, поэтому необходим арбитраж между ними, для того чтобы выяснить, кто же их них все-таки был первым. Для этого используется линия SDA - благодаря тому, что она, как и SCL выполнена по схеме "монтажное-И" (Рисунок 10 показывает процедуру арбитража для двух мастеров).

Рисунок 10. Процедура арбитража двух мастеров.

ФОРМАТЫ С 7-битной адресацией

Передача с 7-битной адресацией показана на рисунке 11.

После выдачи состояния START следует передача адресного байта, при этом 8-й бит адреса определяет направление передачи данных ("0" -запись данных от мастера к подчиненному, "1" - чтение данных из подчиненного к мастеру). Передача данных всегда завершается состоянием STOP, сгенерированного мастером.

Возможные форматы передачи данных:



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7]