Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на экзамен Мпп.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
3.57 Mб
Скачать

Організація обробки переривань на мові Сі.

Послідовний інтерфейс зв’язку i2c

В 1992 году фирма Philips выпустила спецификацию интерфейса I2C версии 1.0 со стандартной скоростью передачи данных 100 кбит/с (low-speed) и режимом быстрой передачи (fast-speed) со скоростью до 400 кбит/с, так же поддерживался режим 10-разрядной адресации. Версия 2.0, выпущена в 1998 году и включала в себя быстродействующий режим (HS-mode) со скоростью передачи до 3,4 Мбит/с, и при этом сохранялась возможность работы в режимах low-speed и fast-speed. Версия 2.1, выпущенная в 2000 году, включает в себя незначительные модификации.

Устройства, подключаемые к шине I2C, взаимодействуют принципу ведущий (master) - ведомый (slave). Такая организация шины называется master-организацией и является наиболее типичным случаем (рис. 4.9). Master-устройство (обычно МПУ) задает основной поток данных на шине, формирует необходимые временные интервалы и т. д.

Рисунок 4.9

Рисунок 4.10

Гораздо реже используется режим multi-master (рис. 4.10), когда к одной шине подключено несколько master-устройств. Одновременно на шине может совершать операции только одно master-устройство, а остальные обязаны отключаться. В противном случае возникает шинный конфликт. Для того чтобы исключить такие ситуации, в режиме multi-master должны содержаться процедуры арбитража и синхронизации, устанавливающие порядок работы master-устройств.

Устройства подключаются к шине по схеме типа «звезда» с использованием линии тактового сигнала SCL и двунаправленной линии данных SDA. Передача любого бита по шине происходит при условии стробирования данных SDA по линии SCL, т.е. ведомое устройство получит бит данных посланный мастером только тогда, когда на линии SCL произойдет перепад сигнала из низкого уровня в высокий (передний фронт, rising edge). Смена информации на линии SDA может быть произведена только при нулевом состоянии линии SCL. Это поясняется на рис. 4.11.

Рисунок 4.11

Для распознавания начала и конца передачи в спецификацию шины были введены условия START и STOP показанные на рис. 4.12а, 4.12б соответственно. В фирменной документации условие START имеет условное сокращение «S», а условие STOP – «Р».

Рисунок 4.12

Условие START образуется при отрицательном перепаде сигнала на линии SDA при единичном состоянии линии SCL, а условие STOP возникает при положительном перепаде линии SDA при единичном состоянии линии SCL. Эти состояния всегда генерируются ведущими устройствами. Укрупненно информационный пакет, передаваемый по шине I2С, выглядит так, как показано на рис. 4.13.

Рисунок 4.13

Передача данных по шине производится по 8 бит, после отработки состояния START передатчик последовательно выставляет на линии SDA данные, начиная со старшего бита (MSB) и заканчивая младшим (LSB). Данные стробируются по линии SCL импульсами 1,2...8. Далее следует сигнал подтверждения ACK (acknowledge), свидетельствующий о том, что данные нормально приняты и обработаны. Упрощенно процесс передачи байта по шине I2С показан на рис.4.14.

Рисунок 4.14

Линия SDA ведомого устройства в момент приема информационных битов (MSB-LSB) должна быть выставлена в единичное состояние. В момент заднего фронта импульса 8 на линии SCL ведомое устройство должно выставить на линию SDA нулевой уровень, тем самым подтверждая нормальный прием байта. Ведущее устройство должно проверить состояние линии SDA, затем выдать девятый стробирующий импульс, с которым ведомое устройство выставит на линию SDA высокий уровень. Только после выполнения этой операции передача может быть продолжена.

В случае не подтверждения нормального приема (сигнал АСК имеет высокий уровень) ведущему устройству рекомендовано выполнить условие STOP и повторить передачу. Но существует ситуация, связанная с задержкой обработки данных в ведомом устройстве, которая может возникнуть при получении сигнала АСК. При задержке освобождения линии SDA ведущее устройство ожидает окончания сигнала АСК и после продолжить передачу. В фирменной документации состояние acknowledge условно именуется буквой «А». Если байт, переданный по шине, является последним в пакете, то ведущее устройство без проверки сигнала АСК может выставить состояние STOP, при этом ведомое освобождает линию SDA.

