Scl sda что это

Общие сведения:

Подключение:

Шина поддерживает подключение до 112 устройств (при 7-ми битной адресации) по двум проводам (плюс GND и Vcc), может иметь несколько ведущих и ведомых. При использовании нескольких ведущих, каждый из них должен поддерживать этот режим и уметь определять состояние занятой шины.

I²C на Arduino

Arduino UNO R3/Piranha UNO

На Arduino UNO R3/Piranha UNO шина I2C находится на выводах A4, A5. Также в эти выводы продублированы на колодке с цифровыми выводами рядом с кнопкой Reset.

Scl sda что это. 7b6781f00baf68ac75d1849a356db9d3. Scl sda что это фото. Scl sda что это-7b6781f00baf68ac75d1849a356db9d3. картинка Scl sda что это. картинка 7b6781f00baf68ac75d1849a356db9d3

Piranha ULTRA

На Piranha ULTRA шина I²C не занимает аналоговые выводы A4, A5 и находится на цифровой колодке рядом с кнопкой Reset, выводы обозначены SDA и SCL

Scl sda что это. f6b66178e50c3605bba0b9607b58c6bd. Scl sda что это фото. Scl sda что это-f6b66178e50c3605bba0b9607b58c6bd. картинка Scl sda что это. картинка f6b66178e50c3605bba0b9607b58c6bd

Arduino MEGA R3

На Arduino MEGA R3 шина I²C находится на цифровой колодке на крайних выводах, близких к разъёму USB и на выводах 20, 21. Выводы объединены.

Scl sda что это. 3aaa4fa7ec41a7558b372bd19ae5b889. Scl sda что это фото. Scl sda что это-3aaa4fa7ec41a7558b372bd19ae5b889. картинка Scl sda что это. картинка 3aaa4fa7ec41a7558b372bd19ae5b889

Примеры для Arduino

В этом примере на матрицу выводится изображение стрелки. Стоит заметить, ко всем нашим модулям написаны библиотеки с высокоуровневым интерфейсом и вовсе не обязательно работать с матрицей на низком уровне. Подробнее о работе с библиотекой матрицы можно узнать по этой ссылке.

I²C на Raspberry Pi

На Raspberry Pi I²C выводы это 3-й и 5-й выводы колодки, GPIO2 и GPIO3 по номенклатуре BCM и выводы 8, 9 по номенклатуре WiringPi.

Scl sda что это. b20194d68cf816e08075dc36a60a4ad9. Scl sda что это фото. Scl sda что это-b20194d68cf816e08075dc36a60a4ad9. картинка Scl sda что это. картинка b20194d68cf816e08075dc36a60a4ad9

Примеры для Raspberry

Подробнее о шине I²C:

Резисторы, ёмкость и длина линий шины

В официальном описании от NXP ничего не сказано о максимальной длине шины, но не стоит этим злоупотреблять. Шина была придумана для обмена информации между интегральными схемами в пределах одной платы одного устройства. В расчёт бралась только паразитная ёмкость линии, которая сказывается на скорости нарастания фронта волны. От этой ёмкости зависит номинал подтягивающих резисторов. Можно подобрать резисторы так, чтобы фронт волны нарастал согласно спецификации и при 100-метровой длине проводов, но это не избавляет от помех, которые влечёт за собой несимметричная электрическая реализация. Опять же, при слишком маленьком сопротивлении качество сигнала улучшается, но при этом растёт ток который необходимо пропускать устройствам через выводы для притяжки линий.

При использовании шины на модулях не существует принятого стандарта установки подтягивающих резисторов на ведущем или ведомом. У Arduino подтягивающие резисторы отсутствуют и для работы с шиной нужен хотя бы один модуль с ними. У Raspberry Pi на плате установлены подтягивающие резисторы номиналом 1,7 килоОм и для неё нет необходимости в подтяжке на модулях.

Сигналы и специальные биты шины

Устанавливаемые только ведущим

Устанавливаемые ведущим и ведомым

Обмен данными

При обмене данными тактированием занимается только ведущий, а ведомый может удерживать линию тактирования только если не успевает за ведущим, так называемое растягивание тактирования (clock-stretching). Не все модули поддерживают удержание. Установка бита на линии данных может происходит в момент, когда линия тактирования прижата, а считывания, когда линия отпущена (подтянута к Vcc), но в большинстве случаев это происходит по фронту волны на линии тактирования.

