I2C шина: особенности реализации, преимущества и недостатки

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

Что такое I2C шина и как она работает

I2C (Inter-Integrated Circuit) — это последовательная шина передачи данных, разработанная компанией Philips. Она использует всего две двунаправленные линии для обмена информацией между устройствами:

  • SDA (Serial Data) — линия для передачи данных
  • SCL (Serial Clock) — линия тактового сигнала

Основные характеристики I2C шины:

  • Скорость передачи данных: до 100 кбит/с в стандартном режиме, до 400 кбит/с в «быстром» режиме
  • Поддержка многомастерного режима
  • 7-битная или 10-битная адресация устройств
  • Возможность подключения до 128 устройств при 7-битной адресации
  • Максимальная емкость линии — 400 пФ

Как работает передача данных по I2C шине?

  1. Ведущее устройство (master) формирует состояние СТАРТ
  2. Master передает 7-битный адрес ведомого устройства (slave) и бит направления передачи (чтение/запись)
  3. Адресованное slave-устройство отвечает битом подтверждения
  4. Происходит обмен данными побайтно, каждый байт подтверждается принимающей стороной
  5. Master завершает передачу состоянием СТОП

Такой протокол обеспечивает надежную передачу данных между устройствами по простому двухпроводному интерфейсу.


Преимущества использования I2C шины

Интерфейс I2C имеет ряд важных преимуществ, которые сделали его очень популярным в электронных устройствах:

  • Простота реализации — требуется всего 2 линии
  • Гибкость — позволяет легко добавлять и удалять устройства
  • Стандартизация — совместимость устройств разных производителей
  • Низкое энергопотребление
  • Поддержка режимов с разной скоростью передачи данных
  • Возможность использования нескольких ведущих устройств
  • Встроенная фильтрация помех
  • Поддержка устройств с разным напряжением питания на одной шине

Все это делает I2C отличным выбором для соединения микросхем внутри электронных устройств, особенно в портативной технике.

Особенности адресации устройств на шине I2C

Адресация — важный аспект работы I2C шины. Как она реализована?

  • Каждое устройство на шине имеет уникальный 7-битный или 10-битный адрес
  • Адрес передается в первом байте после состояния СТАРТ
  • 7 бит — собственно адрес, 1 бит — направление передачи (чтение/запись)
  • Устройства сравнивают переданный адрес со своим и отвечают при совпадении
  • Часть адреса может быть задана аппаратно для однотипных устройств
  • Зарезервированы специальные адреса, например адрес общего вызова 0000 000

Такая система адресации позволяет подключать к одной шине множество устройств и обращаться к ним независимо.


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

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

Синхронизация:

  • Линия SCL работает по принципу монтажного И
  • Медленные устройства могут удерживать SCL в низком состоянии, растягивая такт
  • Это позволяет согласовать скорости работы разных устройств

Арбитраж:

  • Ведущие устройства следят за состоянием линии SDA
  • Если реальное состояние отличается от ожидаемого, ведущий освобождает шину
  • Приоритет получает устройство, дольше удерживающее низкий уровень на SDA
  • Проигравшие арбитраж становятся ведомыми до следующего состояния СТАРТ

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

Режимы работы шины I2C

I2C поддерживает несколько режимов работы с разной скоростью передачи данных:

  • Стандартный режим — до 100 кбит/с
  • Быстрый режим (Fast-mode) — до 400 кбит/с
  • Быстрый режим+ (Fast-mode Plus) — до 1 Мбит/с
  • Высокоскоростной режим (High-speed mode) — до 3.4 Мбит/с
  • Режим сверхбыстрой передачи (Ultra Fast-mode) — до 5 Мбит/с

При этом устройства с поддержкой более быстрых режимов, как правило, сохраняют обратную совместимость с более медленными режимами. Это позволяет гибко комбинировать устройства с разными скоростными характеристиками на одной шине.


Недостатки и ограничения шины I2C

При всех своих достоинствах, интерфейс I2C имеет и некоторые недостатки:

  • Относительно невысокая скорость передачи данных
  • Необходимость подтягивающих резисторов на линиях
  • Ограничение на емкость линии (до 400 пФ)
  • Возможные конфликты адресов при большом количестве устройств
  • Отсутствие гальванической развязки
  • Сложность работы на больших расстояниях
  • Необходимость поддержки протокола в устройствах

