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

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

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

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

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

Рисунок 3.8 представляет процедуру арбитража для двух ведущих. Конечно, можно рассмотреть и больше (в зависимости от того, сколько ведущих подсоединено к шине). В момент высокого уровня на линии SCL, когда фиксируется разница между внутренним уровнем данных ведущего прибора 1, генерирующего данные DATA, и действительным уровнем на SDA-линии, выключается вывод данных этого устройства. Это не влияет на передачу данных, осуществляемую победившим ведущим.

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

Рисунок 3.8 - Процедура арбитража между двумя ведущими

Особое внимание нужно обратить на случай, когда по шине передается повторное START- или STOP-условие в процессе последовательной передачи, в момент, когда процедура арбитража все еще осуществляется. Если все же такая ситуация произошла, то рассматриваемые ведущие должны послать это повторное START- или STOP-условие в той же позиции в рамках формата. Таким образом, арбитраж не допускается между битом данных и START или STOP-условиями и между самими START и/или STOP-условиями.

      1. Формат 7-и битной адресации

Передача данных осуществляется по формату, показанному на рис. 3.9.

Рисунок 3.9 - Завершенная передача данных

После START-условия (S) посылается адрес ведомого. Этот адрес имеет длину 7 бит, за ним следует восьмой бит, который является битом направления данных (R/W - чтение/запись). «Нуль» означает передачу (WRITE), «единица» - это запрос данных (READ). Передача данных всегда обрывается STOP-условием (Р), генерируемым ведущим. Однако, если ведущий еще желает продолжать обмен информацией на шине, он может выдать повторное START-условие (Sr) и адресовать другого ведомого без предварительного генерирования STOP-условия. При такой передаче возможны различные комбинации форматов чтения и записи.

Перечислим возможные форматы передачи данных.

  1. Ведущий передатчик передает ведомому приемнику. После передачи адреса направление передачи данных не меняется (рис. 3.10). Завершение передачи может инициировать ведомый приемник невыдачей подтверждения или ведущий передатчик выдачей STOP-условия.

Рисунок 3.10 - Ведущий передатчик передает на ведомый приемник

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

Рисунок 3.11 - Ведущий приемник принимает от ведомого передатчика

  1. Комбинированный формат (рис. 3.12). Для примера рассмотрен случай приема данных и последующей передачи. Для изменения направления в передаче повторяются и START-условие, и адрес ведомого, но R/W бит заменяется на противоположный. Аналогично, с выдачей повторного START-условия, можно действовать для изменения адреса ведомого.

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