Прежде чем перейти к описанию протокола обмена по шине, отметим, что собственно ее устоявшееся название (ай-ту-си), равно как и наименования линий (SDA и SCL), является зарегистрированным наименованием. Авторские права на эти названия принадлежат фирме Philips. Соответственно другие фирмы, производящие микросхемы с интерфейсом I2C и указывающие его наличие, как такового, в технической документации, делают это по лицензии разработчика [2]. К примеру, фирма Microchip, специализирующаяся на выпуске
SDA--i-*--*--*- *--
SCL -1-1-1-1-ii-
Рис. 1.18. Соединение элементов с разными напряжениями питания микроконтроллеров, имеет такую лицензию. Однако и фирмы, не имеющие лицензии, производят микросхемы с интерфейсом, очень похожим на I2C, но как I2C его не обозначают, а значит, протокол обмена может немного отличаться от стандартизованного. Делается это для обеспечения чистоты правовых отношений, которые за рубежом соблюдаются несколько более жестко, нежели у нас в стране. В любом случае, используя в своих разработках аналоги фирменных микросборок, рекомендуется внимательно ознакомиться с технической документацией.
Самой простой конфигурацией шины I2C, как уже было сказано, является master-организация. С нее мы и начнем рассмотрение протокола обмена данными.
Передача любого бита по шине происходит при условии строби-рования данных SDA по линии SCL. Предположим, что master-устройство выставило бит данных «О» или «1» на линию SDA. Slave-устройство получит этот бит только тогда, когда на линии SCL произойдет перепад сигнала из низкого уровня в высокий (так называемый положительный перепад). Отсюда следует первое правило организации протокола шины: смена информации на линии SDA может быть произведена только при нулевом состоянии линии SCL.
Мы уже знаем, что шина в неактивном состоянии имеет на линиях SDA и SCL высокие уровни. Но каким образом slave-устройства могут узнать, что началась передача и что она окончилась? Для распознавания начала и конца передачи в спецификацию шины были введены условия Start и Stop. На рис. 1.20 представлено условие Start, на рис. 1.21 — условие Stop. В фирменной документации условие Start имеет условное сокращение «S», условие Stop — «Р».
Рис. 1.20. Условие START
Условие Start образуется при отрицательном перепаде сигнала на линии SDA при единичном состоянии линии SCL. И наоборот, условие Stop возникает при положительном перепаде линии SDA при единичном состоянии линии SCL. Эти состояния всегда должны генерироваться master-устройствами. Таким образом, укрупненно информационный пакет, передаваемый по шине I2C, выглядит так, как показано на рис. 1.22.
Для определения состояний Start и Stop в составе slave-устройства обычно предусматривается специальная аппаратная схема, так как реализовать программно интерфейс slave-абонента довольно трудно: появляется необходимость постоянной проверки линии SDA на предмет опознавания данных.
Существует также состояние «повторный Start», которое может возникнуть в середине информационного пакета. Чуть позже мы рассмотрим ситуации, когда появляется условие «повторный Start».
Передача данных по шине производится по 8 битов, после чего следует сигнал подтверждения (acknowledge). Сигнал подтверждения свидетельствует о том, что данные нормально приняты и обработаны... Но обо всем по порядку! Взгляните на рис. 1.23, отражающий процесс передачи байта по шине I2C.
После отработки состояния Start передатчик последовательно выставляет на линии SDA данные, начиная со старшего бита (MSB) и заканчивая младшим (LSB). Данные стробнруются по линии SCL импульсами 1...8.
Обратите внимание: линия SDA приемника (slave-абонента) в момент приема информационных битов (MSB-LSB) должна быть выставлена в единичное состояние. Физически это означает, что транзистор, подключенный к линии SDA, должен быть закрыт. В момент отрицательного перепада импульса 8 на линии SCL slave-абонент должен выставить на линию SDA нулевой уровень — открыть транзистор. Тем самым приемник подтверждает нормальный прием байта. Передатчик (master-абонент) должен выставлять на линию SDA единичное состояние. Благодаря тому что линия организована по способу «монтажное И», ее состояние будет определяться только slave-абонентом. Передатчик должен проверить состояние линии SDA, затем выдать девятый стробирующий импульс, с которым slave-абонент выставит на линию SDA высокий уровень, проверить выполнение этой операции и лишь после продолжить передачу (рис. 1.24). В случае неподтверждения нормального приема (сигнал АСК имеет высокий уровень) передатчику желательно выполнить условие Stop и повторить передачу.
Третья ситуация, которая может возникнуть при получении сигнала АСК, связана с задержкой обработки данных в slave-абоненте, как показано на рис. 1.25.
Задержка освобождения линии SDA не свидетельствует о неправильном обмене информацией, поэтому master-абоненту достаточно дождаться окончания АСК и продолжить передачу. Добавим также, что в фирменной документации состояние acknowledge условно именуется буквой «А». Если байт, переданный по шине, является последним в пакете, master-устройство вместо проверки сигнала АСК может выставить состояние Stop, и slave-абонент должен освободить линию SDA.
Описанные состояния являются вполне достаточными для функционирования шины I2C с одиночным master-устройством. Как правило, master-абонента очень легко организовать программным способом, что и используется многими разработчиками. Для реализации режима multi-master, как уже было сказано, должны быть реализованы дополнительные состояния синхронизации и арбитража. Вначале рассмотрим синхронизацию.
Действительно, если на шине присутствует несколько master-абонентов, все они наделены возможностью генерации сигнала SCL. Синхронизация между этими сигналами достигается благодаря функции «монтажное И» на линии SCL. Таким образом, состояние «О» продлится до тех пор, пока все master-устройства не выставят на линии SCL высокий уровень, и линия SCL будет задержана в состоянии «О» абонентом с самым длинным циклом нулевого уровня. Остальные абоненты, уже освободившие линию, должны войти в состояние ожидания (рис. 1.26).
Литература:
Б. Ю. Семенов, «ШИНА 12С В РАДИОТЕХНИЧЕСКИХ КОНСТРУКЦИЯХ» ,Москва СОЛОН-Р 2002
0 коммент.:
Отправить комментарий