Эти ограничения следует учитывать при выборе I2C для конкретного применения. В некоторых случаях могут быть более подходящими альтернативные интерфейсы, например SPI или UART.

Применение I2C в современной электронике

Несмотря на появление более быстрых интерфейсов, I2C продолжает широко применяться в различных областях электроники:

  • Мобильные устройства и планшеты
  • Компьютерная техника (материнские платы, мониторы)
  • Бытовая электроника
  • Автомобильные электронные системы
  • Промышленная автоматика
  • Системы «умный дом»
  • Измерительное оборудование

I2C используется для подключения самых разных компонентов:


  • Датчики (температуры, влажности, освещенности и т.д.)
  • ЦАП и АЦП
  • EEPROM и другие типы памяти
  • Часы реального времени
  • ЖК-дисплеи и драйверы светодиодов
  • Контроллеры питания

Простота и универсальность I2C обеспечивают этому интерфейсу широкое применение даже в современных высокотехнологичных устройствах.


Шина управления I2C

I2C – двухпроводной интерфейс, разработанный корпорацией Philips. В первоначальном техническом требовании к интерфейсу максимальная скорость передачи данных составляла 100 Кбит/с. Однако со временем появились стандарты на более скоростные режимы работы I2C. К одной шине I2C могут быть подключены устройства с различными скоростями доступа, так как скорость передачи данных определяется тактовым сигналом.

Протокол передачи данных разработан таким образом, чтобы гарантировать надежный прием передаваемых данных.

При передаче данных одно устройство является «Master», которое инициирует передачу данных и формирует сигналы синхронизации. Другое устройство «Slave» — начинает передачу только по команде, пришедшей от «Master».

В микроконтроллерах PIC16CXXX аппаратно реализован режим «Slave» устройства в модуле SSP. Режим «Master» реализуется программно.

Основные термины, используемые при описании работы с шиной I2C:

Передатчик – устройство, передающее данные по шине

Приемник – устройство, получающее данные с шины

«Master» — устройство, которое инициирует передачу и формирует тактовый сигнал

«Slave» — устройство, к которому обращается «Master»

Multi-«Master» — режим работы шины I2C с более чем одним «Master»

Арбитраж – процедура, гарантирующая, что только один «Master» управляет шиной

Синхронизация – процедура синхронизации тактового сигнала от двух или более устройств

Выходные каскады формирователей сигналов синхронизации (SCL) и данных (SDA) должны быть выполнены по схемам с открытым коллектором (стоком) для объединения нескольких выходов и через внешний резистор подключены к плюсу питания для того, чтобы на шине был уровень «1», когда ни одно устройство не формирует сигнал «0». Максимальная емкостная нагрузка ограничена емкостью 400 пФ.

Инициализация и завершение передачи данных

В то время, когда передача данных на шине отсутствует, сигналы SCL и SDA имеют высокий уровень за счет внешнего резистора.

Сигналы START и STOP формируются «Master» для определения начала и окончания передачи данных соответственно.

Сигнал START формируется переходом сигнала SDA из высокого уровня в низкий при высоком уровне сигнала SCL. Сигнал STOP определяется как переход SDA из низкого уровня в высокий при высоком уровне SCL. Таким образом, при передаче данных сигнал SDA может изменяться только при низком уровне сигнала SCL.

Адресация устройств на шине I2C

Для адресации устройств используется два формата адреса:

Простой 7-разрядный формат с битом чтения/записи R/W;

и 10-разрядный формат – в первом байте передается два старших бита адреса и бит записи/чтения, во втором байте передается младшая часть адреса.

Подтверждение приема

При передаче данных после каждого переданного байта приемник должен подтвердить получение байта сигналом ACK.

Если «Slave» не подтверждает получение байта адреса или данных, «Master» должен прервать передачу, сформировав сигнал STOP.

При передаче данных от «Slave» к «Master», «Master» формирует сигналы подтверждения приема данных ACK. Если «Master» не подтвердит приема байта, «Slave» прекращает передачу данных, «отпуская» линию SDA. После этого «Master» может сформировать сигнал STOP.

Для задержки передачи данных «Slave» может установить логический нуль, указывая «Master» о необходимости ожидания. После «отпускания» линии SCL передача данных продолжается.

Передача данных от «Master» к «Slave»

Чтение данных из «Slave»

Использование сигнала повторного START для обращения к «Slave»

Режим Multi-«Master»