Каждое устройство, связанное при помощи интерфейса I2C, имеет на шине свой уникальный адрес, по которому происходит обращение. Он может быть назначен, а может быть жестко определен. Поскольку все устройства на шине производят обмен данными по общим линиям SDA и SCL, то в начале передачи каждого пакета все ведомые «слушают» линию на предмет опознавания своего адреса. При совпадении своего адреса, соответствующее устройство продолжает прием данных и выдачу сигналов АСК, а остальные ожидают появления состояния STOP. Возможны три формата передачи в сети I2C: ведущее устройство транслирует данные на ведомое, ведущее устройство читает данные с ведомого и комбинированный формат трансляции/чтения. При использовании формата 7-битной адресации передача адреса подчиненного осуществляется 7 битами, а восьмой бит содержит признак операции «чтение/запись» (R/W). Если этот бит установлен в «0», то будет осуществляться запись в ведомое устройство, в если в «1» - чтение из него.

На рис. 4.15 приведен формат передачи данных от ведущего устройства к ведомому. (серым тоном отмечены данные переданные от ведущего к ведомому, а белым цветом — от ведомого к ведущему).

Рисунок 4.15

На рис. 4.16 показан так комбинированный формат позволяющий осуществляется запись и чтение в одном цикле.

Рисунок 4.16

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

Таблица 4.3

Slave-адрес

R/W

Описание служебного адреса

0000 000

0

Общий вызов

0000 000

1

Программный START

0000 001

X

Адрес шины CBUS

0000 010

X

Зарезервирован

0000 011

X

Зарезервирован

0000 1ХХ

X

Код режима HS-MODE

1111 1ХХ

X

Зарезервирован

1111 0ХХ

X

10-битная адресация ведомых устройств

Общим вызовом ведущее устройство адресует все ведомые, подключенные к шине І2С. Следующий байт содержит информационную часть. Программный START используется тогда, когда устройство, соединенное с шиной I2C, не имеет аппаратного интерфейса I2C. Адрес шины CBUS используется при работе этой шиной.

Так как первоначально шина имела 7-разрядную адресацию (максимально 128 устройств), то для увеличения количества устройств на одной шине до 1024 потребовалась поддержка 10 разрядной адресации ведомых. Формат шины предусматривает передачу только посылками из 8 бит (1 байт), то 10-разрядные адреса транслируются 2 байтами. Первый байт имеет структуру 11110XX(R/W), в котором биты, обозначенные символом «Х», являются старшими разрядами 10-разрядного адреса ведомого устройства, а так же должен содержать признак операции - бит R/W. В остальном адресация с помощью 10 разрядов аналогична 7-разрядной адресации и обмен данными происходит в обычном режиме до появления состояния STOP. Подробнее показано на рис. 4.17

Рисунок 4.17

Ведомые устройства сравнивают первый полученный байт со своими данными и, если они совпадают, выдают сигнал АСК (А1 на рис. 4.17), при этом сразу несколько устройств может выдать подтверждение, но при получении второго байта только одно устройство выдаст сигнал АСК (А2), а остальные останутся адресованными по первому байту до получения сигнала STOP. На рис. 4.18 показан формат передачи данных от ведомого устройства к ведущему при 10-разрядной адресации.

Рисунок 4.18

Вначале ведущее устройство первым байтом адресует все ведомые соответствующим кодом, и они подтверждают его получение сигналом АСК (А1). Затем вторым байтом адресуется конкретное устройство с выдачей сигнала АСК (А2). После выполнения повторного условия START (Sr) адресованное ведомое устройство сохраняет возможность обращаться к нему, поэтому при повторении первого байта адреса с другим значением бита R/W и получения АСК (A3) производится чтение данных из ведомого устройства.

Для разработки своих микросхем с интерфейсом I2C производителям необходимо получить лицензию от фирмы Philips. Однако фирмы, не имеющие лицензии, производят микросхемы с интерфейсом, очень похожим на I2C, но как I2C его не обозначают. Рекомендуется внимательно ознакомиться с технической документацией на МПУ, что бы убедиться в наличии или отсутствии работы с интерфейсом I2C.