Что такое i2c интерфейс

Что такое i2c интерфейс

Наконец, подобрались к I2C. Давно хотелось, но всё никак. Тема интересная, а возможности периферии общающейся по этому протоколу могут существенно расширить возможности микроконтроллерной системы. I2C, в отличии от SPI , позволяет наращивать функционал, добавлять новые блоки без изменения в схеме и не задействуя новые выводы МК — настоящий конструктор — стыкуй что и сколько надо =)

I2C (Inter-Integrated Circuit — примерно «Схема внутренней связи» =), читается “и-два-цэ” — последовательная шина выдуманная в недрах Philips ещё в 80-х годах прошлого века. Задумывалась, как простая шина для связи блоков внутри устройства — получилось, и на удивление удачно=)
Сегодня, каждый производитель выпускающий МК уровнем чуть выше нулевого суёт туда аппаратный I2C, правда Philips запатентавал название и до 2007 года все выдумывали своим велосипедам имена кто во что горазд: у ATmega, например, этот модуль завётся 2-wire Serial Interface.
Производители законченных блоков и модулей, зачастую, используют именно I2C для общения с внешним миром (блоки телевизоров, магнитол, дисплеи, некоторые камеры в мобильных телефонах и т.п.), а микросхем периферии вообще на любой вкус: АЦП/ЦАП памяти разнообразные, часы реального времени, расширители вводо-выводов, гироскопы, акселерометры, компасы, драйверы светодиодов и матриц, ШИМ-контроллеры, синтезаторы частот и вообще, по-моему, всё что душе угодно.

Затыков у этой чудо шины два: скорость работы и ограничение на число адресов в сети.
Классически это 100 кбит/с и 128 устройств.
Но стандарт 1992 года предусматривает скорости как 100 кбит/с (low-speed), так и 400 кбит/с (fast-speed) и уже 10-битную адресацию т.е. максимум — 1203 адреса.
А стандартом от 1998, раскрутили аж до 3.4 Мбит/с (Hs-mode).
Но производители живут в прошлом веке и заглянув в датащит на атмеги увидим, что модуль 2-wire Serial Interface может раскочегарится до 400 кГц и адресовать только 127 устройств =

Так же, есть зарезервированные 8 служебных адресов, так что, на деле, устройств может быть только 120.

Ну и хрен с ними, мне лично — за глаза, да и мороки с этим Hs-mode значительно.
Адреса, обычно, жёстко “прошиты” в микросхему (см. датащиты), но частенько несколько бит адреса “выводят” на ножки — перемычками (на питание или землю) можно задать эти биты и подключить несколько одинаковых микросхем на одну шину.

Физически, шина I2C представляет собой два провода (не считая земли и питания =), притянутые к плюсу резисторами 1-10к (так и только так!).
Один провод — шина данных(SDA — Serial DAta), второй — тактирование(SCS — Serial CLock).

И всё!
Работает тоже почти бесхитростно:
На линии обычно есть один Мастер (Master) — МК и некоторое количество Слейвов (Slave) — периферийных устройств (возможна и многомастерная “архитектура”, но об этом позже).
Так как линии у нас подтянуты к питанию, то устройствам остаётся только прижимать их к земле, когда хочется передать нолик и просто отпустить — чтоб единицу.
Отсюда важный вывод о совместной работе устройств с таким включением (называется — монтажное “И”) — если кто-то выставил ноль — остальным придётся с этим смириться =)
Итак, тактирование (дрыганье SCL) всегда осуществляет мастер, передачу начинает тоже всегда он, предварительно уточнив, что линия свободна (единички на SDA и SCL), формирует СТАРТ-условие (S) — прижимает линию SDA (1->0), при еденице на SCL,

Потом, надо передать адрес того устройства к которому мы хотим обратиться.
При передаче по I2C есть два правила:
Во-первых, данные считываются только при единичном состоянии SCL, а меняться могут, только при нулевом состоянии SCL (выставили-держим-протолкнули-выставили следующий-держим-. ).
Во-вторых, данные идут головой вперёд — начиная со старшего бита(MSB)