Протокол передачи данных I2C позволяет иметь более одного «Master» на шине. Для разрешения конфликтов на шине при инициализации передачи используются функции арбитража и синхронизации.

Арбитраж

Арбитраж выполняется на линии SDA при высоком уровне линии SCL. Устройство, которое формирует на линии SDA высокий уровень когда другое передает низкий, теряет право брать «Master» и должно перейти в режим «Slave». «Master», потерявший инициативу на шине, может формировать тактовые импульсы до конца байта, в котором потерял свойства ведущего.

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

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

Теги:

  • I2C

Шина и протокол передачи данныхИнтерфейс I2C


1.0 Преимущества I2C для конструкторов и технологов

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

Некоторый “умный” узел управления, обычно однокристалльная микроЭВМ.
Узлы общего назначения, такие как буферы ЖКИ, порты ввода/вывода, ОЗУ, ЭСПЗУ или преобразователи данных.

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

Для того, чтобы использовать эти общие решения к выгоде конструкторов и производителей (технологов), а также для увеличения эффективности аппаратуры и упрощения схемотехнических решений, Philips разработала простую двунаправленную двухпроводную шину для эффективного “межмикросхемного” (inter-IC) управления. Шина так и называется — InterIC, или IIC (I2C) шина. В настоящее время ассортимент продукции Philips включает более 150 КМОП и биполярных I2C-совместимых устройств, функционально предназначенных работы во всех трех вышеперечисленных категориях электронного оборудования. Все I2C-совместимые устройства имеют встроенный интерфейс, который позволяет им связываться друг с другом по шине I2C. Это конструкторское решение разрешает множество проблем сопряжения различных устройств, которые обычно возникают при разработке цифровых систем.

На рисунке:

1. Микроконтроллер
2. ФАПЧ синтезатор
3. Флеш-память
4. Декодер цвета
5. Стереодекодер звука
6. Улучшение сигнала картинки
7. HI-FI аудиопроцессор
8. Видеопроцессор
9. Одночиповый текст
10. Экранный дисплей
11. Генератор DTMF
12. Интерфейс телефонной линии
13. Кодек АДИКМ
14. Пакетный контроллер
15. Микроконтроллер 

SDA — линия данных, SCL — линия синхронизации

1.1 Преимущества для конструктора

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

Вот некоторые достоинства I2C-совместимых микросхем, которые касаются конструкторов:

Блоки на функциональной схеме соответствуют микросхемам, переход от функциональной схемы к принципиальной происходит быстро. Нет нужды разрабатывать шинные интерфейсы, т.к. шина уже интегрирована в микросхемы. Интегрированные адресация устройств и протокол передачи данных позволяют системе быть полностью программно определяемой. Одни и те же типы микросхем могут быть часто использованы в разных приложениях. Время разработки снижается, так как конструкторы быстро знакомятся с часто используемыми функциональными блоками и соответствующими микросхемами. Микросхемы могут быть добавлены или убраны из системы без оказывания влияния на другие микросхемы, подключенные к шине. Простая диагностика сбоев и отладка; нарушения в работе могут быть немедленно отслежены. Время разработки программного обеспечения может быть снижено за счет использования библиотеки повторно используемых программных модулей.

Помимо этих преимуществ, КМОП I2C-совместимые микросхемы предоставляют для конструкторов специальные решения, которые в частности привлекательны для портативного оборудования и систем с батарейным питанием:

-Крайне низкое потребление.
-Высокая стойкость к помехам.
-Широкий диапазон питающего напряжения.
-Широкий рабочий температурный диапазон.

1.2 Преимущества для технолога (производителя)

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

Простая двухпроводная последовательная шина I2C минимизирует соединения между микросхемами; микросхемы имеют меньше контактов и требуется меньше дорожек, результат — печатные платы становятся менее дорогими и меньше по размеру.

Полностью интегрированный I2C-протокол устраняет нужду в дешифраторах адреса и другой внешней мелкой логике.

Возможность нескольких “ведущих” на I2C-шине позволяет ускорить тестирование и настройку оборудования при помощи подключения шины к компьютеру сборочной линии.

Доступность I2C-совместимых микросхем в SO и VSO корпусах, а также в DIL корпусе снижает требования к размеру еще больше.