Рассмотрим пример простого обмена данными:

Запись в регистры ведомого. Данные взяты из примеров, приведённых выше.

После сигнала Start и указания адреса ведущий записывает адрес регистра с которого будет производиться дальнейшая запись. Стоит заметить, что у ведомого есть внутренний счётчик и каждый последующий байт после подтверждения будет записан в следующий регистр. Таким образом байт со значением 0x00 будет записан в регистр 0x11, байт со значением 0x18 будет записан в регистр 0x12, байт со значением 0x3C будет записан в регистр 0x13 и т. д. В этом примере биты ACK устанавливает ведомый.

Вот так сигналы этого примера выглядят на осциллографе:

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

После сигнала Start и указания адреса ведущий записывает адрес регистра, который необходимо прочитать. Далее следует сигнал Restart (или Stop, затем Start). Ведущий снова выводит адрес ведомого, но уже с битом Read (чтения). Ведомый устанавливает бит ACK и во время следующих 8-ти импульсов тактирования выводит данные на линию SDA. На девятом импульсе уже ведущий устанавливает бит ACK (или NACK, если данные не удалось прочитать) и завершает обмен сигналом Stop.

Скорость

Первоначальный стандарт I²C был реализован на скорости 100 кГц. С тех пор появились и другие реализации шины, но большинство устройств работают на этой скорости. Так же известны случаи когда скорость шины специально снижена, чтобы увеличить расстояние передачи и уменьшить чувствительность к помехам. Не все модули могут работать на сниженной скорости.

Источник

Интерфейс I2C и Arduino

Инструкция по использованию протокола I 2 C совместно с Arduino

Нам понадобится:

1 Описание интерфейса I2C

Последовательный протокол обмена данными IIC (также называемый I2C – Inter-Integrated Circuits, межмикросхемное соединение) использует для передачи данных две двунаправленные линии связи, которые называются шина последовательных данных SDA (Serial Data) и шина тактирования SCL (Serial Clock). Также имеются две линии для питания. Шины SDA и SCL подтягиваются к шине питания через резисторы.

В сети есть хотя бы одно ведущее устройство (Master), которое инициализирует передачу данных и генерирует сигналы синхронизации. В сети также есть ведомые устройства (Slave), которые передают данные по запросу ведущего. У каждого ведомого устройства есть уникальный адрес, по которому ведущий и обращается к нему. Адрес устройства указывается в паспорте (datasheet). К одной шине I2C может быть подключено до 127 устройств, в том числе несколько ведущих. К шине можно подключать устройства в процессе работы, т.е. она поддерживает «горячее подключение».

Scl sda что это. 1. Scl sda что это фото. Scl sda что это-1. картинка Scl sda что это. картинка 1 Описание интерфейса I2C

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

Мастер инициирует обмен. Для этого он начинает генерировать тактовые импульсы и посылает их по линии SCL пачкой из 9-ти штук. Одновременно на линии данных SDA он выставляет адрес устройства, с которым необходимо установить связь, которые тактируются первыми 7-ми тактовыми импульсами (отсюда ограничение на диапазон адресов: 2 7 = 128 минус нулевой адрес). Следующий бит посылки – это код операции (чтение или запись) и ещё один бит – бит подтверждения (ACK), что ведомое устройство приняло запрос. Если бит подтверждения не пришёл, на этом обмен заканчивается. Или мастер продолжает посылать повторные запросы.

Это проиллюстрировано на рисунке ниже. Задача такая: подключиться к ведомому устройству с адресом 0x27 и передать ему строку «SOLTAU.RU». В первом случае, для примера, отключим ведомое устройство от шины. Видно, что мастер пытается установить связь с устройством с адресом 0x27, но не получает подтверждения (NAK). Обмен заканчивается.

Scl sda что это. i2c timing wo. Scl sda что это фото. Scl sda что это-i2c timing wo. картинка Scl sda что это. картинка i2c timing wo Попытка мастера установить соединение с ведомым по I2C

