Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
375
Добавлен:
21.05.2015
Размер:
7.55 Mб
Скачать
      1. Синхронизация и задержка импульсов синхронизации

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

Предусмотрено три типа задержки импульсов синхронизации (см. рисунок 19.8).

Рисунок 19.8. Задержка синхронизации

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

Когда синхронизацию задерживает подчиненное устройство, ведущее переходит в состояние ожидания и наоборот.

      1. Арбитраж

Ведущее устройство имеет право начинать транзакцию только при условии нахождения шины в состоянии IDLE. Поскольку шина TWI является мультимастерной, транзакцию могут инициировать два или более устройств одновременно. В результате, шина становится занятой сразу несколькими ведущими устройствами. Разрешение такой конфликтной ситуации достигается применением механизма арбитража, в соответствии с которым теряет контроль над шиной каждое ведущее устройство, которое не способно передать высокий уровень на линии SDA. Те ведущие устройства, которые в процессе арбитража потеряли контроль над шиной, переходят в состояние ожидания до тех пор, пока шина вновь не перейдет в состояние IDLE (что происходит после передачи условия STOP), а затем вновь пытаются получить контроль над шиной. Подчиненные устройства не принимают никакого участия в арбитраже.

Рисунок 19.9. Арбитраж шины TWI

На рисунке 19.9 показан пример, когда два ведущих устройства пытаются получить контроль над шиной. Оба устройства успешно передают условие START, однако устройство 1 теряет контроль в ходе арбитража, когда пытается передать высокий уровень (бит 5), в то время как устройство 2 передает низкий уровень. Арбитраж недопустим между передачей условия повторного старта и бита данных, между условием STOP и битом данных, а также между условием повторного старта и условием STOP. При необходимости арбитража на этих интервалах, его необходимо реализовать программно.

      1. Синхронизация ведущих устройств

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

Рисунок 19.10. Синхронизация ведущих устройств

Как только линия SCL перейдет из высокого состояния в низкое, все ведущие устройства переведут свой выход синхронизации в низкое состояние и начнут отчет длительности импульса синхронизации низкого уровня. Длительность этого импульса может отличаться у разных ведущих устройств. Если ведущее устройство (в нашем примере устройство 1) завершит отсчет длительности низкого уровня, оно освободит линию SCL. Однако, линия SCL не перейдет в высокое состояние, пока её не освободят все остальные ведущие устройства. Таким образом, линия SCL будет удерживаться в низком состоянии устройством с самым длительным импульсом низкого уровня (устройство 2).

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

Соседние файлы в папке Архитектура ЭВМ