7 битов адреса, восьмой — признак R/W — если хотим читать 1, записать 0.
Прожевав восьмой бит, ведомая микросхема должна сказать уверенное “Ага”, если всё понятно — послать сигнал подтверждения (ack, acknowledge) — прижав линию SDA (отпущенную ведущим) на время 9-го такта на SCL. Мастер с интересом это дело выслушает (и тактично подождёт если туговатая микросхема не сразу отпустит SDA)
Если ack нет (называется nack) — значит ведомому что-то не понятно, тогда нужно(можно) сформировать СТОП и повторить передачу.
Затем, мастер либо посылает байт данных слейву, и снова дожидается подтверждения,
либо принимает от него байт и уже сам выдаёт подтверждение. Байт данных может быть несколько, но все они когда-нибудь закончатся, и мастер должен будет сформировать СТОП-условие(P). Для этого надо отпустить линию SDA (0->1), не трогая SCL.

полный “текст” обращения (кликабельно):

Всё просто=)
СТАРТ-адрес(запись/чтение)-подтверждение-данные-подтверждение-СТОП

А если мастер читал данные, то, прочитав последний интересующий байт должен вместо последнего asc передать nack. Только такое вот, невежливое, завершение диалога понимает многие (или все? — см. датащиты) периферийные микросхемы.

Так же, туговатая микросхема может придерживать линию SCL, демонстрируя, что не успевает глотать недожёванное, так что, перед подачей очередного такта, мастер должен проверить свободно ли, и если нет — подождать.
Есть ещё такой режим — комбинированный. Это когда мастер, прочитав что-нибудь, не освобождая линию,(не формируя СТОП) генерит прям сразу ещё один СТАРТ и лезет писать. Такой хамский старт называется повторным — ПОВСТАРТ (repeated Start, Sr). Делается это, обычно, для указания «внутреннего» адреса периферийной микросхемы — например: послали адрес EEPROM-ины, сказали что намерены читать, потом ПОВСТАРТ и адрес ячейки откуда хотим считать

Есть ещё режим много-мастерной(multi-master) работы — тут сильно выручает соединение “монтажное И”.

А для реализации, непосредственно демократии, на шине действуют ещё и правила джунглей синхронизации и арбитража. Эти правила построены на непрерывном самоконтроле мастерами результатов своей деятельности — отпустит линию — и тут же смотрит — отпустилась? Если — отпустилась, то всё хорошо и он тут пока главный, если нет (кто-то держит линию) — есть мастера потолще, надо свалить.
Естественно, каждый мастер перед началом бурной деятельности по раздаче команд и чтению данных проверяет не занимает ли линию кто-нибудь столь же мастеровитый, и если занимает то тактично ждёт просветов.
А если одновременно, сразу несколько, посмотрели — свободно — воздуха побольше набрали и давай… вещать?
Тут они начинают мериться=)
Во-первых, тактирование. Естественно, все мастера ломанутся дёргать SCL самостоятельно, они ж мастера=) Вот только пока самые резвые (начавшие первыми) сгенерировав первый такт, отпустят линию — более тормозные и неторопливые будут её держать, отпуская по одному, пока не найдётся самый главный тормоз — начавший вещать последним, он то и продолжит, а остальные останутся нервно ждать.
Но, может так случится, что два особо однояйцевых мастера синхронно сгенерят СТАРТ условие. Тогда опять начнётся затяжной заплыв с мериньем. Будут гнать в линию SDA свои нолики и единицы синхронно, пока не обнаружится разница в задуманном — тот кто захочет выставить единицу будет традиционно обломан тем, кто решил в этот момент послать нолик. Обламавшийся перейдёт в ожидание, а тот кто сказал 0 первым — продолжит.
В общем, “0” в I2C решает, на этом всё и держится =)

Читайте также:  Скт моэск согласовать проект

Дополнительно, для погружения в тему, рекомендую книжку:
Семёнов Б.Ю. «Шина I2C в радиотехнических конструкциях»
А также, перевод стандарта

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