Теперь подключим к шине I2C ведомое устройство и повторим операцию. Ситуация изменилась. На первый пакет с адресом пришло подтверждение (ACK) от ведомого. Обмен продолжился. Информация передаётся также 9-битовыми посылками, но теперь 8 битов занимают данные и 1 бит – бит подтверждения получения ведомым каждого байта данных. Если в какой-то момент связь оборвётся и бит подтверждения не придёт, мастер прекратит передачу.

Scl sda что это. i2c timing. Scl sda что это фото. Scl sda что это-i2c timing. картинка Scl sda что это. картинка i2c timing Временная диаграмма обмена по протоколу I2C

2 Реализация I2Cв Arduino

Arduino использует для работы по интерфейсу I2C два порта. Например, в Arduino UNO и Arduino Nano аналоговый порт A4 соответствует SDA, аналоговый порт A5 соответствует SCL.

Scl sda что это. 2. Scl sda что это фото. Scl sda что это-2. картинка Scl sda что это. картинка 2 Реализация I2C в Arduino UNO и Nano

Для других моделей плат соответствие выводов такое:

ПлатаПин SDAПин SCL
Arduino Uno, Nano, Pro и Pro MiniA4A5
Arduino Mega2021
Arduino Leonardo23
Arduino Due20, SDA121, SCL1

3 Библиотека «Wire» для работы с IIC

Для облегчения обмена данными с устройствами по шине I2C для Arduino написана стандартная библиотека Wire. Она имеет следующие функции:

ФункцияНазначение
begin(address)инициализация библиотеки и подключение к шине I2C; если не указан адрес, то присоединённое устройство считается ведущим; используется 7-битная адресация;
requestFrom()используется ведущим устройством для запроса определённого количества байтов от ведомого;
beginTransmission(address)начало передачи данных к ведомому устройству по определённому адресу;
endTransmission()прекращение передачи данных ведомому;
write()запись данных от ведомого в ответ на запрос;
available()возвращает количество байт информации, доступных для приёма от ведомого;
read()чтение байта, переданного от ведомого ведущему или от ведущего ведомому;
onReceive()указывает на функцию, которая должна быть вызвана, когда ведомое устройство получит передачу от ведущего;
onRequest()указывает на функцию, которая должна быть вызвана, когда ведущее устройство получит передачу от ведомого.

4 Подключение I2C устройствак Arduino

Давайте посмотрим, как работать с шиной I2C с помощью Arduino.

Сначала соберём схему, как на рисунке. Будем управлять яркостью светодиода, используя цифровой 64-позиционный потенциометр AD5171 (см. техническое описание), который подключается к шине I2C. Адрес, по которому мы будем обращаться к потенциометру – 0x2c (44 в десятичной системе).

Scl sda что это. 4. Scl sda что это фото. Scl sda что это-4. картинка Scl sda что это. картинка 4 Подключение цифрового потенциометра к Arduino по шине I2C

5 Управление устройством по шине IIC

Рассмотрим диаграммы информационного обмена с цифровым потенциометром AD5171, представленные в техническом описании:

Scl sda что это. diag. Scl sda что это фото. Scl sda что это-diag. картинка Scl sda что это. картинка diag Рассмотрим диаграммы чтения и записи цифрового потенциометра AD5171

Нас тут интересует диаграмма записи данных в регистр RDAC. Этот регистр используется для управления сопротивлением потенциометра.

Откроем из примеров библиотеки «Wire» скетч: Файл Образцы Wire digital_potentiometer. Загрузим его в память Arduino.

После включения вы видите, как яркость светодиода циклически нарастает, а потом гаснет. При этом мы управляем потенциометром с помощью Arduino по шине I2C.

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

6 Дополнительно о шине I2C

Доступно и интересно рассказывает о шине I2C Джереми Блюм в своём видео:

Источник

Электроника для всех

Блог о электронике

Интерфейсная шина IIC (I2C)

Логический уровень
Как передаются отдельные биты понятно, теперь о том что эти биты значат. В отличии от SPI тут умная адресная структура. Данные шлются пакетами, каждый пакет состоит из девяти бит. 8 данных и 1 бит подтверждения/не подтверждения приема.

После адресного пакета идут пакеты с данными в ту или другую сторону, в зависимости от бита RW в заголовочном пакете.
Вот, например, Запись. В квадратиках идут номера битов. W=0

