Интерфейсы периферийных устройств. Ключев А.О - 193 стр.

UptoLike

192
делается повторный старт (RS), после чего читаются данные по заданному
ранее адресу.
3.10.3.8 Арбитраж
Арбитраж помогает решать конфликтные ситуации во время передачи
данных по I²C, когда присутствует несколько ведущих (режим мультимастера).
Ведущий может начинать пересылку данных, только если шина свободна. Если
один ведущий передает на линию данных НИЗКИЙ уровень, в то время как
другой ВЫСОКИЙ, то последний отключается от линии, так как состояние SDA
(НИЗКОЕ) не
соответствует ВЫСОКОМУ состоянию его внутренней линии
данных [13, 46, 81].
Вследствие того, что арбитраж зависит только от адреса и данных,
передаваемых соревнующимися ведущими, не существует центрального
ведущего, а также приоритетного доступа к шине.
Рис. 115. Арбитраж между двумя ведущими (случай одновременной передачи данных).
Что же будет, когда два ведущих начнут передачу одновременно? Тут опять
помогает свойство монтажного И: оба мастера бит за битом передают адрес
ведомого, потом данные. Кто первый выставит на линию «0», тот и побеждает в
этой конфликтной ситуации. Так что очевидно, что самый важный адрес должен
начинаться с нулей, чтобы тот, кто
к нему пытался обращаться, всегда
выигрывал арбитраж. Проигравшая же сторона вынуждена ждать, пока шина не
освободится.
Таким образом, арбитраж может продолжаться до окончания адреса, а если
ведущие адресуют одно и то же устройство, то в арбитраже будут участвовать и
данные. Вследствие такой схемы арбитража при столкновении данные не
теряются.
Ведущему,
проигравшему арбитраж, разрешается выдавать
синхроимпульсы на шину SCL до конца байта, в течение которого был потерян
доступ.
Если в устройство ведущего также встроены и функции ведомого и он
проигрывает арбитраж на стадии передачи адреса, то он немедленно должен
переключиться в режим ведомого, так как выигравший арбитраж ведущий мог
адресовать его.