Статья опубликована в рамках: XXXV Международной научно-практической конференции «Научное сообщество студентов: МЕЖДИСЦИПЛИНАРНЫЕ ИССЛЕДОВАНИЯ» (Россия, г. Новосибирск, 18 декабря 2017 г.)
Наука: Технические науки
Секция: Радиотехника, Электроника
Скачать книгу(-и): Сборник статей конференции
дипломов
ОПИСАНИЕ ПРОТОКОЛА УПРАВЛЕНИЯ ШИНОЙ I2C
Чтобы обеспечить максимально эффективное использование таких общих решений для выгоды конструкторов и самих производителей, а также для повышения общей степени производительности различной аппаратуры и упрощения применяемых схемотехнических узлов, компания Philips Semiconductors задалась целью разработать предельно простую двухпроводную двунаправленную шину, обеспечивающую наиболее продуктивное межмикросхемное управление. Шина состоит из линии данных (SDA) и линии тактирования (SCL). Первая спецификация вышла в 1982. В 1992 вышла спецификация v1.0, многие устройства полностью поддерживают именно эту версию стандарта.Данная шина обеспечивает передачу данных через интерфейс I2C.
I2C является двунаправленной, последовательной шиной данных. Скорость передачи в стандартном режиме (спецификация v1.0) составляет 100 кбит/с, более новые версии стандарта допускают скорость 400 кбит/с, 1 Мбит/с и 3,4 Мбит/с. Каждое подключенное к шине устройство адресуется уникальным адресом, число устройств на шине ограниченно максимально допустимой ёмкостью шины (400 пФ). Каждая линия шины подключена к питанию через подтягивающий резистор, то есть линии в отсутствии передачи находятся в состоянии логической “1”. Устройства подключены к шине таким образом, что любое устройство может удерживать линию в состоянии логического “0”, в не зависимости от сигналов других устройств (т.н. wired AND). Это позволяет “медленным” устройствам удерживать линию тактирования до готовности к передаче данных [1].
Даже если посмотреть кратко описание интерфейсов UART, SPI, I2C, можно выделить следующие преимущества последнего:
- Для работы нужно всего две линии – синхронизации и данных. Любое устройство, которое подключается к такой шине, в дальнейшем может программно адресоваться по абсолютно уникальному адресу. В любой момент существует простое отношение, позволяющее ведущим работать в качестве ведущего-передатчика или ведущего-приемника.
- Данная шина предусматривает возможность иметь сразу несколько ведущих, предоставляя все необходимые средства для определения коллизий, а также арбитраж, позволяющий предотвратить повреждение данных в том случае, если два или большее количество ведущих начинает одновременно передавать информацию. В стандартном режиме предусматривается только передача последовательных восьмибитных данных при скорости не более 100 кбит/с, а в быстром режиме этот порог может быть увеличен в четыре раза.
- В микросхемах используется специальный встроенный фильтр, который достаточно эффективно подавляет всплески и обеспечивает максимальную целостность данных.
- Предельно возможное количество микросхем, которые могут быть подсоединены к одной шине, ограничивается только ее предельно возможной емкостью, составляющей 400 пФ.
Начало обмена данными на шине инициирует ведущее устройство, путём формирования состояния СТАРТ: перехода линии SDA из состояния логической “1” в “0” при высоком уровне SCL. Другие устройства на шине воспринимают это как начало процедуры обмена. Тактирования на линии SCL так же осуществляет ведущий. Концом передачи является состояние СТОП: ведущее устройство изменяет состояние линии SDA из логического “0” в “1” при высоком уровне на SCL. Данные на линии SDA могут изменяться при низком уровне SCL и должны быть постоянны при высоком. Между состояниями СТАРТ и СТОП линия считается занятой.
Пакет данных в I2C имеет длину 9 бит: 8 бит данных от передатчика и 1 бит подтверждения от приёмника. После состояния СТАРТ ведущий передаёт адресный пакет: 7 байт адреса устройства, которому предназначены данные, и бит режима: чтение или запись. Устройство, узнавшее свой адрес, на месте 9 бита выставляет высокий уровень (подтверждение приёма, acknowledge). После этого ведущий-передатчик передаёт N байт данных. Передача заканчивается состоянием СТОП [2]. Временная диаграмма процесса передачи приведена на рисунке 1.
Рисунок 1. Временная диаграмма передачи данных по шине I2C
Если ведущий является приёмником, то после адресного пакета данные передаёт ведомое устройство, а бит подтверждения генерируется ведущим. Для завершения передачи ведущий должен ответить на байт данных низким уровнем на месте 9 бита (not-acknowledge) и сформировать состояние СТОП. Формат передачи для случая ведущий-приёмник представлен на рисунке 2.
Рисунок 2. Формат передачи данных, когда ведущее устройство является приёмником
Так же возможен, и в данной работе будет активно использоваться, комбинированный режим, когда ведущий сначала передаёт данные, а потом принимает. Пример такого обмена приведён на рисунке 3.
Рисунок 3. Комбинированный формат передачи данных, когда ведущее устройство сначала передаёт, а потом принимает данные
То есть ведущий-передатчик (режим write) сначала передаёт данные, потом формирует состояние ПОВТОРНЫЙ СТАРТ: переход из состояния логической “1” в “0” на линии SDA во время высокого уровня на линии SCL. Это состояние ничем не отличается от состояния СТАРТ. Далее ведущий передаёт адресный пакет и меняет режим на чтение (ведущий-приёмник). Далее процесс передачи такой же, как описанный выше.
Для иллюстрации обмена данными по шине I2C, рассмотрим процесс чтения регистров микросхемы часов реального времени RX-8571. Формат передачи для чтения содержимого регистров микросхемы представлен на рисунке 4.
Рисунок 4. Формат передачи для чтения содержимого регистров микросхемы часов RX-8571
Ведущий-передатчик формирует состояние СТАРТ, посылает на линию адрес микросхемы и бит “запись”, микросхема отвечает подтверждением. Далее ведущий передаёт адрес регистра, из которого необходимо считать данные и ждёт подтверждения от ведомого. После подтверждения, ведущий формирует состояние ПОВТОРНЫЙ СТАРТ, снова передаёт адрес микросхемы, меняет режим на “чтение” и принимает N данных. Микросхема часов, после каждого считаного байта, автоматически производит инкремент адреса регистра для чтения. Когда N байт приняты, ведущий отвечает отказом на данные и формирует состояние СТОП. Сеанс передачи закончен.
Список литературы:
- Лайонс Р. Цифровая обработка сигналов. 2-е изд. Пер. с англ. – М.: ООО «Бином-Пресс», 2006. 656 с.
- Семенов Б.Ю. Шина I2C в радиотехнических конструкциях. – М.: «Солон-Р», 2010. 225 с.
дипломов
Оставить комментарий