Scl sda что это. I2C 2byte. Scl sda что это фото. Scl sda что это-I2C 2byte. картинка Scl sda что это. картинка I2C 2byte

Задача решается так:

Scl sda что это. IIC WR. Scl sda что это фото. Scl sda что это-IIC WR. картинка Scl sda что это. картинка IIC WR
Вот и славно. Часы установлены и начали тикать. Но вот надо нам считать те же данные, а вдруг изменились?
С записью все понятно — записали вначале адрес, а потом следом записали данные. А умная микросхема все прекрасно поняла и рассовала по ячейкам. А с чтением? А с чтением все через задницу, в смысле через запись.

Scl sda что это. PCF log. Scl sda что это фото. Scl sda что это-PCF log. картинка Scl sda что это. картинка PCF log

Скриншот с осциллографа RIGOL 1042CD

Вроде бы все, практический пример с AVR будет потом, а пока помедитируйте над диаграммой работы конечного автомата TWI передатчика ATmega8. Скоро я вас буду этим грузить!

Scl sda что это. IIC State. Scl sda что это фото. Scl sda что это-IIC State. картинка Scl sda что это. картинка IIC State

Страшна? 😉 На самом деле там все не так брутально. Можно обойтись вообще парой десятков строк кода на ассемблере.

Спасибо. Вы потрясающие! Всего за месяц мы собрали нужную сумму в 500000 на хоккейную коробку для детского дома Аистенок. Из которых 125000+ было от вас, читателей EasyElectronics. Были даже переводы на 25000+ и просто поток платежей на 251 рубль. Это невероятно круто. Сейчас идет заключение договора и подготовка к строительству!

А я встрял на три года, как минимум, ежемесячной пахоты над статьями :)))))))))))) Спасибо вам за такой мощный пинок.

200 thoughts on “Интерфейсная шина IIC (I2C)”

(1) OpenID работает криво. Я зашёл как blacklion.livejournal.com и всё равно справа-сверху «войти» (а не «выйти») и не даю комментировать. Пришлось регистрироваться и теперь тут два меня.

(2) Софтового мастера сделать не сложно. А вот слейва как-то просто не получается.

Щас попробую с опен ид поиграться.

Более того, многие предпочитают делать софтовый И2С мастер чтобы не заморачиваться с встроенным в TWI конечным автоматом.

Более того, многие предпочитают делать софтовый И2С мастер чтобы не заморачиваться с встроенным в TWI конечным автоматом.
Я когда первый раз подходил к электронике смотрел на PIC (зачем я это делал!? Зачем на PIC?!) так реализовал мастера в качестве упражнения за вечер. А вот слейва так и не осилил…

Я сделал софтового слейва на AT89C2051, но работало жутко медленно.

плюсадин. я уже раз 5 жаловался что логины глючат 😀 нашел выход, что залогинился, пару минуток подождал и рефреш. работает, но бесит :\

DI HALT спасибо за статью. Давно ждал рассказ про I2C. 🙂

У меня их почти полный аналог ICL12008 ваще работать не хотят — не отзываются на свой адрес, не дают ACK

и у тебя, Брут? я изъебался с их инициализацией — не пашут и все. взял ds, который считал сгоревшим и не рабочим, по по недоразумению не выкинул — и он заработал. в топку эти ISL, от лукавого они..

А у меня 5 штук их лежит — сэмплы. Надо бы в ST гневный мессадж накатать. МОл чо вы за говно нам подсунули?

Да, есть такое дело 🙂 Вообще при начале работы с IIC девайсом, желательно вдоль и поперек изучить Datasheet к нему. В свое время тоже поломал голову с m41 от ST. Вроде все пишется, все читается, но часы стоят и все тут. Оказалось там есть хитрый битик, который при пропадании всего питания — Vcc и Vbat, останавливает часы и пока его не сбросишь они не пойдут.
Ну и еще обычный прикол с часами, что не все могут работать при отключенной батарейке — даже если Vcc есть, внутри у них стоит контроль, который проверяет разницу между напругой и Vbat, и если Vbat нет, то часы просто ни на что не отвечают 🙂