Это лишь некоторые преимущества. Кроме того, I2C-совместимые микросхемы увеличивают гибкость системы, позволяя простое конструирование вариантов оборудования и легкую модернизацию для того, чтобы поддерживать разработки на современном уровне. Таким образом, целое семейство оборудования может быть разработано, основываясь на базовой модели. Модернизация оборудования или расширение его функций (например, дополнительная память, дистанционное управление и т.п.) может быть произведена путем простого подключения соответствующей микросхемы к шине. Если требуется бoльшая ПЗУ, то дело лишь в выборе микроконтроллера к большим объемом ПЗУ из нашего ряда. Поскольку новые микросхемы могут замещать старые, легко добавлять новые свойства в оборудование или увеличивать его производительность путем простого отсоединения устаревшей микросхемы и подключения к шине новой.

I2C шина является одной из модификаций последовательных протоколов обмена данных. В стандартном режиме обеспечивается передача последовательных 8-битных данных со скоростью до 100 кбит/с, и до 400 кбит/с в «быстром» режиме. Для осуществления процесса обмена информацией по I2C шине, используется всего два сигнала линия данных SDA линия синхронизации SCL Для обеспечения реализации двунаправленности шины без применения сложных арбитров шины выходные каскады устройств, подключенных к шине, имеют открытый сток или открытый коллектор для обеспечения функции монтажного «И».



Простая двухпроводная последовательная шина I2C минимизирует количество соединения между ИС, ИС имеют меньше контактов и требуется меньше дорожек. Как результат — печатные платы становятся более простыми и технологичными при изготовлении. Интегрированный I2C-протокол устраняет необходимость в дешифраторах адреса и другой внешней логике согласования.

Максимальное допустимое количество микросхем, подсоединённых к одной шине, ограничивается максимальной емкостью шины 400 пФ.

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

Каждое устройство распознается по уникальному адресу и может работать как передатчик или приёмник, в зависимости от назначения устройства.

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

Исходя из спецификации работы шины, в каждый отдельный момент в шине может быть только один ведущий, а именно то устройство, которое обеспечивает формирование сигнала SCL шины. Ведущий может выступать как в роли ведущего-передатчика, так и ведущего-приемника. Тем не менее — шина позволяет иметь несколько ведущих, накладывая определенные особенности их поведения в формировании сигналов управления и контроля состояния шины. Возможность подключения более одного ведущего к шине означает, что более чем один ведущий может попытаться начать пересылку в один и тот же момент времени. Для устранения «столкновений», который может возникнуть в данном случае, разработана процедура арбитража — поведения ведущего при обнаружении «захвата» шины другим ведущим.

Процедура синхронизации двух устройств Эта процедура основана на том, что все I2C-устройства подключаются к шине по правилу монтажного И. В исходном состоянии оба сигнала SDA и SCL находятся в высоком состоянии.

Состояние СТАРТ и СТОП

Процедура обмена начинается с того, что ведущий формирует состояние СТАРТ — ведущий генерирует переход сигнала линии SDA из ВЫСОКОГО состояния в НИЗКОЕ при ВЫСОКОМ уровне на линии SCL. Этот переход воспринимается всеми устройствами, подключенными к шине как признак начала процедуры обмена.

Генерация синхросигнала — это всегда обязанность ведущего; каждый ведущий генерирует свой собственный сигнал синхронизации при пересылке данных по шине.

Процедура обмена завершается тем, что ведущий формирует состояние СТОП — переход состояния линии SDA из низкого состояния в ВЫСОКОЕ при ВЫСОКОМ состоянии линии SCL.

Состояния СТАРТ и СТОП всегда вырабатываются ведущим. Считается, что шина занята после фиксации состояния СТАРТ. Шина считается освободившейся через некоторое время после фиксации состояния СТОП.

При передаче посылок по шине I2C каждый ведущий генерирует свой синхросигнал на линии SCL.

После формирования состояния СТАРТ, ведущий опускает состояние линии SCL в НИЗКОЕ состояние и выставляет на линию SDA старший бит первого байта сообщения. Количество байт в сообщении не ограничено.

Спецификация шины I2C разрешает изменения на линии SDA только при НИЗКОМ уровне сигнала на линии SCL.

Данные действительны и должны оставаться стабильными только во время ВЫСОКОГО состояния синхроимпульса.



Для подтверждения приема байта от ведущего — передатчика ведомым — приемником в спецификации протокола обмена по шине I2C вводится специальный бит подтверждения, выставляемый на шину SDA после приема 8 бита данных.