Этот недостаток отсутствует у интерфейса I 2 C (Inter-Integrated Circuit). Он был первоначально разработан фирмой Philips в конце 1970-х годов специально для того, чтобы обеспечивать такой способ подключения периферийных устройств к микропроцессорам, который не требовал бы использования традиционных шин адреса, данных и управления, а кроме того, позволял бы нескольким микропроцессорам работать с одними и теми же периферийными устройствами (multimastering). Philips запатентовал название интерфейса и до 2007 у различных производителей этот микроконтроллер имел свое название. Например, в микроконтроллерах ATmega, на которых строится Arduino, этот интерфейс носит название 2-wire Serial Interface (двухпроводной последовательный интерфейс).

Интерфейс RS-232 использует асинхронный протокол передачи данных, потому что приемник не получает какого-либо сигнала тактирования в явном виде. На рисунке ниже показаны временные диаграммы сигналов при синхронной передаче данных. Здесь приемник фиксирует данные на линии Data по переднему или заднему фронту синхроимпульсов Clock.

Синхронная передача данных

Интерфейс I 2 C использует всего две линии — они именуются SCL (Serial Clock) и SDA (Serial Data). Первая предназначена для передачи синхроимпульсов (они формируются тем устройством, которое в настоящий момент передает данные), а вторая — для передачи самих данных и команд, управляющих этим процессом. Обе линии имеют открытый коллектор (как и во многих других случаях, когда необходимо, чтобы к одной линии мого подключаться несколько различных устройств), поэтому требуют подключения «подтягивающих» резисторов сопротивлением 1-10 кОм.

Для примера на рисунке ниже показана структурная схема устройства управления стереосистемой.

Устройство управления стереосистемой на основе интерфейса I 2 C

В обмене информацией по шине I 2 C всегда принимают участие два устройства — ведущее (master, задатчик) и ведомое. Ведущее устройство вырабатывает синхроимпульсы, а принимать или передавать данные может как задатчик, так и ведомое устройство.

Пока ни одно устройство не начало передачу данных, благодаря подтягивающим резисторам на обоих линиях шины I 2 C действует напряжение высокого уровня. Если какое-либо устройство собирается начать передачу данных, оно сначала проверяет, свободна ли шина. Ведь в каждый момент времени ведущим на шине может быть только одно устройство. Напряжение высокого уровня на линии SCL показывает, что шина пока свободна.

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

Начало и конец передачи данных по интерфейсу I 2 C

Затем начинается передача данных от ведущего устройства к ведомому (slave) или наоборот, но в любом случае источником синхроимпульсов является задатчик. Данные фиксируются приемником по заднему фронту синхроимпульсов.

В конце передачи ведущее устройство прекращает генерацию синхроимпульсов; в результате на линии SCL благодаря подтягивающему резистору устанавливается напряжение высокого уровня, после этого отключается передатчик, из-за чего устанавливается высокий уровень на линии SDA — иными словами, повторяется ситуация, обратная той, что наблюдалась перед началом передачи.

В отличие от интерфейса RS-232, передача данных производится начиная со старшего бита; при этом используются обычные логические уровни микросхем ТТЛ/КМОП. После передачи последнего (восьмого) бита каждого байта во время действия очередного синхроимпульса передатчик отключается от линии SDA, чтобы дать возможность приемнику подтвердить получение данных. Для этого приемник должен выставить на линии SDA сигнал низкого уровня. Перед посылкой очередного бита сигнал низкого уровня действует на обеих линиях. Временные диаграммы на рисунке ниже иллюстрируют процесс передачи одного байта данных по интерфейсу I 2 C.

Передача данных по интерфейсу I 2 C

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

Минимальная скорость передачи по интерфейсу I 2 C ничем не ограничена. И передатчик, и приемник могут при необходимости замедлять процесс обмена на неопределенное время. Задатчик делает это, удерживая сигнал высокого уровня на линии SCL после приема или передачи предыдущего бита. Ведомое устройство может замедлить работу задатчика, удерживая сигнал на линии SCL на низком уровне после приема или передачи очередного бита (увидев это, задатчик не сможет выставить на линии SCL следующий синхроимпульс).