p.s. а про NACK в конце чтения это да, самые популярные грабли наверно. Кстати для отлаживания шины если нет крутого осцила, можно прикрутить I2C Sniffer на Atmega8 — оч удобная штука, она в консоли показывает полностью весь обмен в удобоваримом виде.

А чё с ним было голову ломать? Кстати, m41t56 рекомендую, простые и удобные I2C часы. Про битик я давно знал — он у всех часовых изделий от ST присутствует. Наверное, как совместимость с m48t08 — который с батареей на борту. Чтобы батарею не сажать, пока таймкипер лежит на складе, они глушат часы.

О)) На самом деле классная тема! Мне бы сначала с простым UARTом разобраться, а потом только к творению Philips)) Буду ждать исходников…

Отличная статья! А есть последняя диаграмма только в чуть лучшем качестве? А то буквы трудно различить.

Красные пути — нормальная работа
Синие — возможные косяки.

Источник

Национальная библиотека им. Н. Э. Баумана
Bauman National Library

Персональные инструменты

I²C (Inter-Integrated Circuit Bus)

Scl sda что это. 55px Open book.svg. Scl sda что это фото. Scl sda что это-55px Open book.svg. картинка Scl sda что это. картинка 55px Open book.svgАвторство
Портнова А.С.
Согласовано: 15.04.2016
I²C

Scl sda что это. %D0%94%D0%B6%D0%B8%D0%BF%D0%B5%D0%B3. Scl sda что это фото. Scl sda что это-%D0%94%D0%B6%D0%B8%D0%BF%D0%B5%D0%B3. картинка Scl sda что это. картинка %D0%94%D0%B6%D0%B8%D0%BF%D0%B5%D0%B3
TypeBus
Production history
DesignerPhilips Semiconductor, known today as NXP Semiconductors
Designed1982 ; 39 years ago ( 1982 )
Data
Data signalOpen-Drain
Width1 bit (SDA) + clock (SCL)
Bitrate0.1 / 0.4 / 1.0 / 3.4 / 5.0 Mbit/s
(depending on mode)
ProtocolSerial, Half Duplex

I²C (англ. Inter-Integrated Circuit Bus ) – последовательная шина данных для связи интегральных схем, использующая две двунаправленные линии связи (SDA и SCL). Используется для соединения низкоскоростных периферийных компонентов с материнской платой, встраиваемыми системами и мобильными телефонами. Двухпроводной последовательный интерфейс, разработанный корпорацией Philips.

Шина I2C широко используется в бытовой электронике, передаче данных и промышленной электронике. Простая двунаправленная 2-проводная шина для эффективного управления и взаимодействия различных блоков телевизоров, она стала применяться для связи между собой однокристальных микроконтроллеров, ЖКИ-индикаторов, портов ввода-вывода, микросхем памяти (особенно энергонезависимой), аналого-цифровых и цифро-аналоговых преобразователях, цепях цифровой настройки, DTMF кодеров и декодеров, часов реального времени и т.д

Содержание

История

Введение в спецификацию I²C

Обычно для многих приборов выдвигаются следующие критерии:

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

Концепция шины

Все операции по шине I²C осуществляются при помощи двух проводов:

Терминология шины I²C

I²C является многопрофильным master шины. Это означает, что еще одно устройство, способное контролировать шину можно подключить к нему. Так как в качестве master обычно являются микроконтроллеры, давайте рассмотрим случай передачи данных между двумя микроконтроллерами, подключенных к I²C.

Scl sda что это. %D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%801%D0%BF. Scl sda что это фото. Scl sda что это-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%801%D0%BF. картинка Scl sda что это. картинка %D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%801%D0%BF

Данные передаются по двум проводам — проводу данных и проводу тактов. Есть ведущий (master) и ведомый (slave), такты генерирует master, ведомый лишь «поддакивает» при приёме байта. Всего на одной двупроводной шине может быть до 127 устройств.

Общие характеристики

Scl sda что это. %D0%A1%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5 %D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2. Scl sda что это фото. Scl sda что это-%D0%A1%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5 %D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2. картинка Scl sda что это. картинка %D0%A1%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5 %D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2

Принцип работы

I²C использует две двунаправленные линии, подтянутые к напряжению питания и управляемые через открытый коллектор или открытый сток — последовательная линия данных (SDA, англ. Serial DAta) и последовательная линия тактирования (SCL, англ. Serial CLock). Стандартные напряжения +5 В или +3,3 В, однако допускаются и другие.

