Арбитраж

Ведущий может начинать пересылку данных только если шина свободна. Два и более ведущих могут сгенерировать сигнал СТАРТ за время минимального удерживания (Thd;sta), что ведет к определенному сигналу СТАРТ на шине.

Арбитраж происходит на шине SDA, в периоды, когда шина SCL находится в ВЫСОКОМ состоянии. Если один ведущий передает на линию данных НИЗКИЙ уровень, в то время как другой - ВЫСОКИЙ, то последний отключается от линии, так как состояние SDL (НИЗКОЕ) не соответствует ВЫСОКОМУ состоянию его внутренней линии данных.

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

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

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

Рисунок 8 показывает процедуру арбитража двух ведущих. Конечно, большее количество ведущих может быть вовлечено в процесс. В момент, когда обнаруживается различие между уровнем внутренней линии данных и SDA, выход первого ведущего принимает ВЫСОКОЕ значение, не влияя таким образом на пересылку данных выигравшего ведущего.

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

Особое внимание следует обратить на ситуацию, когда во время арбитражной процедуры на шину передается повторный сигнал СТАРТ или сигнал СТОП. Если существует возможность возникновения такой ситуации, то ведущие должны послать повторный сигнал СТАРТ или сигнал СТОП в одних и тех же позициях кадра. Другими словами, арбитраж запрещен между:

повторным сигналом СТАРТ и битом данных

сигналом СТОП и битом данных

повторным сигналом СТАРТ и сигналом СТОП

Рисунок 8. Арбитраж между двумя ведущими

передатчик 1 проигрывает арбитраж - его линия данных не совпадает с SDA

 

Использование механизма синхронизации как процедуры управления связью

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

На уровне байта, если устройство может принимать байты данных с большой скоростью, но требует определенное время для сохранения принятого байта или подготовки к приему следующего, то оно может удерживать линию SCL в НИЗКОМ состоянии после приема и подтверждения байта, переводя таким образом передатчик в состояние ожидания.

На уровне битов, устройство такое как микроконтроллер без встроенных аппаратных цепей I2C или с ограниченными цепями может замедлить частоту синхроимпульсов путем продления их НИЗКОГО периода. Таким образом скорость передачи любого ведущего адаптируется к скорости медленного устройства.

Рисунок 9. Посылка данных

Сигнал СТАРТ

Адрес

Бит направления (R/W^)

Подтверждение

Данные

Сигнал СТОП

 

Форматы с 7-битным адресом

Посылки данных происходят в формате, показанном на рис. 10. После сигнала СТАРТ посылается адрес ведомого. После 7 бит адреса следует бит направления данных (R/W^), “ноль” означает передачу (запись), а “единица” - прием (чтение). Пересылка данных всегда заканчивается сигналом СТОП, генерируемым ведущим. Однако, если ведущий желает оставаться на шине дальше, он должен выдать повторный сигнал СТАРТ и затем адрес следующего устройства. При таком формате посылки возможны различные комбинации чтения/записи.

Возможные форматы:

Ведущий-передатчик передает ведомому-приёмнику. Направление пересылки данных не изменяется

Ведущий читает ведомого немедленно после пересылки первого байта (рис. 11). В момент первого подтверждения ведущий-передатчик становится ведущим-приёмником и ведомый-приёмник становится ведомым-передатчиком.

Подтверждение тем не менее генерируется ведомым. Сигнал СТОП генерируется ведущим

Комбинированный формат (рис. 12). При изменении направления пересылки данных повторяется сигнал СТАРТ и адрес ведомого, но бит направления данных инвертируется. Если ведущий-приёмник посылает повторный сигнал СТАРТ, он обязан предварительно послать сигнал неподтверждения.

Рисунок 10. Ведущий-передатчик адресует ведомого-приемника 7-битным адресом. Направление пересылки не изменяется

От ведущего к ведомому

От ведомого к ведущему

Адрес ведомого

Бит направления

Данные

Пересылаемые данные (n байт + подтверждение)

А - Подтверждение

Неподтверждение

Сигнал СТАРТ

Сигнал СТОП

Рисунок 11. Ведущий читает из ведомого непосредственно после первого байта

Рисунок 12. Комбинированный формат

Адрес ведомого

Чтение или запись

n байтов + подтверждения

Сигнал повторного СТАРТА

Направление пересылки может измениться в этой точке

Направление пересылки данных и битов подтверждения зависит от битов направления

ПРИМЕЧАНИЯ:

Комбинированные форматы могут быть использованы, например, для управления последовательной памятью. Во время первого байта данных можно передавать адрес в памяти, который записывается во внутреннюю защелку. После повторения сигнала СТАРТа и адреса ведомого выдаются данные из памяти.

Все решения об авто-инкременте или декременте адреса, к которому произошел предыдущий доступ, принимаются конструктором устройства

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

I2C-совместимые устройства должны сбрасывать логику шины при получении сигнала СТАРТ или повторный СТАРТ и подготавливаться к приему адреса.