Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Кормилин_2003_Устрой.docx
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
576 Кб
Скачать
☆
      1. Подтверждение приема (квитирование)

Передача данных с подтверждением обязательна. Тактовый импульс, связанный с подтверждением, генерируется ведущим. Передатчик освобождает SDA-линию (переводит в состояние «1») во время тактового импульса подтверждения.

Приемник должен понизить потенциал SDA-линии на время тактового импульса подтверждения, так что она остается постоянно в положении «0» в течение периода высокого уровня тактового импульса подтверждения (рис.3.6).

Рисунок 3.6 - Подтверждение приема на I2C шине

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

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

Если ведущий приемник включен в передачу, он должен сообщать об окончании данных ведомому передатчику посредством невыдачи подтверждения в последнем байте, которым отмечается окончание работы ведомого. Ведомый передатчик должен освободить линию данных, чтобы позволить ведущему выдать STOP-условие.

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

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

Все ведущие генерируют свои собственные тактовые сигналы для SCL-линии при пересылке информации по I2C-шине. Данные являются достоверными только в течение высокого уровня периода тактовой частоты. Для процедуры побитного арбитража необходим устойчивый тактовый сигнал.

Для тактовой синхронизации используется «монтажное И» - соединение I2C интерфейсов с SCL-линией. Оно необходимо для того, чтобы переход «1 → 0» на линии SCL заставил рассматриваемые приборы начать отсчет отключения своих нулевых состояний. Переход в «0» одного из выходов тактовой частоты удержит SCL линию в этом состоянии, пока не будет достигнуто состояние «1» (рис.3.7).

Рисунок 3.7 - Тактовая синхронизация в процедуре арбитража

Однако переход «0→1» у одного прибора не изменит состояния SCL-линии, если выходы других приборов все еще находятся в состоянии «0». Поэтому SCL-линия будет удерживаться в нулевом состоянии устройством с наиболее продолжительным нулем. Устройства с более короткими нулями войдут в состояние ожидания («1») в течение этого времени.

Когда все упомянутые устройства выйдут из своего нулевого состояния, линия синхронизации освободится и перейдет в состояние «1». С этого момента все устройства начнут отсчет длительности своего единичного уровня. Первое устройство, которое завершит свой единичный уровень, снова приведет SCL-линию в состояние «0». Таким образом, на линии тактовой синхронизации длительность генерируемого низкого уровня определяется устройством с наиболее длинным «нулем», а длительность высокого уровня - устройством с наиболее короткой «единицей».

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

На байтовом уровне устройство может получать байты данных в быстром темпе, но требовать больше времени для запоминания полученного байта или подготовки другого байта для передачи. Приемник в этом случае удерживает SCL-линию в состоянии «0» после приема байта и подтверждения его приема, чтобы заставить передатчик войти в состояние ожидания до тех пор, пока приемник не будет готов к приему следующего байта по типу процедуры подтверждения связи.

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