Классическая адресация включает 7-битное адресное пространство с 16 зарезервированными адресами. Это означает, что разработчикам доступно до 112 свободных адресов для подключения периферии на одну шину.

Основной режим работы — 100 кбит/с; 10 кбит/с в режиме работы с пониженной скоростью. Также немаловажно, что стандарт допускает приостановку тактирования для работы с медленными устройствами.

Scl sda что это. Transferdata. Scl sda что это фото. Scl sda что это-Transferdata. картинка Scl sda что это. картинка Transferdata

Scl sda что это. Transferbit. Scl sda что это фото. Scl sda что это-Transferbit. картинка Scl sda что это. картинка Transferbit

Scl sda что это. Startstop. Scl sda что это фото. Scl sda что это-Startstop. картинка Scl sda что это. картинка Startstop

Все передачи производятся 8-разрядными байтами. Число байтов, которые могут быть переданы за одну передачу не ограничено. Каждый байт должен сопровождаться битом подтверждения (ACK). Данные передаются начиная со старшего бита (MSB). (Рис.6) Если приемник не может получать другой полный байт данных, он не выдает сигнал ACK, который используется передатчиком для синхронизации или сигнализации о неисправности приемника (или его отсутствии).

Scl sda что это. Transferdata2. Scl sda что это фото. Scl sda что это-Transferdata2. картинка Scl sda что это. картинка Transferdata2

Для подтверждения передачи байта передатчик устанавливает линию SDA в “1” в течение синхронизирующего импульса. (Рис.7) Приемник при этом должен выставить “0” на SDA. Естественно при этом должны бить выдержаны определенные временные соотношения. Обычно, приемник, который был адресован, должен генерировать сигнал ACK после того, как каждый байт был получен, за исключением того, когда сообщение начинается с адресом CBUS. Когда подчиненный приемник не подтверждает подчиненный адрес (например, устройство не готово, потому что это выполняет некоторую внутреннюю функцию), линия SDA данных должна быть оставлена в “1”. Мастер затем может выдать состояние STOP, чтобы прервать передачу. Если подчиненный приемник подтверждает подчиненный адрес, но, некоторое время позднее не может получать больше байты данных, мастер должен приостановить передачу. При приеме последнего байта в серии, вместо сигнала ACK мастер может выставить состояние STOP, при этом подчиненный передатчик должен освободить линию данных.

Scl sda что это. %D0%9F%D0%BE%D0%B4%D1%82%D0%B2%D0%B5%D1%80%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5%D0%BF%D0%B5%D1%80%D0%B5%D0%B4%D0%B0%D1%87%D0%B8. Scl sda что это фото. Scl sda что это-%D0%9F%D0%BE%D0%B4%D1%82%D0%B2%D0%B5%D1%80%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5%D0%BF%D0%B5%D1%80%D0%B5%D0%B4%D0%B0%D1%87%D0%B8. картинка Scl sda что это. картинка %D0%9F%D0%BE%D0%B4%D1%82%D0%B2%D0%B5%D1%80%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5%D0%BF%D0%B5%D1%80%D0%B5%D0%B4%D0%B0%D1%87%D0%B8

Каждое мастер-устройство генерирует собственные сигналы синхронизации на линии SCL. Данные на линии SDA действительны только течение ВЫСОКОГО уровня SCL. Синхронизация осуществляется благодаря “монтажному-И” на линии SCL. Это означает, что состояние “0” на линии SCL будет длиться до тех пор, пока все мастер-устройства не освободят линию синхронизации. Линия SCL будет, следовательно, задержана в уровне “0” элементом с самым длинным уровнем “0”. Элементы с более коротким уровнем “0” при этом входят в состояние ожидания.

Scl sda что это. %D0%A1%D0%B8%D0%B5%D1%85%D1%80%D0%BE%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F. Scl sda что это фото. Scl sda что это-%D0%A1%D0%B8%D0%B5%D1%85%D1%80%D0%BE%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F. картинка Scl sda что это. картинка %D0%A1%D0%B8%D0%B5%D1%85%D1%80%D0%BE%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F