Подтверждение

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

Подтверждение при передаче данных обязательно. Соответствующий импульс синхронизации генерируется ведущим. Передатчик отпускает (ВЫСОКОЕ) линию SDA на время синхроимпульса подтверждения. Приёмник должен удерживать линию SDA в течение ВЫСОКОГО состояния синхроимпульса подтверждения в стабильном НИЗКОМ состоянии.

В том случае, когда ведомый-приёмник не может подтвердить свой адрес (например, когда он выполняет в данный момент какие-либо функции реального времени), линия данных должна быть оставлена в ВЫСОКОМ состоянии. После этого ведущий может выдать сигнал СТОП для прерывания пересылки данных.

Если в пересылке участвует ведущий-приёмник, то он должен сообщить об окончании передачи ведомому-передатчику путем не подтверждения последнего байта. Ведомый-передатчик должен освободить линию данных для того, чтобы позволить ведущему выдать сигнал СТОП или повторить сигнал СТАРТ.

Синхронизация выполняется с использованием подключения к линии SCL по правилу монтажного И.

Это означает, что ведущий не имеет монопольного права на управление переходом линии SCL из НИЗКОГО состояния ВЫСОКОГО. В том случае, когда ведомому необходимо дополнительное время на обработку принятого бита, он имеет возможность удерживать линию SCL в низком состоянии до момента готовности к приему следующиго бита. Таким образом, линия SCL будет находиться в НИЗКОМ состоянии на протяжении самого длинного НИЗКОГО периода синхросигналов.

Устройства с более коротким НИЗКИМ периодом будут входить в состояние ожидания на время, пока не кончится длинный период. Когда у всех задействованных устройств кончится НИЗКИЙ период синхросигнала, линия SCL перейдет в ВЫСОКОЕ состояние. Все устройства начнут проходить ВЫСОКИЙ период своих синхросигналов. Первое устройство, у которого кончится этот период, снова установит линию SCL в НИЗКОЕ состояние. Таким образом, НИЗКИЙ период синхролинии SCL определяется наидлиннейшим периодом синхронизации из всех задействованных устройств, а ВЫСОКИЙ период определяется самым коротким периодом синхронизации устройств.

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

На уровне байта, если устройство может принимать байты данных с большой скоростью, но требует определенное время для сохранения принятого байта или подготовки к приему следующего, то оно может удерживать линию SCL в НИЗКОМ состоянии после приема и подтверждения байта, переводя таким образом передатчик в состояние ожидания.

На уровне битов, устройство такое как микроконтроллер без встроенных аппаратных цепей I2C или с ограниченными цепями может замедлить частоту синхроимпульсов путем продления их НИЗКОГО периода. Таким образом скорость передачи любого ведущего адаптируется к скорости медленного устройства.

Адресация в шине I2C

Каждое устройство, подключённое к шине, может быть программно адресовано по уникальному адресу.

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

В обычном режиме используется 7-битная адресация.

Процедура адресации на шине I2C заключается в том, что первый байт после сигнала СТАРТ определяет, какой ведомый адресуется ведущим для проведения цикла обмена. Исключение составляет адрес «Общего вызова», который адресует все устройства на шине. Когда используется этот адрес, все устройства в теории должны послать сигнал подтверждения. Однако, устройства могут обрабатывать «общий вызов» на практике встречаются редко.

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

После того, как адрес послан, каждое устройство в системе сравнивает первые семь бит после сигнала СТАРТ со своим адресом. При совпадении устройство полагает себя выбранным как ведомый-приёмник или как ведомый-передатчик, в зависимости от бита направления.

Адрес ведомого может состоять из фиксированной и программируемой части.

Часто случается, что в системе будет несколько однотипных устройств (к примеру ИМС памяти, или драйверов LED-индикаторов), поэтому при помощи программируемой части адреса становится возможным подключить к шине максимально возможное количество таких устройств. Количество программируемых бит в адресе зависит от количества свободных выводов микросхемы. Иногда используется один вывод с аналоговой установкой программируемого диапазона адресов, как это, к примеру, реализовано в ИМС SAA1064. При этом в зависимости от потенциала на этом адресном выводе ИМС, возможно смещение адресного пространства драйвера так, чтобы однотипные ИМС не конфликтовали между собой на общей шине.

