<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://wiki.me-robotics.ru/index.php?action=history&amp;feed=atom&amp;title=IIC</id>
	<title>IIC - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.me-robotics.ru/index.php?action=history&amp;feed=atom&amp;title=IIC"/>
	<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=IIC&amp;action=history"/>
	<updated>2026-07-10T21:21:23Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.35.2</generator>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=IIC&amp;diff=973&amp;oldid=prev</id>
		<title>Андрей: Андрей переименовал страницу I2C в IIC</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=IIC&amp;diff=973&amp;oldid=prev"/>
		<updated>2022-05-02T21:34:04Z</updated>

		<summary type="html">&lt;p&gt;Андрей переименовал страницу &lt;a href=&quot;/I2C&quot; title=&quot;I2C&quot;&gt;I2C&lt;/a&gt; в &lt;a href=&quot;/IIC&quot; title=&quot;IIC&quot;&gt;IIC&lt;/a&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия 21:34, 2 мая 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Андрей</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=IIC&amp;diff=793&amp;oldid=prev</id>
		<title>Деревянчук Вадим: Новая страница: «&#039;&#039;&#039;I²C - Inter-Integrated Circuit&#039;&#039;&#039; (ай-ту-си) - последовательная шина обмена данными между интегральным...»</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=IIC&amp;diff=793&amp;oldid=prev"/>
		<updated>2021-06-26T09:28:32Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «&amp;#039;&amp;#039;&amp;#039;I²C - Inter-Integrated Circuit&amp;#039;&amp;#039;&amp;#039; (ай-ту-си) - последовательная шина обмена данными между интегральным...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;I²C - Inter-Integrated Circuit&amp;#039;&amp;#039;&amp;#039; (ай-ту-си) - последовательная шина обмена данными между интегральными схемами. &lt;br /&gt;
&lt;br /&gt;
Изобретена и в начале 80-х компанией Philips Semiconductor (теперь NXP), передача данных осуществляется по двум проводам в обе стороны. Ведущий и ведомый могут выполнять как роль приёмника, так и передатчика. Для возможности соединения более двух устройств используются адресация. Опрашивать адреса шины может только ведущий. Адрес последовательно выводится на линию SDA сразу после сигнала &amp;#039;&amp;#039;Start&amp;#039;&amp;#039;. В этой статье речь пойдёт только о 7-ми битной адресации, так же не будет затронута тема нескольких ведущих. На каждом устройстве, поддерживающем I²C обычно обозначены два вывода: SDA и SCL. SDA (serial data) - означает последовательные данные, SCL (serial clock) - последовательное тактирование. Эти выводы являются выводами открытого коллектора или открытого стока, это означает что ведущий и ведомый могут только притягивать электрический потенциал к земле, поэтому на каждой линии должны быть подтягивающие резисторы. Сопротивление резисторов рассчитывается в зависимости от паразитной ёмкости линии.&lt;br /&gt;
&lt;br /&gt;
== Подключение: ==&lt;br /&gt;
Шина поддерживает подключение до 112 устройств (при 7-ми битной адресации) по двум проводам (плюс GND и Vcc), может иметь несколько ведущих и ведомых. При использовании нескольких ведущих, каждый из них должен поддерживать этот режим и уметь определять состояние занятой шины.&lt;br /&gt;
&lt;br /&gt;
=== I²C на Arduino ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Arduino UNO R3/Piranha UNO&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
[[Файл:7b6781f00baf68ac75d1849a356db9d3.png|слева|мини|302x302пкс|&amp;#039;&amp;#039;&amp;#039;Piranha UNO&amp;#039;&amp;#039;&amp;#039;]]&lt;br /&gt;
На Arduino UNO R3/Piranha UNO шина I2C находится на выводах A4, A5. Также в эти выводы продублированы на колодке с цифровыми выводами рядом с кнопкой Reset.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Piranha ULTRA&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
На Piranha ULTRA шина I²C не занимает аналоговые выводы A4, A5 и находится на цифровой колодке рядом с кнопкой Reset, выводы обозначены SDA и SCL.&lt;br /&gt;
[[Файл:F6b66178e50c3605bba0b9607b58c6bd.png|слева|мини|376x376пкс|&amp;#039;&amp;#039;&amp;#039;Piranha ULTRA&amp;#039;&amp;#039;&amp;#039;]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Arduino MEGA R3&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
[[Файл:3aaa4fa7ec41a7558b372bd19ae5b889.png|слева|мини|&amp;#039;&amp;#039;&amp;#039;Arduino MEGA R3&amp;#039;&amp;#039;&amp;#039;]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
На Arduino MEGA R3 шина I²C находится на цифровой колодке на крайних выводах, близких к разъёму USB и на выводах 20, 21. Выводы объединены.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Примеры для Arduino ==&lt;br /&gt;
Работа с шиной с использованием встроенной библиотеки Wire Arduino IDE на примере  Trema-модуля LED Матрицы 8x8 - i2c.&lt;br /&gt;
[[Файл:Код3.jpg|слева|мини|979x979пкс|скетч для ардуино]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В этом примере на матрицу выводится изображение стрелки. Стоит заметить, ко всем нашим модулям написаны библиотеки с высокоуровневым интерфейсом и вовсе не обязательно работать с матрицей на низком уровне. &lt;br /&gt;
&lt;br /&gt;
=== Сигналы и специальные биты шины ===&lt;br /&gt;
В состоянии покоя линии шины находятся на верхнем потенциале (обычно 3,3 В или 5 В, но могут быть и другие напряжения). Бездействие устройства, по умолчанию, воспринимается как логическая 1. Для простоты понимания можно рассмотреть аналогию: Вообразим верхний потенциал как уровень воды, а нижний как дно. Представьте, что Вы на рыбалке - поплавок в состоянии покоя остаётся на поверхности, когда клюёт - идёт ко дну. Так же и в здесь, при обмене данными линии прижимаются в нулевому потенциалу.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Start&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; - сигнал начала обмена данными. Линия тактирования SCL отпущена (логическая 1), ведущий прижимает линию данных SDA (переход из логической 1 в логический 0). После этого обмен данными происходит побайтово. Первый байт - семь бит адреса ведомого и бит направления (запись или чтение). Последующие байты - данные. после этого сигнала шина считается занятой.[[Файл:Image2.png|слева|мини|521x521пкс|Start]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Бит &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Read&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; - Если ведущий желает получить данные, он устанавливает логическую 1 сразу после адреса, информируя ведомого о том, что данные будут считываться (управление линией данных передаётся ведомому). &lt;br /&gt;
&lt;br /&gt;
[[Файл:Image3.png|слева|мини|558x558пкс|Read]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Бит &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Write&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; - Если ведущий желает записать данные, он устанавливает логический 0 сразу после адреса для информирования ведомого о том что данные будут записываться (управление линией данных остаётся у ведущего). &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Stop&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; - сигнал окончания обмена данными. Ведущий прекращает тактирование, линия тактирования SCL отпущена (логическая 1), линия данных SDA переведена ведущим из логического 0 в логическую 1. После этого сигнала шина считается свободной.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Restart&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; - сигнал продолжения обмена данными (используется взамен сигналу &amp;#039;&amp;#039;Stop&amp;#039;&amp;#039; с последующим &amp;#039;&amp;#039;Start&amp;#039;&amp;#039; для продолжения опрашивания шины). Используется в основном при наличии нескольких ведущих на шине, чтобы управление не перешло другому ведущему после сигнала &amp;#039;&amp;#039;Stop&amp;#039;&amp;#039;. Линия тактирования SCL отпущена ведущим, линия данных SDA  переведена ведущим из логической 1 в логический 0. &lt;br /&gt;
&lt;br /&gt;
==== &amp;#039;&amp;#039;&amp;#039;Устанавливаемые ведущим и ведомым&amp;#039;&amp;#039;&amp;#039; ====&lt;br /&gt;
Данные биты может устанавливать как ведущий, так и ведомый. В такой ситуации устанавливающее устройство или модуль (ведущий или ведомый) называют передатчиком, а считывающее устройство - приёмником.&lt;br /&gt;
&lt;br /&gt;
* Бит &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;ACK&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; - (&amp;#039;&amp;#039;сокращ. англ.&amp;#039;&amp;#039; acknowledged - подтверждено) каждый девятый импульс тактирования передатчик (ведущий или ведомый) отпускает линию данных. Если линия была прижата приёмником (логический 0) - принятые данные верны, передача может быть продолжена или закончена. &lt;br /&gt;
* Бит &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;NACK&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; - (&amp;#039;&amp;#039;сокращ. англ.&amp;#039;&amp;#039; not acknowledged - не подтверждено) каждый девятый импульс тактирования передатчик (ведущий или ведомый) отпускает линию данных. Если линия была отпущена принимающим или принимающего нет на шине (логическая 1) - принятые данные неверны, произошла ошибка, передача не может быть продолжена. Обозначается A̅ - заглавная буква A латинского алфавита с чертой сверху.&lt;br /&gt;
&lt;br /&gt;
== Обмен данными ==&lt;br /&gt;
При обмене данными тактированием занимается только ведущий, а ведомый может удерживать линию тактирования только если не успевает за ведущим, так называемое растягивание тактирования (clock-stretching). Не все модули поддерживают удержание. Установка бита на линии данных может происходит в момент, когда линия тактирования прижата, а считывания, когда линия отпущена (подтянута к Vcc), но в большинстве случаев это происходит по фронту волны на линии тактирования. &lt;br /&gt;
[[Файл:Image5.png|слева|мини|554x554пкс|обмен данными]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Пример сигнала на осциллографе: ===&lt;br /&gt;
[[Файл:B275ec61ebe5e62fd303b72f14892f4e.png|слева|мини|616x616пкс|пример сигнала на осциллографе]]&lt;br /&gt;
&lt;br /&gt;
* Канал 1 - тактирование (SCL)&lt;br /&gt;
* Канал 3 - данные (SDA)&lt;br /&gt;
* Линия B1 - декодирование данных осциллографом&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Скорость ==&lt;br /&gt;
Первоначальный стандарт I²C был реализован на скорости 100 кГц. С тех пор появились и другие реализации шины, но большинство устройств работают на этой скорости. Так же известны случаи когда скорость шины специально снижена, чтобы увеличить расстояние передачи и уменьшить чувствительность к помехам. Не все модули могут работать на сниженной скорости.&lt;/div&gt;</summary>
		<author><name>Деревянчук Вадим</name></author>
	</entry>
</feed>