Cуществуют три максимальные скорости передачи. В так называемом стандартном режиме это 100 Кбит/с (частота синхроимпульсов 100 кГц), в быстром режиме — 400 Кбит/с (частота синхроимпульсов 400 кГц), в высокоскоростном режиме — 3.4 Мбит/с и в ультравысокоскоростном режиме — до 5 Мбит/с. Правда, устройств, работающих на мегабитных скоростях еще нужно поискать. Помимо скоростных ограничений, есть и ограничения на максимальное количество подключенных к шине I 2 C устройств. В стандартном режиме можно адресовать 127 устройств (7-битный адрес), в быстром режиме до 1023 устройств (10-битный адрес). На рисунке ниже показаны минимальные временные задержки для обоих режимов (все значения указаны в микросекундах).

Читайте также:  Как сажать лилии в домашних условиях

Минимальные временные задержки для двух режимов передачи данных по интерфейсу I 2 C

На рисунке ниже показан формат команд, используемых для управления процессом передачи данных по интерфейсу I 2 C.

Формат управляющих команд интерфейcа I 2 C

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

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

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

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

Реализация интерфейса I 2 C с помощью микроконтроллеров весьма проста. Однако, из-за программной его реализации трудно достичь высоких скоростей передачи. Даже максимальная скорость стандартного режима (100 Кбит/с) может оказаться недостижимой.

Программная реализация интерфейса I 2 C все же является наилучшим решением, если кроме микроконтроллера на шине не может быть других задатчиков. Ведь в этом случае, не требуется синхронизировать его работу с какими-либо быстрыми устройствами, в которых используется аппаратная реализация этого интерфейса.

Полную спецификацию и руководство пользователя для шины I2C можно скачать по ссылке:

Микроконтроллер на рисунке это ведущий элемент (Master1) им может быть процессор. На рисунке представлено 3 ведомых перефириных элемента Slave В качестве Slave могут быть память, ЦАП, АЦП и пр. К шине может быть подключено до 127 устройств.

Процессор с памятью соединен в данном случае по двум шинам:
SDA (Serial DATA)- шина последовательной передачи данных. Данные по этой шине могут передаваться в двух направлениях.
SCL (Serial Clock) — шина по которой идет тактирование шины данных. Шина синхронизации данных. Она также определяет в какой момент куда пойдут данные. В схеме Master-Master первым битом определяется, кто займет главную роль.
Скорость передачи данных. Так как передаются по 1 биту за 1 такт, то скорость передачи данных составляет 1/8 от тактовой частоты.

Состояние СТАРТ и СТОП
Процедура обмена начинается с того, что ведущий формирует состояние СТАРТ: генерирует переход сигнала линии SDA из ВЫСОКОГО состояния в НИЗКОЕ при ВЫСОКОМ уровне на линии SCL. Этот переход воспринимается всеми устройствами, подключенными к шине, как признак начала процедуры обмена. Генерация синхросигнала — это всегда обязанность ведущего; каждый ведущий генерирует свой собственный сигнал синхронизации при пересылке данных по шине. Процедура обмена завершается тем, что ведущий формирует состояние СТОП — переход состояния линии SDA из низкого состояния в ВЫСОКОЕ при ВЫСОКОМ состоянии линии SCL. Состояния СТАРТ и СТОП всегда вырабатываются ведущим.
Считается, что шина занята после фиксации состояния СТАРТ. Шина считается освободившейся через некоторое время после фиксации состояния СТОП. При передаче посылок по шине I²C каждый ведущий генерирует свой синхросигнал на линии SCL. После формирования состояния СТАРТ ведущий опускает состояние линии SCL в НИЗКОЕ состояние и выставляет на линию SDA старший бит первого байта сообщения. Количество байт в сообщении не ограничено. Спецификация шины I²C разрешает изменения на линии SDA только при НИЗКОМ уровне сигнала на линии SCL. Данные действительны и должны оставаться стабильными только во время ВЫСОКОГО состояния синхроимпульса. Для подтверждения приёма байта от ведущего-передатчика ведомым-приёмником в спецификации протокола обмена по шине I²C вводится специальный бит подтверждения, выставляемый на шину SDA после приёма 8 бита данных.
Подтверждение
Таким образом передача 8 бит данных от передатчика к приёмнику завершаются дополнительным циклом (формированием 9-го тактового импульса линии SCL), при котором приёмник выставляет низкий уровень сигнала на линии SDA, как признак успешного приёма байта.

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

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