Scl sda что это. %D0%90%D1%80%D0%B1%D0%B8%D1%82%D1%80%D0%B0%D0%B6. Scl sda что это фото. Scl sda что это-%D0%90%D1%80%D0%B1%D0%B8%D1%82%D1%80%D0%B0%D0%B6. картинка Scl sda что это. картинка %D0%90%D1%80%D0%B1%D0%B8%D1%82%D1%80%D0%B0%D0%B6

Данные шлются пакетами, каждый пакет состоит из девяти бит. 8 данных и 1 бит подтверждения/не подтверждения приема. Первый пакет шлется от ведущего к ведомому это физический адрес устройства и бит направления. Scl sda что это. %D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9%D0%BF%D0%B0%D0%BA%D0%B5%D1%82. Scl sda что это фото. Scl sda что это-%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9%D0%BF%D0%B0%D0%BA%D0%B5%D1%82. картинка Scl sda что это. картинка %D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9%D0%BF%D0%B0%D0%BA%D0%B5%D1%82

Сам адрес состоит из семи бит (вот почему до 127 устройств на шине), а восьмой бит означает что будет делать Slave на следующем байте — принимать или передавать данные. Девятым битом идет бит подтверждения ACK. Если Slave услышал свой адрес и считал полностью, то на девятом такте он придавит линию SDA в 0, сгенерировав ACK — то есть Понял! Мастер, заметя это, понимает, что все идет по плану и можно продолжать. Если Slave не обнаружился, прозевал адрес, неправильно принял байт, сгорел или еще что с ним случилось, то, соответственно, SDA на девятом такте будет прижать некому и ACK не получится. Будет NACK.

После адресного пакета идут пакеты с данными в ту или другую сторону, в зависимости от бита RW в заголовочном пакете. Вот, например, Запись. В квадратиках идут номера битов. W=0

Scl sda что это. %D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9%D0%BF%D0%B0%D0%BA%D0%B5%D1%821. Scl sda что это фото. Scl sda что это-%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9%D0%BF%D0%B0%D0%BA%D0%B5%D1%821. картинка Scl sda что это. картинка %D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9%D0%BF%D0%B0%D0%BA%D0%B5%D1%821

Чтение практически также, но есть одна тонкость. При приеме последнего байта надо дать ведомому понять, что в его услугах больше не нуждаемся и отослать NACK на последнем байте. Если отослать ACK то после стопа Master не отпустит линию — такой уж там конечный автомат. Так что прием двух байтов будет выглядеть так (R=1):

Scl sda что это. %D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9%D0%BF%D0%B0%D0%BA%D0%B5%D1%822. Scl sda что это фото. Scl sda что это-%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9%D0%BF%D0%B0%D0%BA%D0%B5%D1%822. картинка Scl sda что это. картинка %D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9%D0%BF%D0%B0%D0%BA%D0%B5%D1%822

Есть еще одно состояние, как повторный старт. Это когда мы не объявляя STOP вкатываем на шину еще один START. После него мы можем обратиться к другому устройству не освобождая шину. Но чаще идет обращение к тому же самому устройству и это связано с особенностями организации памяти.

Применение

I²C находит применение в устройствах, предусматривающих простоту разработки и низкую себестоимость изготовления при относительно неплохой скорости работы.

Список возможных применений:

Пример системы с шиной I²C На рисунке: (a) Высокоинтегрированный телевизор

(b) базовая станция радиотелефона стандарта DECT

Scl sda что это. %D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B. Scl sda что это фото. Scl sda что это-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B. картинка Scl sda что это. картинка %D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B

Преимущества

Недостатки

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

Разработка

Каждая электронная система включает в себя 3 различных типа узлов:

В настоящее время ассортимент продукции Philips включает более 150 КМОП и биполярных I²C-совместимых устройств, функционально предназначенных для работы во всех трёх вышеперечисленных категориях электронного оборудования. Все I²C-совместимые устройства имеют встроенный интерфейс, который позволяет им связываться друг с другом по шине I²C. Это конструкторское решение разрешает множество проблем сопряжения различных устройств, которые обычно возникают при разработке цифровых систем.

На дешевых устройствах часто I²C эмулируется программно с использованием технологии Bit-banging.

Поддержка операционными системами

Производные технологии

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.)

Источник

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

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