Интерфейс I2C (или по другому IIC) — это достаточно широко распространённый сетевой последовательный интерфейс, придуманный фирмой Philips и завоевавший популярность относительно высокой скоростью передачи данных (обычно до 100 кбит/с, в современных микросхемах до 400 кбит/с), дешевизной и простотой реализации.
Физически сеть представляет собой двухпроводную шину, линии которой называются DATA и CLOCK (необходим ещё и третий провод — земля, но интерфейс принято называть двухпроводным по количеству сигнальных проводов). Соответственно, по линии DATA передаются данные, линия CLOCK служит для тактирования. К шине может быть подключено до 128 абонентов, каждый со своим уникальным номером. В каждый момент времени информация передаётся только одним абонентом и только в одну сторону.
Устройства I2C имеют выход с «открытым коллектором». Когда выходной транзистор закрыт — на соответствующей линии через внешний подтягивающий резистор устанавливается высокий уровень, когда выходной транзистор открыт — он притягивает соответствующую линию к земле и на ней устанавливается низкий уровень (смотрите рисунок). Резисторы имеют номинал от нескольких килоОм до нескольких десятков килоОм (чем выше скорость — тем меньше номинал резисторов, но больше энергопотребление). На рисунке треугольниками на входе показано, что входы высокоомные и, соответственно, влияния на уровни сигналов на линиях они не оказывают, а только «считывают» эти уровни. Обычно используются уровни 5В или 3,3В.
Любое устройство на шине I2C может быть одного из двух типов: Master (ведущий) или Slave (ведомый). Обмен данными происходит сеансами. «Мастер»-устройство полностью управляет сеансом: инициирует сеанс обмена данными, управляет передачей, подавая тактовые импульсы на линию Clock, и завершает сеанс.
Кроме этого, в зависимости от направления передачи данных и «Мастер» и «Слэйв»-устройства могут быть «Приёмниками» или «Передатчиками». Когда «Мастер» принимает данные от «Слэйва» — он является «Приёмником», а «Слэйв» — «Передатчиком». Когда же «Слэйв» принимает данные от «Мастера», то он уже является «Приёмником», а «Мастер» в этом случае является «Передатчиком».
Не надо путать тип устройства «Мастер» со статусом «Передатчика». Несмотря на то, что при чтении «Мастером» информации из «Слэйва», последний выставляет данные на шину Data, делает он это только тогда, когда «Мастер» ему это разрешит, установкой соответствующего уровня на линии Clock. Так что, хотя «Слэйв» в этом случае и управляет шиной Data, — самим обменом всё равно управляет «Мастер».
В режиме ожидания (когда не идёт сеанс обмена данными) обе сигнальные линии (Data и Clock) находятся в состоянии высокого уровня (притянуты к питанию).
Каждый сеанс обмена начинается с подачи «Мастером» так называемого Start-условия. «Старт-условие» — это изменение уровня на линии Data с высокого на низкий при наличии высокого уровня на линии Clock.
После подачи «Старт-условия» первым делом «Мастер» должен сказать с кем он хочет пообщаться и указать, что именно он хочет — передавать данные в устройство или читать их из него. Для этого он выдаёт на шину 7-ми битный адрес «Слэйв» устройства (по другому говорят: «адресует «Слэйв» устройство»), с которым хочет общаться, и один бит, указывающий направление передачи данных (0 — если от «Мастера» к «Слэйву» и 1 — если от «Слэйва» к «Мастеру»). Первый байт после подачи «Старт»-условия всегда всеми «Слэйвами» воспринимается как адресация.
Поскольку направление передачи данных указывается при открытии сеанса вместе с адресацией устройства, то для того, чтобы изменить это направление, необходимо открывать ещё один сеанс (снова подавать «Старт»-условие, адресовать это же устройство и указывать новое направление передачи).
После того, как «Мастер» скажет, к кому именно он обращается и укажет направление передачи данных, — начинается собственно передача: «Мастер» выдаёт на шину данные для «Слэйва» или получает их от него. Эта часть обмена (какие именно данные и в каком порядке «Мастер» должен выдавать на шину, чтобы устройство его поняло и сделало то, что ему нужно) уже определяется каждым конкретным устройством.
Заканчивается каждый сеанс обмена подачей «Мастером» так называемого Stop-условия, которое заключается в изменении уровня на линии Data с низкого на высокий, опять же при наличии высокого уровня на линии Clock. Если на шине сформировано Stop-условие, то закрываются все открытые сеансы обмена.
Внутри сеанса любые изменения на линии Data при наличии высокого уровня на линии Clock запрещены, поскольку в это время происходит считывание данных «Приёмником». Если такие изменения произойдут, то они в любом случае будут восприняты либо как «Старт»-условие (что вызовет прекращение обмена данными), либо как «Стоп»-условие (что будет означать окончание текущего сеанса обмена). Соответственно, во время сеанса обмена установка данных «Передатчиком» (выставление нужного уровня на линии Data) может происходить
только при низком уровне на линии Clock.
Несколько слов по поводу того, в чём в данном случае разница между «прекращением обмена данными» и «окончанием сеанса обмена». В принципе «Мастеру» разрешается, не закрыв первый сеанс обмена, открыть ещё один или несколько сеансов обмена с этим же (например, как было сказано выше, для изменения направления передачи данных) или даже с другими «Слэйвами», подав новое «Старт»-условие без подачи «Стоп»-условия для закрытия предыдущего сеанса. Управлять линией Data, для того, чтобы отвечать «Мастеру», в этом случае будет разрешено тому устройству, к которому «Мастер» обратился последним, однако старый сеанс при этом нельзя считать законченным. И вот почему. Многие устройства (например те же eeprom-ки 24Схх) для ускорения работы складывают данные, полученные от «Мастера» в буфер, а разбираться с этими полученными данными начинают только после получения сигнала об окончании сеанса обмена (то есть «Стоп-условия»).
То есть, например, если на шине висит 2 микросхемы eeprom 24Cxx и вы открыли сеанс записи в одну микросхему и передали ей данные для записи, а потом, не закрывая этот первый сеанс, открыли новый сеанс для записи в другую микросхему, то реальная запись и в первую и во вторую микросхему произойдёт только после формирования на шине «Стоп-условия», которое закроет оба сеанса. После получения данных от «Мастера» eeprom-ка складывает их во внутренний буфер и ждёт окончания сеанса, для того, чтобы начать собственно процесс записи из своего внутреннего буфера непосредственно в eeprom. То есть, если вы после после передачи данных для записи в первую микруху не закрыли этот сеанс, открыли второй сеанс и отправили данные для записи во вторую микруху, а потом, не сформировав «Стоп-условие», выключили питание, то реально данные не запишутся ни в первую микросхему, ни во вторую. Или, например, если вы пишете данные попеременно в две микрухи, то в принципе вы можете открыть один сеанс для записи в первую, потом другой сеанс для записи во вторую, потом третий сеанс для записи опять в первую и т.д., но если вы не будете закрывать эти сеансы, то в конце концов это приведёт к переполнению внутренних буферов и в итоге к потере данных.
Читайте также: Зимние шины в курсе
Здесь можно привести такую аналогию: ученики в классе («слэйвы») и учитель («мастер»). Допустим учитель вызвал какого-то ученика (пусть будет Вася) к доске и попросил его решить какой-то пример. После того как Вася этот пример решил, учитель вызвал к доске Петю и начал спрашивать у него домашнее задание, но Васю на место не отпустил. Вот в этом случае вроде бы разговор с Васей закончен, — учитель разговаривает с Петей, но Вася стоит у доски и не может спокойно заниматься своими делами (сеанс общения с ним не закрыт).
В случае, если «Слэйв» во время сеанса обмена не успевает обрабатывать данные, — он может растягивать процесс обмена, удерживая линию Clock в состоянии низкого уровня, поэтому «Мастер» должен проверять возврат линии Clock к высокому уровню после того, как он её отпустит. Хотелось бы подчеркнуть, что не стоит путать состояние, когда «Слэйв» не успевает принимать или посылать данные, с состоянием, когда он просто занят обработкой данных, полученных в результате сеанса обмена. В первом случае (во время обмена данными) он может растягивать обмен, удерживая линию Clock, а во втором случае (когда сеанс обмена с ним закончен) он никакие линии трогать не имеет права. В последнем случае он просто не будет отвечать на «обращение» к нему от «Мастера».
Внутри сеанса передача состоит из пакетов по девять бит, передаваемых в обычной положительной логике (то есть высокий уровень — это 1, а низкий уровень — это 0). Из них 8 бит передаёт «Передатчик» «Приёмнику», а последний девятый бит передаёт «Приёмник» «Передатчику». Биты в пакете передаются старшим битом вперёд. Последний, девятый бит называется битом подтверждения ACK (от английского слова acknowledge — подтверждение). Он передаётся в инвертированном виде, то есть 0 на линии соответствует наличию бита подтверждения, а 1 — его отсутствию. Бит подтверждения может сигнализировать как об отсутствии или занятости устройства (если он не установился при адресации), так и о том, что «Приёмник» хочет закончить передачу или о том, что команда, посланная «Мастером», не выполнена.
Каждый бит передаётся за один такт. Та половина такта, во время которой на линии Clock установлен низкий уровень, используется для установки бита данных на шину передающим абонентом (если предыдущий бит передавал другой абонент, то он в это время должен отпустить шину данных). Та половина такта, во время которой на линии Clock установлен высокий уровень, используется принимающим абонентом для считывания установленного значения бита с шины данных.
Вот собственно и всё. На рисунках ниже всё это описание показано в графической форме.
Параметр | Обозн. | Мин.знач. | Комментарий |
Свободная шина | tBUF | 4,7 мкс | это минимальное время, в течении которого обе линии должны находиться в свободном состоянии перед подачей «Старт»-условия |
Фиксация «Старт»- условия | tHD;STA | 4,0 мкс | минимальное время от подачи «Старт»- условия до начала первого такта передачи |
Готовность «Стоп»- условия | tSU;STO | 4,0 мкс | минимальное время, через которое можно подавать «Стоп»- условие после освобождения шины Clock |
Длительность LOW полупер. шины Clock | tLOW | 4,7 мкс | минимальная длительность полупериода установки данных (когда на шине Clock низкий уровень) |
Длительность HIGH полупер. шины Clock | tHIGH | 4,0 мкс | минимальная длительность полупериода считывания данных (когда на шине Clock высокий уровень) |
Удержание данных | tHD;DAT | 0 | то есть данные на шину Data можно выставлять сразу после спада на линии Clock |
Готовность данных | tSU;DAT | 250 нс | то есть поднимать уровень на шине Clock можно не ранее 250 нс после установки данных на шине Data |
Минимальные значения времени в таблице указаны для максимальной скорости передачи 100 кбит/с.
Программная реализация мастер-абонента шины I2C в режиме single-master, библиотеки процедур: для PIC, для AVR
Программа для устройства копирования микросхем памяти 24Cxx (здесь можно посмотреть пример использования приведённых выше библиотек для реализации режима I2C-Master на PIC-контроллере)
Программа 2 для контроллера I2C-шлюза, режим Slave из терминалки ПК (а тут посмотреть пример того, как можно сделать I2C-Slave на контроллере AVR)
- Национальная библиотека им. Н. Э. Баумана Bauman National Library
- Персональные инструменты
- I²C (Inter-Integrated Circuit Bus)
- История
- Введение в спецификацию I²C
- Концепция шины
- Терминология шины I²C
- Общие характеристики
- Принцип работы
- Применение
- Преимущества
- Недостатки
- Преимущества для конструкторов
- Разработка
- Поддержка операционными системами
- Производные технологии
- 🔍 Видео
Видео:Лекция 308. Шина I2CСкачать
Национальная библиотека им. Н. Э. Баумана
Bauman National Library
Персональные инструменты
Видео:Передача данных - шина SPIСкачать
I²C (Inter-Integrated Circuit Bus)
Авторство | ||
Портнова А.С. | ||
Согласовано: 15.04.2016 |
I²C (англ. Inter-Integrated Circuit Bus ) – последовательная шина данных для связи интегральных схем, использующая две двунаправленные линии связи (SDA и SCL). Используется для соединения низкоскоростных периферийных компонентов с материнской платой, встраиваемыми системами и мобильными телефонами. Двухпроводной последовательный интерфейс, разработанный корпорацией Philips.
Шина I2C широко используется в бытовой электронике, передаче данных и промышленной электронике. Простая двунаправленная 2-проводная шина для эффективного управления и взаимодействия различных блоков телевизоров, она стала применяться для связи между собой однокристальных микроконтроллеров, ЖКИ-индикаторов, портов ввода-вывода, микросхем памяти (особенно энергонезависимой), аналого-цифровых и цифро-аналоговых преобразователях, цепях цифровой настройки, DTMF кодеров и декодеров, часов реального времени и т.д
Видео:Введение в шину I2CСкачать
История
История шины I²C в том виде, в котором она представлена сейчас, началась в 1992 году, когда фирмой Pilips была выпущена её первая спецификация версии 1.0. Эта спецификация исключила возможность задания адреса slave-устройства программным способом как наиболее сложную процедуру. Наряду со стандартным режимом скорости передачи данных 100 кбит/с (low-speed) был введен режим быстрой передачи со скоростью 400 кбит/с (fast-speed) . Появился также режим 10-разрядной адресации. Версия 2.0, выпущенная в 1998 году, ввела в спецификацию шины быстродействующий режим (HS-mode) со скоростью передачи до 3,4 Мбит/c. Причем требования предписали вводить обязательную возможность совместимости с режимами low-speed и fast-speed. К моменту появления версии 2.0 шина I²C распространилась по всему миру, став международным стандартом. Было разработано более 1000 интегральных схем, лицензия на официальное использование спецификации приобретена более чем 50 фирмами. Версия 2.1, датируемая 2000 годом, включает себя не значительные модификации.
Видео:Урок 26.3 Соединяем две arduino по шине I2C #iarduinoСкачать
Введение в спецификацию I²C
Обычно для многих приборов выдвигаются следующие критерии:
- полная система обычно состоит, по крайней мере, из одного микроконтроллера и периферийных устройств типа блоков памяти и расширителей ввода — вывода.
- стоимость соединения различных элементов внутри системы должна быть минимальной.
- система, которая выполняет только функции управления, как правило, не требует быстродействующей передачи данных.
- общая эффективность зависит от выбранных элементов и характера межсоединений.
Читайте также: Давление в шинах порше кайен r22
Последовательная структура шины удовлетворяет этим условиям. Хотя последовательные шины не имеют такой производительности как параллельные шины, они требуют меньшего количества проводов и меньшего количества выводов микросхемы.Элементы, общающиеся друг с другом по последовательной шине должны иметь некоторый протокол, который определяет логику функционирования, избегает всех возможностей беспорядка, потерь данных и блокирования информации, при этом быстрые элементы должны быть способны связаться с медленными элементами.
Видео:Применение конечных автоматов (передача данных по i2c)Скачать
Концепция шины
Все операции по шине I²C осуществляются при помощи двух проводов:
- линия последовательных данных (SDA):
- линия синхронизации (SCL).
Каждый элемент определяется своим уникальным адресом, в который входит группа приборов и номер конкретного прибора. Группа определяет, является ли это микроконтроллером, LCD-индикатором, памятью или чем-то еще. Например, все устройства памяти имеют код 0Ah, таймеры и часы реального времени — 0Dh, устройства телетекста — 02h и т.д. Любой элемент, инициирующий передачу, является мастером, любой адресуемый элемент является подчиненным. В системах с несколькими мастерами, один и тот же элемент может в разное время выступать или как мастер или как подчиненный.
Видео:Подключение нескольких устройств по шине i2cСкачать
Терминология шины I²C
- Передатчик — элемент, который посылает данные в шину.
- Приемник — элемент, который получает данные из шины.
- Master — элемент, который инициализирует передачу, генерирует сигналы синхронизации, и завершает передачу.
- Slave (подчиненный) — элемент, адресованный мастером
- Multi-master — система с более чем одним мастером.
- Арбитраж — процедура, гарантирующая, что, если больше чем один мастер одновременно пробуют управлять шиной, только один из них получит полное управление шиной и обеспечит передачу данных без ошибок.
- Синхронизация — синхронизация передачи данных между элементами.
I²C является многопрофильным master шины. Это означает, что еще одно устройство, способное контролировать шину можно подключить к нему. Так как в качестве master обычно являются микроконтроллеры, давайте рассмотрим случай передачи данных между двумя микроконтроллерами, подключенных к I²C.
Данные передаются по двум проводам — проводу данных и проводу тактов. Есть ведущий (master) и ведомый (slave), такты генерирует master, ведомый лишь «поддакивает» при приёме байта. Всего на одной двупроводной шине может быть до 127 устройств.
Видео:Arduino I2C связь между контроллерамиСкачать
Общие характеристики
SDA и SCL — двунаправленные линии с открытым стоком (коллектором), соединенные с положительным питающим напряжением через резистор (рис.2). Когда шина свободна, обе линии находятся в состоянии “1”. Данные могут передаваться по шине I2 C со скоростью до 100 kbit/s в стандартном режиме, или до 400 kbit/s в быстром режиме. Число интерфейсов, соединенных с шиной исключительно зависит от емкости шины, максимальное значение которой — 400pF.
Видео:Подключение нескольких устройств, датчиков по I2C (АйТуСи) шинеСкачать
Принцип работы
I²C использует две двунаправленные линии, подтянутые к напряжению питания и управляемые через открытый коллектор или открытый сток — последовательная линия данных (SDA, англ. Serial DAta) и последовательная линия тактирования (SCL, англ. Serial CLock). Стандартные напряжения +5 В или +3,3 В, однако допускаются и другие.
Классическая адресация включает 7-битное адресное пространство с 16 зарезервированными адресами. Это означает, что разработчикам доступно до 112 свободных адресов для подключения периферии на одну шину.
Основной режим работы — 100 кбит/с; 10 кбит/с в режиме работы с пониженной скоростью. Также немаловажно, что стандарт допускает приостановку тактирования для работы с медленными устройствами.
Из-за разнообразия различных технологий (CMOS, NMOS,биполярные приборы) которые могут быть использованы с шиной I²C, уровни логического “0” и “1” не установлены и зависят от величины питающего напряжения VDD. Для передачи одного бита данных используется один импульс сигнала синхронизации, при этом уровень на линии SDA должен быть неизменным в течение высокого уровня на линии SCL, и может изменяться только при низком уровне на SCL. Исключениями служат два особых состояния — START и STOP.
Существуют два особых состояния шины I²C — start и stop, которые служат для индикации начала и конца передачи и соответственно перехода шины в неактивное состояние. Следует отметить, что до тех пор, пока не установлено состояние start, сигналы на линиях SDA и SCL могут быть совершенно произвольными . Это позволяет, в частности, использовать одну линию SDA и несколько линий SLC (например, при нехватке, адресов на одной шине). Состояние START — переход от “1” к “0” на линии SDA при “1” на линии SCL. Состояние STOP — переход от “0” к “1” на линии SDA при “1” на линии SCL. Эти два состояния всегда генерируются мастером. Детектирование состояний start и stop в специализированных элементах обычно производится аппаратно. При полностью программной реализации шины I²C в микроконтроллерах без аппаратной I²C-части необходимо как минимум 2 раза проверять состояние линии SDA.
Все передачи производятся 8-разрядными байтами. Число байтов, которые могут быть переданы за одну передачу не ограничено. Каждый байт должен сопровождаться битом подтверждения (ACK). Данные передаются начиная со старшего бита (MSB). (Рис.6) Если приемник не может получать другой полный байт данных, он не выдает сигнал ACK, который используется передатчиком для синхронизации или сигнализации о неисправности приемника (или его отсутствии).
Для подтверждения передачи байта передатчик устанавливает линию SDA в “1” в течение синхронизирующего импульса. (Рис.7) Приемник при этом должен выставить “0” на SDA. Естественно при этом должны бить выдержаны определенные временные соотношения. Обычно, приемник, который был адресован, должен генерировать сигнал ACK после того, как каждый байт был получен, за исключением того, когда сообщение начинается с адресом CBUS. Когда подчиненный приемник не подтверждает подчиненный адрес (например, устройство не готово, потому что это выполняет некоторую внутреннюю функцию), линия SDA данных должна быть оставлена в “1”. Мастер затем может выдать состояние STOP, чтобы прервать передачу. Если подчиненный приемник подтверждает подчиненный адрес, но, некоторое время позднее не может получать больше байты данных, мастер должен приостановить передачу. При приеме последнего байта в серии, вместо сигнала ACK мастер может выставить состояние STOP, при этом подчиненный передатчик должен освободить линию данных.
Каждое мастер-устройство генерирует собственные сигналы синхронизации на линии SCL. Данные на линии SDA действительны только течение ВЫСОКОГО уровня SCL. Синхронизация осуществляется благодаря “монтажному-И” на линии SCL. Это означает, что состояние “0” на линии SCL будет длиться до тех пор, пока все мастер-устройства не освободят линию синхронизации. Линия SCL будет, следовательно, задержана в уровне “0” элементом с самым длинным уровнем “0”. Элементы с более коротким уровнем “0” при этом входят в состояние ожидания.
Мастер может начинать передачу только, если шина свободна. Два или больше мастера могут генерировать состояние START практически одновременно, поэтому необходим арбитраж между ними, для того чтобы выяснить, кто же их них все-таки был первым. Для этого используется линия SDA — благодаря тому, что она, как и SCL выполнена по схеме “монтажное-И”.
Читайте также: Nitto ntspk шина зимняя шипованная
Данные шлются пакетами, каждый пакет состоит из девяти бит. 8 данных и 1 бит подтверждения/не подтверждения приема. Первый пакет шлется от ведущего к ведомому это физический адрес устройства и бит направления.
Сам адрес состоит из семи бит (вот почему до 127 устройств на шине), а восьмой бит означает что будет делать Slave на следующем байте — принимать или передавать данные. Девятым битом идет бит подтверждения ACK. Если Slave услышал свой адрес и считал полностью, то на девятом такте он придавит линию SDA в 0, сгенерировав ACK — то есть Понял! Мастер, заметя это, понимает, что все идет по плану и можно продолжать. Если Slave не обнаружился, прозевал адрес, неправильно принял байт, сгорел или еще что с ним случилось, то, соответственно, SDA на девятом такте будет прижать некому и ACK не получится. Будет NACK.
После адресного пакета идут пакеты с данными в ту или другую сторону, в зависимости от бита RW в заголовочном пакете. Вот, например, Запись. В квадратиках идут номера битов. W=0
Чтение практически также, но есть одна тонкость. При приеме последнего байта надо дать ведомому понять, что в его услугах больше не нуждаемся и отослать NACK на последнем байте. Если отослать ACK то после стопа Master не отпустит линию — такой уж там конечный автомат. Так что прием двух байтов будет выглядеть так (R=1):
Есть еще одно состояние, как повторный старт. Это когда мы не объявляя STOP вкатываем на шину еще один START. После него мы можем обратиться к другому устройству не освобождая шину. Но чаще идет обращение к тому же самому устройству и это связано с особенностями организации памяти.
Видео:Уроки Arduino. Общение по Serial, парсинг данных, протоколы связиСкачать
Применение
I²C находит применение в устройствах, предусматривающих простоту разработки и низкую себестоимость изготовления при относительно неплохой скорости работы.
Список возможных применений:
- доступ к модулям памяти NVRAM;
- доступ к низкоскоростным ЦАП/АЦП;
- регулировка контрастности, насыщенности и цветового баланса мониторов;
- регулировка звука в динамиках;
- управление светодиодами, в том числе в мобильных телефонах;
- чтение информации с датчиков мониторинга и диагностики оборудования, например, термостат центрального процессора или скорость вращения вентилятора охлаждения;
- чтение информации с часов реального времени (кварцевых генераторов);
- управление включением/выключением питания системных компонент;
- информационный обмен между микроконтроллерами;
Пример системы с шиной I²C На рисунке: (a) Высокоинтегрированный телевизор
- Микроконтроллер
- ФАПЧ-синтезатор
- Флеш-память
- Мультисистемный декодер сигналов цветности
- Стереодекодер звука
- Улучшитель сигнала картинки
- Hi-Fi аудиопроцессор
- Аналоговый видеопроцессор
- Декодер телетекста
- ИМС сигналов OSD
(b) базовая станция радиотелефона стандарта DECT
- Генератор DTMF
- Интерфейс телефонной линии
- Кодек АДИКМ
- Пакетный контроллер
- Микроконтроллер
Видео:Шина данных i2c - декодируем/синхронизируем с помощью осциллографа Lecroy!Скачать
Преимущества
- необходим всего один микроконтроллер для управления набором устройств;
- используется всего два проводника для подключения многих устройств;
- возможна одновременная работа нескольких ведущих (master) устройств, подключенных к одной шине I²C;
- стандарт предусматривает «горячее» подключение и отключение устройств в процессе работы системы;
- встроенный в микросхемы фильтр подавляет всплески, обеспечивая целостность данных.
Видео:FLprog урок №2 шины данных Uart\I2C\ICSP\OneWireСкачать
Недостатки
- ограничение на ёмкость линии — 400 пФ;
- несмотря на простоту протокола, программирование контроллера I²C затруднено из-за изобилия возможных нештатных ситуаций на шине. По этой причине большинство систем используют I²C c единственным ведущим (Master) устройством, и распространённые *драйверы поддерживают только монопольный режим обмена по I²C;
- Трудность локализации неисправности, если одно из подключенных устройств ошибочно устанавливает на шине состояние низкого уровня.
Видео:Лекция "Интерфейсы (часть II). I2C. 1-Wire"Скачать
Преимущества для конструкторов
- поскольку такие микросхемы подключаются непосредственно к шине без каких-либо дополнительных цепей, появляется возможность модификации и модернизации системы прототипа путём подключения и отключения устройств от шины.
- блоки на функциональной схеме соответствуют микросхемам, переход от функциональной схемы к принципиальной происходит быстро.
- нет нужды разрабатывать шинные интерфейсы, так как шина уже интегрирована в микросхемы.
- интегрированные адресация устройств и протокол передачи данных позволяют системе быть полностью программно определяемой.
- одни и те же типы микросхем могут быть часто использованы в разных приложениях.
- время разработки снижается, так как конструкторы быстро знакомятся с часто используемыми функциональными блоками и соответствующими микросхемами.
- микросхемы могут быть добавлены или убраны из системы без оказания влияния на другие микросхемы, подключенные к шине (если их работа независима).
- простая диагностика сбоев и отладка; нарушения в работе могут быть немедленно отслежены.
- время разработки программного обеспечения может быть снижено за счет использования библиотеки повторно используемых программных модулей.
Видео:Цифровые интерфейсы и протоколыСкачать
Разработка
Каждая электронная система включает в себя 3 различных типа узлов:
- Узел управления
- Узлы общего назначения, такие, как буферы ЖКИ, порты ввода-вывода, ОЗУ, ЭСПЗУ или преобразователи данных.
- Специфические узлы, такие, как схемы цифровой настройки и обработки сигнала для радио- и видеосистем, или генераторы тонального набора для телефонии.
В настоящее время ассортимент продукции Philips включает более 150 КМОП и биполярных I²C-совместимых устройств, функционально предназначенных для работы во всех трёх вышеперечисленных категориях электронного оборудования. Все I²C-совместимые устройства имеют встроенный интерфейс, который позволяет им связываться друг с другом по шине I²C. Это конструкторское решение разрешает множество проблем сопряжения различных устройств, которые обычно возникают при разработке цифровых систем.
На дешевых устройствах часто I²C эмулируется программно с использованием технологии Bit-banging.
Видео:Шина I2C.Скачать
Поддержка операционными системами
- В Linux поддержка I²C обеспечивается специальным модулем для каждого устройства, совместимого с этим стандартом. Файл заголовков для написания клиента I²C — /usr/include/linux/i2c.h. В OpenBSD также добавлена поддержка основных микроконтроллеров и сенсоров I²C;
- В Sinclair QDOS и Minerva QL поддержка осуществляется через набор расширений фирмы TF Services;
- В AmigaOS доступ к устройствам I²C осуществляется с помощью библиотеки i2c.library, написанной Вильгельмом Нойкером;
- eCos поддерживает I²C для нескольких архитектур.
- Материнские платы EPIA-M поддерживают I²C на уровне форм-фактора Mini-ITX.
Видео:STM32. CMSIS. Урок#06: I2C. Теория. Сканер I2C адресов. Отправка и прием данных. MemWrite, MemRead.Скачать
Производные технологии
I²C является основой ACCESS.bus, дисплейного интерфейсного канала данных (DDC) VESA, шины управления системными функциями SMBus. В этих технологиях возможно использование различных напряжений, частоты обмена и наличия отдельных линий прерываний.
Шина IPMB, основанная на использовании двух I²C с целью резервирования и являющаяся основой интерфейса IPMI, применяется в высоконадёжных системах стандартов AdvancedTCA и MicroTCA.
TWI (Two Wire Interface) или TWSI (Two Wire Serial Interface), по сути, та же самая шина I²C, но использует другое название по лицензионным причинам (патенты на I²C уже отменены, 1 октября 2006 года отменены лицензионные отчисления за использование протокола I²C. Однако отчисления сохраняются для выделения эксклюзивного подчинённого адреса на шине I²C.)
- Свежие записи
- Нужно ли менять пружины при замене амортизаторов
- Скрипят амортизаторы на машине что делать
- Из чего состоит стойка амортизатора передняя
- Чем стянуть пружину амортизатора без стяжек
- Для чего нужны амортизаторы в автомобиле
🔍 Видео
Логический анализатор шины i2cСкачать
MCP2515, контроллер CAN шины с интерфейсом SPIСкачать
021 Общение робота по протоколу передачи данных I2CСкачать
I2C интерфейсСкачать
Урок 26.1 Соединяем две arduino по шине UARTСкачать