Читайте также:  Велосипед для снега своими руками

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

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

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

На уровне битов устройство, такое, как микроконтроллер без встроенных аппаратных цепей I²C или с ограниченными цепями, может замедлить частоту синхроимпульсов путём продления их НИЗКОГО периода. Таким образом скорость передачи любого ведущего адаптируется к скорости медленного устройства.
Адресация в шине I²C
Каждое устройство, подключённое к шине, может быть программно адресовано по уникальному адресу. Для выбора приёмника сообщения ведущий использует уникальную адресную компоненту в формате посылки. При использовании однотипных устройств ИС часто имеют дополнительный селектор адреса, который может быть реализован как в виде дополнительных цифровых входов селектора адреса, так и в виде аналогового входа.

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

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

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

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

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

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

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

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

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

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

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

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

3В или 5В но могут быть и другие). А процессор понижая потенциал дает команду на переход к готовности . Для поддержания положительного потенциала возле шины ставяться подтягивающие резистоы (Vdd см. рисунок) на плюсовое питание по обеим линиям. Обчно ставять резисторы на 10 КОм на +3,3 В

1. Связь процессора с памятью (чаще EEPROM)
2. HDMI и DVI интерфейсы (для передачи служебной информации от телевизора к устройству которое воспроизводит видеоконтент, либо для передачи информации от монитора к компьютеру для передачи информации, что за монитор подключили с какими характеристикаи, передача информации от термостата ЦП или информация о скорости вращения кулера и т.д.)
3. Микросхемы и карты памяти (EEPROM, RAM, FERAM, Flash);
4. Доступ к низкоскоростным ЦАП/АЦП;
5. Регулировка контрастности, насыщенности и цветового баланса мониторов;
6. Регулировка звука в динамиках;
7. Управление светодиодами, в том числе в мобильных телефонах;
8. Чтение информации с часов реального времени (кварцевых генераторов);
9. Управление включением/выключением питания системных компонент;
10. Клавиатуры
11. Информационный обмен между микроконтроллерами;

Пример системы с шиной I²C:
На рисунке (Кликабельно):
(a) Высокоинтегрированный телевизор
Микроконтроллер
ФАПЧ-синтезатор
Флеш-память
Мультисистемный декодер сигналов цветности
Стереодекодер звука
Улучшитель сигнала картинки
Hi-Fi аудиопроцессор
Аналоговый видеопроцессор
Декодер телетекста
ИМС сигналов OSD
(b) базовая станция радиотелефона стандарта DECT
Генератор DTMF
Интерфейс телефонной линии
Кодек АДИКМ
Пакетный контроллер
Микроконтроллер

Ссылка на основную публикацию
Чертежи арок из гипсокартона
Изящная арка – элемент архитектуры, которые способен сделать любой интерьер изысканным и неповторимым. Правильно выбранная конструкция арки позволит ей стать...
Чем украсить стол в гостиной
Ваша давняя мечта сбылась: вы отремонтировали гостиную. Дело осталось за малым – обустроить уютное и эргономичное пространство, которое бы с...
Чем уплотнить газовое резьбовое соединение
Любое резьбовое соединение в отоплении или водоснабжении требует применения различных средств герметизации. Без них резьбовое соединение просто начинает подтекать, что...
Чертежи деревянных лодок из досок
Иметь собственную лодку мечтают не только охотники и рыбаки. Кому не хочется в жаркие дни совершить прогулку по воде, при...
Adblock detector