Все ИМС, поддерживающие работу в стандарте шины I2C, имеют набор фиксированых адресов, перечень которых указан производителем в описаниях контроллеров.

Комбинация бит 11110ХХ адреса зарезервирована для 10-битной адресации.



В общем виде процесс обмена по шине от момента формирования состояния СТАРТ до состояния СТОП можно проиллюстрировать следующим рисунком :

Как следует из спецификации шины, допускаются как простые форматы обмена, так и комбинированные, когда в промежутке от состояния СТАРТ до состояния СТОП ведущий и ведомый могут выступать и как приемник и как передатчик данных. Комбинированные форматы могут быть использованы, например, для управления последовательной памятью.
Во время первого байта данных можно передавать адрес в памяти, который записывается во внутренний регистр-защелку. После повторения сигнала СТАРТа и адреса ведомого выдаются данные из памяти. Все решения об авто-инкременте или декременте адреса, к которому произошел предыдущий доступ, принимаются конструктором конкретного устройства. Поэтому, в любом случае лучший способ избежать неконтролируемой ситуации на шине перед использованием новой (или ранее не используемой) ИМС следует тщательно изучить ее описание (datasheet), получив его с сайта производителя. Более того, производители часто размещают рядом более подробные инструкции по применению.

В любом случае, по спецификации шины все разрабатываемые устройства должны сбрасывать логику шины при получении сигнала СТАРТ или повторный СТАРТ и подготавливаться к приему адреса.

Тем не менее основные проблемы с использованием I2C шины возникают именно из-за того, что разработчики, «начинающие» работать с I2C шиной не учитывают того факта, что ведущий (часто — микропроцессор) не имеет монопольного права ни на одну из линий шины.

Расширение I2C

Стандартная шина I2C со скоростью передачи данных 100 кбит/с и 7-битным адресом существует уже на протяжении более 10 лет в неизменном виде. Стандартная шина I2C принята повсеместно как стандарт для сотен типов микросхем, выпускаемых фирмой Philips и другими поставщиками. В настоящее время спецификация шины I2C расширена в двух направлениях : увеличение быстродействия и расширение адресного пространства для расширения номенклатуры вновь разрабатываемых устройств.

Введение спецификации «быстрого» режима, позволяющего в четыре раза увеличить скорость передачи данных до 400кБит\сек. Необходимость в этом «расширении» стандарта потребовалось из-за необходимости пересылки больших объемов информации, и, как следствие, необходимость увеличения пропускной способности канала.

Введение спецификации «10-битной адресации», позволяющая использовать 1024 дополнительных адресов, т.к. большинство из 112 адресов, допустимых при 7-битной адресации, уже были использованы более чем один раз. Для предотвращения проблем с размещением адресов новых устройств, желательно иметь большее количество адресных комбинаций. Примерно десятикратное увеличение количества доступных адресов получено при использовании новой 10-битной адресации.

Все новые устройства с I2C интерфейсом работают в быстром режиме. Предпочтительно, они должны уметь принимать и/или передавать данные на скорости 400 кбит/с. Как минимум они должны быть способны входить в синхронизацию в быстром режиме, с тем чтобы снизить скорость передачи (путем удлиннения НИЗКОГО периода SCL) до допустимой величины.

Быстрые устройства как правило совместимы снизу-вверх, что означает их способность работать со стандартными устройствами по медленной шине. Очевидно, что стандартные устройства не способны работать в быстрой шине, потому что они не могут синхронизироваться на высокой скорости и их состояние станет непредсказуемым. Ведомые быстрые устройства могут обладать как 7-битным, так и 10-битным адресом. Однако, 7-битный адрес более предпочтителен, так как его аппаратная реализация более проста и длина посылки меньше. Устройства с 7-битным и 10-битным адресами могут одновременно использоваться на одной шине, независимо от скорости передачи. Как существующие, так и будущие ведущие смогут генерировать и 7-битные, и 10-битные адреса.

