Шина I2C. Ускоренный режим (Fast mode). Схема подключения к I2C шине. Процесс передачи данных, страница 2

Устройства, подключаемые к I2С шине, по своему назначению делятся на ведущие (Master) и ведомые (Slave). Для правильной работы, как минимум, одно из подключенных к шине устройств должно быть ведущим. Ведущее устройство берет на себя все управление шиной. Оно вырабатывает тактовые импульсы на шине синхронизации (SCL), а также инициирует сеансы передачи информации. Информация может передаваться как от ведущего устройства к ведомому, так и в обратном направлении. В обоих случаях процесс передачи информации управляется ведущим устройством. В зависимости от направления передачи информации, как Master, так и Slave устройство в разные моменты времени могут выступать в качестве передатчика (Transmitter), либо в качестве приемники (Receiver). Если информация передается от Master к Slave то Master-устройство выступает как передатчик, a Slave — как приемник.  При передаче информации от Slave к Master, уже Master станет приемником, a Slave, соответственно, передатчиком.

Протокол обмена по I2С шине реализуется обычно программным путем. Для подключения микроконтроллера к проводникам I2С шины обычно используются любые две линии любого порта ввода/вывода микроконтроллера. Существуют микроконтроллеры, в которых I2С интерфейс реализован аппаратным путем. Однако они имеют большую стоимость и применяются значительно реже. В качестве ведомых (Slave) устройств обычно используют специализированные микросхемы, имеющие встроенный I2С интерфейс.

Показана принципиальная электрическая схема шины I2С. На схеме условно показаны два устройства, подключенные к линиям SDA и SCL шины. Остальные устройства подключаются точно также. С электрической точки зрения линии SDA и SLC построены одинаково. Причем каждый из двух выводов I2С интерфейса любой микросхемы должен быть и входом и выходом. Для правильной работы шины все выходные каскады должны быть построены по схеме с открытым коллектором, как это показано на рисунке.  Общие нагрузочные резисторы (R,,), один для линии SDA и один для SLC, могут быть установлены в любом месте. Но чаще всего эти резисторы ставятся рядом с ведущим устройством. Через каждый из таких резисторов на линию поступает напряжение питания от источника VDD.

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

003

Для того, чтобы приведенная схема могла считаться I2C шиной, необходимо, чтобы во всех входящих в нее микросхемах была реализована определенная логика работы. Набор правил, определяющий логику взаимодействия всех элементов I2С шины, и называется протоколом I2С шины. Далее подробно рассмотрены все особенности протокола I2С шины в стандартном режиме работы (Standard Mode).

Передача информации от ведущего устройства к ведомому. При этом ведущее устройство выступает в качестве передатчика, а ведомое в качестве приемника. Для лучшего понимания происходящих процессов сигнал на линии SDA на рисунке условно изображен в виде двух разных сигналов: выходные данные передатчика и выходные данные приемника. На самом деле эти два сигнала присутствуют на линии одновременно. Они объединены между собой благодаря эффекту схемного «ИЛИ», который образуется при параллельном включении нескольких каскадов с открытым коллектором (стоком). Разделение одного сигнала на два позволяет легче понять, какое из двух устройств вызвало «подсаживание» линии в тот или иной момент времени.

Процесс передачи данных всегда начинается со СТАРТ-условия.

Каждый байт передаётся за 9 тактов сигнала синхронизации.  Девятый такт используется для сигнала подтверждения.

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

006