Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Синхронизация и арбитраж в I2C



3.1. Синхронизация.

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

Синхронизация синхроимпульсов выполняется благодаря схеме подключения “монтажное И”, используемой для вывода SCL интерфейсов I2C. Это означает, что состояния HIGH и LOW на линии SCL вызываются соответствующими устройствами, запускающими отсчет своих полупериодов LOW, как только устройство переводит свой синхросигнал в состояние LOW, оно захватывает линию SCL и удерживает ее в этом состоянии, пока его синхросигнал не переходит в состояние HIGH (см. рис. 5.6). Однако синхросигнал не может изменить состояние линии SCL LOW на HIGH, если другие синхросигналы все еще находятся в полупериоде LOW своего выходного сигнала. Поэтому линия SCL будет находится в состоянии LOW до тех пор, пока его удерживает в этом состоянии устройством с самым длинным полупериодом LOW. Устройства с более короткими полупериодами LOW за это перейдут в состояние HIGH и будут ожидать завершения этого полупериода.

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

Рис. 5.6. Синхронизация синхроимпульсов

в процессе выполнения арбитража

Таким образом синхронизированный синхросигнал SCL генерируется с длительностью полупериода LOW, определяемой устройством с самым длинным полупериодом LOW своего синхросигнала, и длительностью полупериода HIGH, определяемой устройством с самым коротким полупериодом HIGH своего синхросигнала.

3.2. Арбитраж.

Ведущее устройство может начать передачу только в случае, если шина свободна. При этом два или более ведущих устройств могут сгенерировать условие START в пределах минимального времени захвата (tHD;STA) условия START, что приводит к возникновению условия START в шине.

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

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

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

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

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

Рис. 5.7. Процедура арбитража двух ведущих устройств

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

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

· повтор условия START и бит данных;

· условие STOP и бит данных;

· повтор условия START и условие STOP.





Дата публикования: 2015-01-13; Прочитано: 1524 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...