В быстром режиме протокол, формат, логические уровни и максимальная емкостная нагрузка линий шины остается неизменными. Алгоритм синхронизации линий SDA и SCL не изменен. Однако, от «быстрых» устройствне требуется совместимости с CBUS-устройствами, так как они не могут работать на высоких скоростях. Входные цепи быстрых устройств должны иметь встроенное подавление выбросов и триггер Шмитта на обоих линиях Выходной буфер быстрых устройств должен иметь каскад с управлением временем заднего фронта линий SDA и SCL. Как правило при пропадании напряжения питания быстрых устройств выводы, подключенные к линиям I2C шины должны переходить в третье состояние . Претерпели изменения схемотехнические решения выходных каскадов для обеспечения времени нарастания переднего фронта (переход из НИЗКОГО состояния в ВЫСОКОЕ). Если для нагрузок шины до 200 пФ эту роль выполняют подтягивающие резисторы, то для нагрузок от 200 пФ до 400 пФ эту функцию выполняет источник тока или схема на переключаемых резисторах, обеспечивающая «форсированое» переключение линий I2C шины.

10-битная адресация также не изменяет формат шины. Для этого используется зарезервированная адресная комбинация 1111ХХХ первых семи бит первого байта. 10-битная адресация не влияет на существующую 7-битную адресацию. Устройства с 7-битной и 10-битной адресацией могут быть подключены к одной шине. Хотя имеются восемь возможных комбинаций последовательности 1111ХХХ, из них используются только четыре — 11110ХХ. Комбинации типа 11111ХХ зарезервированы для дальнейших улучшений шины. Назначение битов первых двух байтов 10-битный адрес формируется из первых двух байтов. Первые семь бит первого байта являются комбинацией вида 11110ХХ, где два младших бита (ХХ) являются двумя старшими (9 и 8) битами 10-битного адреса; восьмой бит первого байта — бит направления.
«Ноль» в этом бите означает, что ведущий собирается записывать информацию в ведомого, а «единица» — что ведущий будет считывать информацию из ведомого. Если бит направления равен «нулю», то второй байт содержит оставшиеся 8 бит 10-битного адреса. Если бит направления равен «единице», то следующий байт содержит данные, переданные с ведомого ведущему.

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


Интерфейс I2C — Шина I2C

Термин «интерфейс I2C» обычно относится к средствам подключения шины I2C к ПК. Однако, безусловно, существуют и другие интерфейсы I2C, которые обеспечивают подключение этой универсально используемой шины к устройствам, отличным от ПК.

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

Компания Philips предоставила схемы адаптера под названием Single-master, , который по существу работает как безаппаратное решение, но компенсирует некоторые проблемы, связанные с параллельным портом, за счет использования чипа драйвера между контактами порта ПК и линиями I2C SDA и SCL. Такой интерфейс может работать только как один мастер, а максимальная скорость сильно зависит от драйверов и операционной системы ПК. Поскольку каждый бит переключается индивидуально, при таком соединении нельзя гарантировать синхронизацию под Windows или Linux. Еще одним недостатком является потенциальная опасность повреждения ПК электронным разрядом или неправильным подключением внешних линий. Это особенно раздражает, если функциональность параллельного порта интегрирована в многофункциональный незаменяемый чип, как это имеет место во всех современных ПК и ноутбуках.

Гораздо более надежной, мощной и безопасной альтернативой являются интерфейсы с собственной логикой I2C, такие как Connii MM 2.0 или Tracii XL 2.0. Эти устройства подключаются через USB, помимо возможности работать в режиме нескольких мастеров, они предоставляют ряд важных и полезных дополнительных функций. Поскольку они взаимодействуют с программным обеспечением ПК на более эффективном уровне, чем битовая пересылка, скорость передачи значительно выше, а нагрузка на ПК значительно ниже.

Итак, на что следует обратить внимание при выборе профессионального интерфейса I2C?

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

ОШИБКА — 404 — НЕ НАЙДЕНА

  • Главная
  • Мне очень жаль, но. ..

Наши серверные гномы не смогли найти страницу, которую вы ищете.

Похоже, вы неправильно набрали URL-адрес в адресной строке или перешли по старой закладке.

Возможно, некоторые из них могут вас заинтересовать?

USB-разъем SparkFun microB

В наличии БОБ-12035

12

Избранное Любимый 39

Список желаний

SparkFun Qwiic Shield для Teensy — расширенный

В наличии DEV-17156

Избранное Любимый 4

Список желаний

МИКРОЭ МПУ ИМУ Click

Нет в наличии SEN-20445

39,95 $

Избранное Любимый 0

Список желаний

Pixhawk 6C с модулем питания PM02

Осталось всего 3! РОБ-20496

266,99 $

Избранное Любимый 0

Список желаний

Дрейфующий спуск с SparkFun OpenLog Artemis

26 августа 2020 г.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *