Как узнать, занята ли шина I2C в среде Multi master? - PullRequest
0 голосов
/ 19 февраля 2019

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

1 Ответ

0 голосов
/ 19 февраля 2019

Все устройства (как ведущие, так и ведомые) будут отслеживать состояние шины.

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

Мастер, потерявший арбитраж, сообщит о потере арбитража (через некоторые флаги в регистре) и будет ждать, пока не будет найдено условие Stop.

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

Нет способа узнатьесли автобус свободен, пробуя линии автобуса только один раз.Да, если вы видите, что какая-то строка имеет 0, это определенно означает, что шина занята, но когда вы видите обе линии как 1, это еще не значит, что шина еще свободна.Все устройства должны отслеживать изменения состояния шины для определения условий пуска / останова.

...