Создавая электронную схему, многие разработчики сталкиваются с необходимостью применения большого количества промежуточных микросхем для согласования, выборки и адресации отдельных ее блоков. Чтобы свести количество вспомогательных микросхем к минимуму, компания Филипс еще в 80-е годы предложила использовать сетевой последовательный интерфейс с двухпроводной двунаправленной шиной I2C, предназначенную специально для управления несколькими микросхемами в рамках одного устройства.
Сегодня одна только компания Филипс выпускает более сотни I2C-совместимых устройств для электронного оборудования самого разного назначения: памяти, систем видеопроцессоров, аналого-цифровых и цифро-аналоговых преобразователей, драйверов дисплеев и т. д.
Шина I2C представляет собой модификацию последовательного протокола обмена данными, способную в обычном «быстром» режиме передавать последовательные 8-битные данные на скоростях от 100 до 400 кбит/с. Процесс обмена данными реализуется здесь всего по двум проводам (не считая общего провода): линия данных SDA и линия синхронизации SCL.
Шина становится двунаправленной благодаря тому, что каскады выходов подключенных к шине устройств имеют открытые коллекторы или стоки, воспроизводя таким образом монтажное «И». В результате шина сводит к минимуму количество связей между микросхемами, на плате остается меньше необходимых контактов и дорожек. Сама плата в итоге получается проще, компактнее и технологичнее в производстве.
Данный протокол позволяет исключить дешифраторы адреса и прочую внешнюю логику согласования. Число микросхем, могущих одновременно работать с шиной I2C, ограничено ее емкостью — максимум 400 пФ.
В I2C-совместимых микросхемах имеется аппаратный алгоритм подавления помех, обеспечивающий сохранность данных даже при сильных помехах. Такие устройства обладают интерфейсом, позволяющим микросхемам связываться между собой даже тогда, когда напряжения их питания различны. На приведенном ниже рисунке можно ознакомиться с принципом соединения нескольких микросхем через одну общую шину.
Каждое из соединенных с шиной устройств имеет свой уникальный адрес, определяется по нему, и, в соответствии с назначением устройства, может работать как приемник либо как передатчик. При передаче данных эти устройства способны быть ведущими (master) или ведомыми (slave). Ведущим выступает то из устройств, которое начинает передачу данных и генерирует синхронизирующие сигналы на линии SCL. Ведомым, по отношению к ведущему, считается при этом устройство-адресат.
В каждый момент действия шины I2C только одно устройство может выступать ведущим, оно формирует на линию SCL сигнал. Ведущий может быть либо ведущим-приемником, либо ведущим-передатчиком.
В принципе шина допускает несколько разных ведущих, накладывая, однако, ограничения на особенности формирования управляющих сигналов и контроля состояния шины; это значит, что несколько ведущих могут начать передачу в один момент, но конфликты такого рода устраняются благодаря арбитражу, то есть способу поведения ведущего при обнаружении факта, что шина занята другим ведущим.
Синхронизация пары устройств обеспечивается тем, что все устройства присоединены к шине формируя монтажное «И». В первоначальном состоянии сигналы SDA и SCL — высокого уровня.
Обмен начинается с генерации ведущим состояния «СТАРТ»: на линии SDA сигнал переходит из высокого — в низкое состояние, пока на линии SCL стабильный высокий уровень. Данную ситуацию все устройства, подключенные к шине, воспринимают как команду к началу обмена.
Каждый ведущий создает индивидуальный сигнал синхронизации на линии SCL, когда передает данные по шине.
Обмен заканчивается формирование ведущим состояния «СТОП»: на линии SDA сигнал изменяется от низкого — к высокому состоянию, пока на линии SCL стабильный высокий уровень.
Источником сигналов «СТАРТ» и «СТОП» всегда выступает ведущий. Как только сигнал «СТАРТ» зафиксирован, это значит что линия занята. Линия свободна когда зафиксирован сигнал «СТОП».
Как только состояние «СТАРТ» объявлено, ведущий переводит линию SCL в состояние низкого уровня, и посылает на линию SDA старший бит первого байта сообщения. Количество байт в одном сообщение не ограничено. Изменения на линии SDA разрешены только при низком уровне сигнала на SCL-линии. Данные действительны и не должны изменяться лишь при высоком состоянии синхроимпульса.
Подтверждение того, что байт от ведущего-передатчика принят ведомым-приемником, осуществляется выставлением специального подтверждающего бита на линию SDA по завершении приема восьмого бита данных.
Итак, отправка 8 бит данных от передатчика — к приемнику завершается формированием дополнительного импульса на линии SCL, когда принимающее устройство выставляет сигнал низкого уровня на линию SDA, показывая что байт целиком им принят.
Подтверждение — неотъемлемая составляющая процесса передачи данных. Ведущий генерирует импульс синхронизации. Передатчик посылает на SDA низкое состояние пока действует подтверждающий синхроимпульс. Пока синхроимпульс пребывает в высоком состоянии, приемник обязан держать SDA в низком состоянии.
Если ведомый-приемник не подтверждает свой адрес, например по причине занятости в текущий момент, линия данных должна удерживаться в высоком состоянии. После этого ведущий может выдать сигнал «СТОП» чтобы прервать отправку.
Если прием осуществляет ведущий-приемник, то он обязан сообщить по завершении передачи ведомому-передатчику — не подтверждением последнего байта. Ведомый передатчик освобождает линию данных для того чтобы ведущий мог выдать сигнал «СТОП» либо повторный сигнал «СТАРТ».
Синхронизация устройств обеспечивается тем, что подключения к линии SCL выполняются по принципу монтажного «И».
Ведущий не имеет права на то, чтобы единолично управлять переходом линии SCL из низкого состояния в высокое. Если ведомому нужно еще время на обработку принятого бита, он может самостоятельно удерживать SCL в низком состоянии до того, пока не будет готов к приему следующего бита данных. Линия SCL в такой ситуации будет пребывать в низком состоянии пока длится самый длинный низкий уровень синхроимпульса.
Устройства с наименее продолжительным низким уровнем будут находиться в состоянии ожидания все то время, пока не завершится длинный период. Когда у всех устройств период низкого уровня синхросигнала закончится, SCL перейдет в состояние высокого уровня.
Читайте также: Шин лайн мороженое бахрома
Все устройства начнут отмечать высокий уровень своих синхросигналов, и первое из устройств, закончивших свой период, первым установит линию SCL в низкое состояние. В итоге продолжительность низкого состояния SCL будет определяться наиболее продолжительным низким состоянием синхроимпульса одного из устройств, а продолжительность высокого — более коротким периодом синхронизации одного из устройств.
Синхронизирующие сигналы могут использоваться приемниками как средство управления передачей данных на битовом и байтовом уровнях.
Если устройство способно на высокой скорости принимать байты, но для этого ему требуется определенное время на процесс сохранения принятого или на подготовку к приему очередного байта, оно может продолжать удерживать SCL в низком состоянии после приема и подтверждения байта, вынужденно удерживая передатчик в состоянии ожидания.
Микроконтроллер без встроенных аппаратных цепей, например, на уровне битов может замедлить частоту синхроимпульсов из-за увеличения длительности их низкого состояния. В результате скорость передачи ведущего будет определяться скоростью медленного устройства.
Каждое подключенное к шине I2C устройство имеет уникальный программный адрес, по которому ведущий обращается к нему, посылая определенную команду. Однотипным микросхемам свойственен селектор адреса, реализуемый либо в виде цифровых входов селектора, либо в аналоговом виде. Адреса разнесены в адресном пространстве подключенных к шине устройств.
Обычный режим предполагает семибитную адресацию. Адресация работает так: после команды «СТАРТ» ведущий посылает первый байт, в котором определяется то, какой именно ведомый требуется для взаимодействия ведущему. Существует и адрес общего вызова, определяющий все устройства шины, на него все устройства (теоретически) отвечают подтверждением, но практически такое встречается редко.
Итак, первые семь битов самого первого байта — это адрес ведомого. Младший бит, восьмой, показывает направление отправки данных. Если там «0», то информация будет записываться ведущим в этого ведомого. Если «1», информация будет считываться ведущим с данного ведомого.
По завершении пересылки ведущим байта с адресом, каждый ведомый сравнивает свой адрес с ним. У кого адрес совпадает — тот ведомый и определяет себя как ведомый-передатчик или ведомый-приемник, в зависимости от значения младшего бита байта с адресом.
Адрес ведомого может включать в себя фиксированную и программируемую части. Нередко большое количество однотипных устройств работают в одной системе, тогда программируемая часть адреса позволяет использовать максимум однотипных устройств на шине. То, сколько бит в адресном байте являются программируемыми, зависит от количества свободных выводов микросхемы.
Иногда достаточно одного вывода с аналоговой установкой диапазона программируемых адресов, например SAA1064 – драйвер светодиодного индикатора, имеющий именно такую реализацию. Потенциал на определенном выводе определяет смещение адресного пространства микросхемы так, чтобы микросхемы одного типа не конфликтовали, работая на одной шине. Все микросхемы с поддержкой шины I2C содержат набор адресов, которые производитель указывает в документации.
Комбинация «11110ХХ» зарезервирована для адресации по 10 битам. Если представить обмен данными от команды «СТАРТ» до команды «СТОП», это будет выглядеть так:
Здесь допустимы простые и комбинированные форматы обмена данными. Комбинированный формат подразумевает то, что между «СТАРТ» и «СТОП» ведущий и ведомый могут выступать как приемниками, так и передатчиками, это например полезно в управлении последовательной памятью.
Пусть первый байт данных передает адрес в памяти. Тогда при повторе команды «СТАРТ» и оглашении адреса ведомого, будут работать данные из памяти. Решения об авто-инкременте или декременте адреса, к которому был осуществлен предыдущий доступ, принимает разработчик устройства, предварительно изучив документацию на микросхему. Так или иначе, все устройства по получении команды «СТАРТ» должны сбрасывать логику и готовиться к тому, что сейчас будет назван адрес.
Если Вам понравилась эта статья, поделитесь ссылкой на неё в социальных сетях. Это сильно поможет развитию нашего сайта!
- Шины и протоколы в промышленной автоматике: как всё это работает
- Нижний уровень или полевая шина — то, с чего всё начинается
- Верхний уровень: от гирлянды до целой рабочей станции
- «Древние» протоколы передачи данных: Modbus и HART
- Второе поколение протоколов или не совсем промышленные шины ISA, PCI(e) и VME
- Как работают современные промышленные шины и протоколы
- 📸 Видео
Видео:Лекция 308. Шина I2CСкачать
Шины и протоколы в промышленной автоматике: как всё это работает
Наверняка многие и вас знают или даже видели, каким образом управляются большие автоматизированные объекты, например, атомная станция или завод со множеством технологических линий: основное действо часто происходит в большой комнате, с кучей экранов, лампочек и пультов. Это комплекс управления обычно называется ГЩУ — главный щит управления для контроля за производственным объектом.
Наверняка вам было интересно, как всё это работает с точки зрения аппаратной и программной части, и какие там используются протоколы передачи данных. В этой статье мы разберемся, как различные данные попадают на ГЩУ, как подаются команды на оборудование, и что вообще нужно, чтобы управлять компрессорной станцией, установкой производства пропана, линией сборки автомобиля или даже канализационно-насосной установкой.
Видео:Введение в шину I2CСкачать
Нижний уровень или полевая шина — то, с чего всё начинается
Этот неясный для непосвященных набор слов используется, когда нужно описать средства общения устройств управления с подведомственным оборудованием, например, модулями ввода-вывода или измерительными устройствами.
Под устройствами управления мы подразумеваем ПЛК, т.е. программируемые логические контроллеры (англ. PLC), или ПКА, т.е. программируемые контроллеры автоматизации (англ. PAC). Между ПЛК и ПКА есть некоторые различия, однако, в рамках данной статьи они не существенны, поэтому для упрощения будем использовать общий термин «контроллер».
В русскоязычном сообществе асушников канал общения между контроллером и другими устройствами обычно называют «полевой шиной», потому что он отвечают за передачу данных, которые приходят с «поля».
«Поле» — это глубокий профессиональный термин, обозначающий тот факт, что некое оборудование (например, датчики или исполнительные механизмы), с которым взаимодействует контроллер, находятся где-то далеко-далеко, на улице, в полях, под покровом ночи. И неважно, что датчик может быть расположен в полуметре от контроллера и измерять, допустим, температуру в шкафу автоматики, все равно считается, что он находится «в поле». Чаще всего сигналы с датчиков, приходящие в модули ввода-вывода все-таки преодолевают расстояния от десятков до сотен метров (а иногда и больше), собирая информацию с удаленных площадок или оборудования. Собственно, поэтому шина обмена, по которой контроллер получает значения с этих самых датчиков, называется обычно полевой шиной или реже шиной нижнего уровня или промышленной шиной.
Читайте также: Nissan note 2008 размер шин
Тут следует отметить, что в Европе и США полевым уровнем считаются только сами устройства, расположенные «в поле», но не среда передачи данных. В российских реалиях термин «полевая шина» или «шина нижнего уровня», пожалуй, слегка размыт и обозначает способ передачи данных от модулей ввода-вывода к контроллеру и наоборот.
Общая схема автоматизации промышленного объекта
Итак, электрический сигнал от датчика проходит некое расстояние по кабельным линиям (чаще по обычному медному кабелю с некоторым количеством жил), к которым подсоединяются несколько датчиков. Затем сигнал попадает в модуль обработки (модуль ввода-вывода), там он преобразуется в понятный контроллеру цифровой язык. Далее этот сигнал по полевой шине попадает непосредственно в контроллер, где и обрабатывается уже окончательно. На основе таких сигналов и строится логика работы самого контроллера. Существует и обратный путь: от контроллера команда управления по полевой шине попадает в модуль вывода, где преобразуется из цифрового вида в аналоговый и поступает по кабельным линиям к исполнительным механизмам и различным устройствам (на схеме выше не указаны).
Видео:I2C интерфейсСкачать
Верхний уровень: от гирлянды до целой рабочей станции
Верхним уровнем называют все то, к чему может прикасаться обычный смертный оператор, который управляет технологическим процессом. В простейшем случае верхний уровень представляет собой набор лампочек и кнопочек. Лампочки сигнализируют оператору о неких происходящих событиях в системе, кнопочки служат для подачи команд контроллеру. Такую систему часто называют «гирлянда» или «ёлка», потому что выглядит очень похоже (как можно убедиться по фотографии в начале статьи).
Если оператору повезло больше, то в качестве верхнего уровня ему достанется панель оператора — некий плоскопанельный компьютер, который тем или иным образом получает данные для отображения от контроллера и выводит их на экран. Такая панель обычно монтируется на сам шкаф автоматики, поэтому взаимодействовать с ней приходится, как правило, стоя, что вызывает неудобства, плюс качество и размер изображения — если это малоформатная панелm — оставляет желать лучшего.
Ну и, наконец, аттракцион невиданной щедрости — рабочая станция (а то и несколько дублирующих), представляющая собой обычный персональный компьютер.
Для наглядного отображения информации на рабочих станциях и плоскопанельных компьютерах используют специализированное программное обеспечение — SCADA-системы. На человеческий язык SCADA переводится как система диспетчерского управления и сбора данных. Она включает в себя множество компонентов, таких как человеко-машинный интерфейс, визуализирующий технологические процессы, систему управления этими процессами, систему архивирования параметров и ведение журнала событий, систему управления тревогами и т.д. Всё это дает оператору полноценную картину происходящих на производстве процессов, а также возможность ими управлять и оперативно реагировать на отклонения от технологического процесса.
Оборудование верхнего уровня обязано взаимодействовать неким образом с контроллером (иначе зачем оно нужно?). Для такого взаимодействия используются протоколы верхнего уровня и некая технология передачи, например, Ethernet или UART. В случае с «ёлкой» таких изощрений, конечно, не нужно, лампочки зажигаются с использованием обычных физических линий, никаких мудреных интерфейсов и протоколов там нет.
В общем-то, этот верхний уровень менее интересен, нежели полевая шина, поскольку этого верхнего уровня может вообще не быть (из серии нечего там смотреть оператору, контроллер сам разберется, что и как нужно делать).
Видео:STM32. CMSIS. Урок#06: I2C. Теория. Сканер I2C адресов. Отправка и прием данных. MemWrite, MemRead.Скачать
«Древние» протоколы передачи данных: Modbus и HART
Мало кто знает, но на седьмой день создания мира Бог не отдыхал, а создавал Modbus. Наравне с HART-протоколом, Modbus, пожалуй, самый старый промышленный протокол передачи данных, он появился аж в 1979 году.
В качестве среды для передачи изначально использовался последовательный интерфейс, затем Modbus реализовали поверх TCP/IP. Это синхронный протокол по схеме «мастер-слейв» (главный-подчиненный), в котором используется принцип «запрос-ответ». Протокол довольно тяжеловесный и медленный, скорость обмена зависит от характеристик приемника и передатчика, но обычно счет идет чуть ли не на сотни миллисекунд, особенно в реализации через последовательный интерфейс.
Более того, регистр передачи данных Modbus является 16-битным, что сразу же накладывает ограничения на передачу типов real и double. Они передаются либо по частям, либо с потерей точности. Хотя Modbus до сих пор повсеместно используется в случаях, когда не нужна высокая скорость обмена и потеря передаваемых данных не критична. Многие производители различных устройств любят расширять протокол Modbus своим исключительным и очень оригинальным образом, добавляя нестандартные функции. Поэтому данный протокол имеет множество мутаций и отклонений от нормы, но все же до сих пор успешно живет в современном мире.
Протокол HART тоже существует с восьмидесятых годов, это промышленный протокол обмена поверх двухпроводной линии токовой петли, в которую напрямую включаются датчики 4-20 мА и другие приборы с поддержкой протокола HART.
Для коммутации линий HART используются специальные устройства, так называемые HART-модемы. Также существуют преобразователи, которые на выходе предоставляют пользователю уже, допустим, протокол Modbus.
Примечателен HART, пожалуй, тем, что помимо аналоговых сигналов датчиков 4-20 мА в цепи передается и цифровой сигнал самого протокола, это позволяет соединить цифровую и аналоговую часть в одной кабельной линии. Современные HART-модемы могут подключаться в USB-порт контроллера, соединяться по Bluetooth, либо же старинным способом через последовательный порт. Десяток лет назад по аналогии с Wi-Fi появился и беспроводной стандарт WirelessHART, работающий в диапазоне ISM.
Читайте также: Зимние шипованные шины 2020г
Видео:Шина I2C.Скачать
Второе поколение протоколов или не совсем промышленные шины ISA, PCI(e) и VME
На смену протоколам Modbus и HART пришли не совсем промышленные шины, такие как ISA (MicroPC, PC/104) или PCI/PCIe (CompactPCI, CompactPCI Serial, StacPC), а также VME.
Настала эра вычислителей, имеющих в своем распоряжении универсальную шину передачи данных, куда можно подключать различные платы (модули) для обработки некоего унифицированного сигнала. Как правило, в этом случае процессорный модуль (вычислитель) вставляется в так называемый каркас, который обеспечивает взаимодействие по шине с другими устройствами. Каркас, или, как его любят называть трушные автоматизаторы, «крейт», дополняется необходимыми платами ввода-вывода: аналоговыми, дискретными, интерфейсными и т.д., либо все это слепливается в виде бутерброда без каркаса — одна плата над другой. После чего это многообразие на шине (ISA, PCI, etc.) обменивается данными с процессорным модулем, который таким образом получает информацию с датчиков и реализовывает некую логику.
Контроллер и модули ввода-вывода в каркасе PXI на шине PCI. Источник: National Instruments Corporation
Все бы ничего с этими шинами ISA, PCI(e) и VME, особенно для тех времен: и скорость обмена не огорчает, и расположены компоненты системы в едином каркасе, компактно и удобно, горячей замены плат ввода-вывода может и не быть, но пока еще и не очень хочется.
Но есть ложка дегтя, и не одна. Распределенную систему довольно сложно построить в такой конфигурации, шина обмена локальная, нужно что-то придумывать для обмена данными с другими подчиненными или равноправными узлами, тот же Modbus поверх TCP/IP или какой другой протокол, в общем, удобств маловато. Ну и вторая не очень приятная штука: платы ввода-вывода обычно ждут на вход какой-то унифицированный сигнал, и гальванической развязки с полевым оборудованием у них нет, поэтому нужно городить огород из различных модулей преобразования и промежуточной схемотехники, что сильно усложняет элементную базу.
Промежуточные модули преобразования сигнала с гальванической развязкой. Источник: DataForth Corporation
«А что с протоколом обмена по промышленной шине?» — спросите вы. А ничего. Нет его в такой реализации. По кабельным линиям сигнал попадает с датчиков на преобразователи сигналов, преобразователи выдают напряжение на дискретную или аналоговую плату ввода-вывода, а данные с платы уже читаются через порты ввода/вывода, средствами ОС. И никаких специализированных протоколов.
Видео:Передача данных - шина SPIСкачать
Как работают современные промышленные шины и протоколы
А что теперь? К сегодняшнему дню классическая идеология построения автоматизированных систем немного поменялась. Роль сыграли множество факторов, начиная с того, что автоматизировать тоже должно быть удобно, и заканчивая тенденцией на распределенные автоматизированные системы с удаленными друг от друга узлами.
Пожалуй, можно сказать, что основных концепций построения систем автоматизации на сегодняшний день две: локализованные и распределенные автоматизированные системы.
В случае с локализованными системами, где сбор данных и управление централизовано в одном конкретном месте, востребована концепция некоего набора модулей ввода-вывода, соединенных между собой общей быстрой шиной, включая контроллер со своим протоколом обмена. При этом, как правило, модули ввода-вывода включают в себя и преобразователь сигнала и гальваническую развязку (хотя, разумеется, не всегда). То есть конечному потребителю достаточно понять, какие типы датчиков и механизмов будут присутствовать в автоматизированной системе, сосчитать количество требуемых модулей ввода-вывода для разных типов сигналов и соединить их в одну общую линейку с контроллером. В этом случае, как правило, каждый производитель использует свой любимый протокол обмена между модулями ввода-вывода и контроллером, и вариантов тут может быть масса.
В случае распределенных систем справедливо все, что сказано в отношении локализованных систем, кроме этого, важно, чтобы отдельные компоненты, например, набор модулей ввода-вывода плюс устройство сбора и передачи информации — не очень умный контроллер, который стоит где-нибудь в будке в поле, рядом с краном, который перекрывает нефть, — могли взаимодействовать с такими же узлами и с главным контроллером на большом расстоянии с эффективной скоростью обмена.
Как разработчики выбирают протокол для своего проекта? Все современные протоколы обмена обеспечивают довольно высокое быстродействие, поэтому зачастую выбор того или иного производителя обусловлен не скоростью обмена по этой самой промышленной шине. Не так важна и реализация самого протокола, потому что, с точки зрения разработчика системы, это все равно будет черный ящик, который обеспечивает некую внутреннюю структуру обмена и не рассчитан на вмешательство извне. Чаще всего обращают внимание на практические характеристики: производительность вычислителя, удобство применения концепции производителя к поставленной задаче, наличие нужных типов модулей ввода-вывода, возможность горячей замены модулей без разрыва шины и т.д.
Популярные поставщики оборудования предлагают собственные реализации промышленных протоколов: например, всем известная компания Siemens разрабатывает свою серию протоколов Profinet и Profibus, компании B&R — протокол Powerlink, Rockwell Automation — протокол EtherNet/IP. Отечественное решение в этом списке примеров: версия протокола FBUS от российской компании Fastwel.
Есть и более универсальные решения, которые не привязаны к конкретному производителю, такие как EtherCAT и CAN. Мы подробно разберем эти протоколы в продолжении статьи и разберемся, какие из них лучше подходят для конкретных применений: автомобильной и аэрокосмической промышленности, производства электроники, систем позиционирования и робототехники. Оставайтесь на связи!
- Свежие записи
- Нужно ли менять пружины при замене амортизаторов
- Скрипят амортизаторы на машине что делать
- Из чего состоит стойка амортизатора передняя
- Чем стянуть пружину амортизатора без стяжек
- Для чего нужны амортизаторы в автомобиле
📸 Видео
Подключение нескольких устройств, датчиков по I2C (АйТуСи) шинеСкачать
Урок 24. Узнаём адреса устройств на шине I2CСкачать
Шина данных i2c - декодируем/синхронизируем с помощью осциллографа Lecroy!Скачать
03. Основы устройства компьютера. Память и шина. [Универсальный программист]Скачать
Урок 9. Адреса модулей на шине I2C. Arduino (что такое I2C, адресация, как изменить адрес модуля)Скачать
25 Шина I2CСкачать
Лекция 17: I2CСкачать
Лекция "Интерфейсы (часть II). I2C. 1-Wire"Скачать
Логический анализатор шины i2cСкачать
Установщик адресов Flash-i2cСкачать
Шина I2CСкачать
Применение конечных автоматов (передача данных по i2c)Скачать
I2C. Краткая теория с примером. STM32 CubeIDE.Скачать
Сканер I2C шиныСкачать