Огромное спасибо. Искал уроки по I2C что бы разобраться с расширителем портов и тут как раз кстати пришёлся ваш урок
@SibMan545 жыл бұрын
Огромное вам спасибо за вашу работу!
@VladimirMedintsev5 жыл бұрын
Добро пожаловать.
@MrMultiwas2 жыл бұрын
Спасибо за Ваши видео! Очень приятная подача, все предельно ясно. Жалко не преподаете, к такому мастеру бы да в подмастерье) 👍
@serjkp5 жыл бұрын
Все ждал рассказа как нужно бороться с зависаниями шины. Жаль, что не упомянули. Важный аспект.
@VladimirMedintsev5 жыл бұрын
Это как-нибудь на будущее. Кстати, как показывает практика, наиболее надежный способ избавиться от боев на шине - прокладывать ее подальше от помех и не превышать допустимую емкость шины.
@CoBaldr5 жыл бұрын
Если вы про 103й камень то прочитайте errata
@VladimirMedintsev5 жыл бұрын
Нет, я не только про 103й (эту серию я в принципе не использую). Просто пару лет назад мы ради интереса устраивали тест I2C на помехи и подвисания. И вот самое критичное для шины были именно помехи, а во вторую очередь емкость линии и как ее следствие заваливание фронтов, что часто служит причиной подвисания.
@alexandrsemenkoff69355 жыл бұрын
На физическом уровне по совету от Владимира, по программной части в критических решениях - либо watchdog, либо отказаться от i2c и перейти на обмен данных по дифференциальной паре
@xbevice5 жыл бұрын
@@alexandrsemenkoff6935 зачем watchdog, когда можно не использовать блокирующие вызовы?
@МихаилАаа-д3ю5 жыл бұрын
Спасибо, что на адресации заострили внимание. Я тоже на это нарвался. Пришлось даже применять сканер I2C для определения адреса. К сожалению, о комментарии разработчиков я не догадался.
@VladimirMedintsev5 жыл бұрын
Их желательно читать т.к. очень часто встречается расхождение со здравым смыслом и официальной документацией. Есть примеры когда от версии к версии HAL изменения настолько глобальные, что хоть заново пиши.
@ArthurIslamRU5 жыл бұрын
Дай Бог вам Здоровья и Понимания! Очень нравятся Ваши ролики!
@VladimirMedintsev5 жыл бұрын
Большое спасибо.
@НикитаЧернов-р1ц4 жыл бұрын
Полезный материал, спасибо!
@namename2031 Жыл бұрын
>Рассказывается об одном из самых популярных интерфейсов подключения периферийных устройств к процессорам. 2:36 Я димаю что вы знакомы с адрессацией I2C. Как же мне "нравятся" такие "уроки".
@VladimirMedintsev Жыл бұрын
Рад что вам понравилось. А где сказано что это урок?
@namename2031 Жыл бұрын
9:31 Это величина p Data буфера в байтах. Величина Mem Add r e s s в байтах (Mem Add Size) была указана ранее. Зачем эти параметры совмещать. А так как вы описали делается в функции HAL_I2C_Master_Transmit
@Insideus27865 жыл бұрын
Хороший ролик! На мой взгляд I2C- один из самых неудачных интерфейсов. Особенно веселят I2C датчики с одним выводом для выбора адреса, в результате чего нужно городить огород, чтобы повесить на шину больше 3 штук.
@VladimirMedintsev5 жыл бұрын
Категорически СОГЛАСЕН!
@НиколайПр-з3в5 жыл бұрын
Отличный интерфейс - я на нем собрался домашнюю сигнализацию делать - сеть до 100 метров и датчиков 20 различных. CAN в топку хоть и микроконтроллеры купил для CAN.
@VladimirMedintsev5 жыл бұрын
Face palm...
@eugenevetrov50695 жыл бұрын
Интересно, Вы конкретное ограничение датчика за копейки приравняли к убогости интерфейса? Владимиру - от Вас такого комментария не ожидал. Вот это действительно фейспалм!
@VladimirMedintsev5 жыл бұрын
@@eugenevetrov5069 Вы не ожидали что я соглашусь с фразой "На мой взгляд I2C- один из самых неудачных интерфейсов"? А почему с ней не согласится? Интерфейс 1992 года. Да у него были модификации и последняя датируется аж 2014-м годом, но основных косяков это не исправило. Интерфейс жутко боится помех ну и всего прочего. Я пару лет назад потратил кучу времени гоняя его в лаборатории на переносимость сбоев. Так вот ее просто нет. Более того, в словах Insideus2786 смысла достаточно много, дело не в кривизне реализации интерфейса в датчике. Зачем тратить драгоценное время передавая столько бит адреса если больше 3-х ну ладно 4-х устройств на шину не повесить из-за ограничений по максимальной подключаемой емкости? Т.е. скорость и так низкая, но нет мы 30-50% времени потратим на обмен ничего не значащими адресами. Потеря времени. А с датчиком Insideus2786 просто привел наболевший пример.
@АндрейИ-ф3л5 жыл бұрын
Спасибо! Классный у вас анализатор. Я пользуюсь Saleae Logic, там интерфейс не такой нарядный, приходится всматриваться в серые буквы, цифры, меандры.
@isorport324 жыл бұрын
Все операции с константами выполняет препроцессор, что мешает в обращении к функции записать правильный_адрес
@solderman58785 жыл бұрын
Спасибо.
@VladimirMedintsev5 жыл бұрын
Очень долго рассказывать все функции. В двух словах контролирует состояние входов и умеет реагировать на изменение состояния замыкая и размыкая реле. При этом отправляет СМС на заданные телефоны. Может быть использован в умных домах а также в любых устройствах автоматизации. Полная документация по ссылке - yadi.sk/i/988poqgMQoTWHw
@zateeman5 жыл бұрын
Спасибо огромное за ваш труд, материал фантастический! Учусь работать с STM32, перевариваю кучу информации из сети, но ваши ролики оказываются максимально полезными. Продолжайте это дело! С интерфейсом I2C ковыряюсь уже неделю, никак не получается адекватно считать данные из регистров датчика приближения apds9930: запрашиваю Mem_Read-ом данные из регистра 0х18, в переменную записывается тоже 0х18, при том, что должно быть значение приближённости, не подскажете куда копать? Заранее спасибо. Ещё, хотелось бы урок по функциям I2C_Master_Receive/Transmit, подробнее разобрать способ формирования буфера для данных и алгоритм работ самих функций, ибо чс этим возникают трудности...
@ukrfoil3 жыл бұрын
Как данный расширитель портов на i2c показал себя в работе по прошествии столько времени, были зависания и т.п. от щелкающих рядом реле или контакторов в распред.щитке? Мои исследования с mcp23017 показали что иногда он способен подвесить i2c линию. приходилось его сбрасывать ..что не есть хорошо для ответственных устройств, а мог неделями работать без зависания... опторазвязки ,кондеры по питанию, короткие i2c линии и т.п присутствуют и не использование портов A7,B7 на ввод согласно errata..
@VladimirMedintsev3 жыл бұрын
К данному расширителю есть только два вопроса: его странная доступность и цена. По мне он чудовищно дорогой. Линия i2c не длиннее 13 см и не влияет. Питание стабильное. Сам прибор стоит обособленно от больших пускателей. Но при партии и 2.5 года жалоб пока не было. Но что-то видимо я параноить сейчас начну после вашего сообщения... Проверку сделаю.
@sergeyvlasov2073 жыл бұрын
почему постоянно нужно помнить? можно например так: #define Addr (0x20
@sergeyvlasov2073 жыл бұрын
ну или так #define I2C_ADDR(x) (x
@gordonfreeman18943 жыл бұрын
Скажите пожалуйста, а HAL обрабатывает все эвенты как в "Transfer sequence diagram" таблицах из RM0008 (стр. 756, 757, 760 и 761)? Я лично пробовал на LL в своё время, так там приличная функция получалась...
@CoBaldr5 жыл бұрын
За это нужно не i2c не любить а hal ;)
@VladimirMedintsev5 жыл бұрын
Ох, если бы все проблемы заканчивались только на HAL, то уже свой написал бы давно.
@CoBaldr5 жыл бұрын
@@VladimirMedintsev ну не все конечно, куда же без этого, но с адресами более прозрачно
@КонстантинГордецкий3 жыл бұрын
TCA9535 имеет стоимость как у МК с Cortex-M0 и даже дороже
@Владимир-т2ж3 жыл бұрын
Добрый вечер! Подскажите Владимир, с чего начать разбираться, если есть интерес к программированию микроконтройлеров и радиотехники. Но не знаю с чего начать изучение? Это для меня как большой снежный ком.
@VladimirMedintsev3 жыл бұрын
На самом деле на канале есть целый ряд роликов рассказывающих о том, с чего начинать. Вот один - kzbin.info/www/bejne/lYrJkqyGeLJ_g7M Вот другой - kzbin.info/www/bejne/rIu5qKljesp7oas в них все детально расписано.
@alexanderurezchenko64465 жыл бұрын
Подскажите, а зачем в контроллере (за иcключением серии Cortex-m0) более одного порта i2c. Зачем в реальной жизни может понадобиться, если не подключать более 255 устройств сразу? По SPI та же картина.
@VladimirMedintsev5 жыл бұрын
Про i2c ваши вопросы отпадут когда вы захотите подключить несколько однотипных устройств. Ну к примеру датчики температуры. У вас возникнет проблема с адресацией. Кроме того есть проблема с емкостью имеется ввиду емкость электрическая и при 300 пф шина начинает сбоить... А вот ваша фраза - "по SPI та же картина" пугает. Там что адресная шина? Нет там адресации. Там выбор идет при помощи линии CS. Ну и надо понимать что и I2C и SPI это последовательные шины. Они бывают заняты. Например на дисплей вы одну шину SPI используете , а для памяти - другой. К интерфейсу I2C это тоже относится
@alexanderurezchenko64465 жыл бұрын
В предложении "По SPI та же картина" я хотел сказать, что в том же 103м контроллере (а тем более в старших моделях) можно сделать два и более портов SPI. И я не смог представить ситуации, в которой мне будет недостаточно одного порта.
@alexanderurezchenko64465 жыл бұрын
Правильно ли я понял Вашу мысль, что теоретически, может возникнуть потребность одновременно выводить информацию на дисплей и "общаться" с памятью
@VladimirMedintsev5 жыл бұрын
Такая потребность возникает не теоретически а постоянно.
@alexanderurezchenko64465 жыл бұрын
Владимир, спасибо за разъяснение. В этом случае, какое с Вашей точки зрения максимальное количество устройств целесообразно вешать на одну I2c- шину? Например, в своем проекте я хотел бы выстроить по цепочке на одной шине 5-6 внешних модулей: пара входных модулей, пара выходных + LCD. Есть ли вариант, что такая схема будет работать? Все модули спроектированы на PCF 8574 либо аналогах
@ЮрийМаланчук-е4к2 жыл бұрын
Спасибо за урок - хорошо объясняете !!))По вашему уроку надеюсь сделать библиатеку на INA3221 (нет в наличии). К стате в while запускал функции (прочитать байт) и в дебаге считываю переменную как инвертировано(принял 16 бит переменую ид устройство- должно по даташиту hex5449 а мне считывается dec18772 в hex 4954) как нормальную переменную получить ? Может кто то подскажет -а может это не важно.. логический анализатором прочел как нужно. спасибо)
@petrsidorov34895 жыл бұрын
Спасибо! Я пока только учусь - за сим простите за может быть глупые или не по теме вопросы. Скажите при помощи чего Вы смотрите тайминг шины?
@VladimirMedintsev5 жыл бұрын
Это просто замечательно что учитесь. То устройство, что вас заинтересовало это самый примитивный и дешевый логический анализатор от www.dreamsourcelab.com
@petrsidorov34895 жыл бұрын
Владимир, спасибо!
@Dmitrne5 жыл бұрын
интересное видео, а платку вы сами разводили под это дело?
@VladimirMedintsev5 жыл бұрын
Разумеется.
@Dmitrne5 жыл бұрын
@@VladimirMedintsev хорошо получилось
@VladimirMedintsev5 жыл бұрын
Все платы и электронные устройства показываемые на этом канале изготовлены самостоятельно.
@alexanderurezchenko64465 жыл бұрын
Владимир, а что заставило Вас использовать в проекте расширитель портов? На сколько я понимаю, в 303м контроллере, который Вы применяете достаточно входов/выходов? Или же Вы количество проводов между платами минимизировали?
@VladimirMedintsev5 жыл бұрын
Да, это сделано только для оптимизации соединений между платами. Это позволило сэкономить 10 проводников, которые надо изготовить припаять, уложить. Кроме того мы стараемся делать модули универсальными. Т.е. при желании эту плату можно заменить.
@alexanderurezchenko64465 жыл бұрын
Владимир, спасибо за ответ. Еще вопрос: В одном из комментариев Вы согласились, что у I2c есть неустранимые проблемы с надежностью (наводки, зависания и т.д.). Наблюдались ли какие либо сбои в работе данного устройства? Или я не правильно Вас понял пол надежность?
@VladimirMedintsev5 жыл бұрын
Нет, вы поняли абсолютно не правильно. Шина i2c очень хорошо работает в пределах устройства. Но если попытаться использовать эту шину (как предлагал кто-то из комментаторов) для умного дома т.е. на большие дистанции, то возникает проблема. В данном устройстве шина работает идеально и проблем не наблюдается.
@alexanderurezchenko64465 жыл бұрын
Ага... Теперь все стало ясно. Еще вопрос....В одном из видео (не помню точно, где) Вы упоминали некий "любимый" магазин на Али, где покупаете разные детали. Если не ошибаюсь, в этом видео речь шла о кнопках. Не поделитесь ссылкой на магазин?
@MrLedball4 жыл бұрын
Вот только цена этого расширителя великовата. есть же решения из логических микросхем. 74165 - для входов, например. Дешево и сердито.
@Βιτάλης-χ1π4 жыл бұрын
Посоветуйте пожалуйста на многих устройствах где необходимо i2c соединить кабелем и где рядом мощные коммутационные помехи временами зависает микроконтроллер точно Иза i2c. сталкивались вы с зависанием i2c ? аналоговый фильтр на максимум ,пользуюсь watch dog ,но это временно решение думал раз в секунду делать переинициализацию i2c ,в моем проекте опасно зависание микроконтроллера связанно с транспортом
@VladimirMedintsev4 жыл бұрын
Интерфейс I2C не предназначен для соединения нескольких устройств. А уж тем более в транспорте. Если вы используете феритовое колечко на линии, то это немного улучшит ситуацию. А вообще правильнее использовать более подходящие интерфейсы. Например, CAN.
@Βιτάλης-χ1π4 жыл бұрын
Vladimir Medintsev там линия 40 см, с can и madbas сложнее и дороже схема ,я всё-таки грешу на hal,на avr линии по 20 метров были и ничего ну потерялись данные следующие пришли контроллер не зацыклился, в hal_i2c.c в функции hal_i2c_mem_read есть цыкл do while может там зацыкливание ?
@Βιτάλης-χ1π4 жыл бұрын
В общем решил эти проблемы ,добавил в мейне переинициализацию постоянно i2c и в функциях hal где есть цыклы do while добавил выход по количеству проходов , теперь. Как бы не замыкал наводил помехи i2c востанавливатся , по хорошему надо делать обработчик ошибок ,но это для меня ещё темный лес , может будет у вас ролик про обработки ошибок это не только i2c но также другие интерфейсы?
@dazzershell3 жыл бұрын
@@Βιτάλης-χ1π может зависнуть не только контроллер и2с, бывает что какое-то слейв устройство на шине после обрыва приема держит линию. От этого помогает передача 9 старт-команд, тогда все кто держал шину занятой ее освободят. Для этого ногами МК управлять приходится напрямую, а потом опять вернуть их под контроль модуля. У F103 модуль I2C сам по себе очень сырой, чтобы нормально работал, обработчик прерываний должен быть с максимальным приоритетом, с кучей неочевидных условий. Такой же модуль стоит на более мощном F407. У более новых моделей все нормально сделано, но тоже приходится разбираться.
@Βιτάλης-χ1π3 жыл бұрын
@@dazzershell спасибо за информацию ,я сейчас использую расширитель портов i2c 6 микросхем, развёл питание уже с ключем по питанию, а оказывается что можно было не так извращаться я правда smsis драйвер не hal ,на работе секта smsis ,но по опыту hal нормально работает если не скоростные задачи и нет времени на возню с тем как написать свой драйвер переферии,
@zhmenyaBSD4 жыл бұрын
Владимир, добрый день. Подскажите был ли у Вас опыт работы с ds2482?
@VladimirMedintsev4 жыл бұрын
А вы с какой целью интересуетесь?
@zhmenyaBSD4 жыл бұрын
@@VladimirMedintsev Ни как не выходит "заставит" её работать, из документации не понятно как правильно обращаться с её регистрами. Вдруг у Вас будет интерес с её "освоением".
@VladimirMedintsev4 жыл бұрын
@@zhmenyaBSD Да посмотрел я ее. Нет там ничего сложного. Вроде все в документации описано. Она единственное это перебирает регистры друг за другом. А так ничего необычного. Видео по этой микросхеме точно не будет. Она старая, кроме вас уж точно никому не интересная. Ее можно заменить одним транзистором и 3-мя резисторами и прекрасно в схеме обойтись без нее.
@zhmenyaBSD4 жыл бұрын
@@VladimirMedintsev Даже с сотней датчиков температуры? А хватит ли ресурсов МК (103c8t6) для обработки такого количества датчиков?
@VladimirMedintsev4 жыл бұрын
Т.е. вот с микросхемой этой у вас ресурсов микроконтроллера хватит, а без нее вы сомневаетесь? Ну а если серьезно, то простое гугление дает массу библиотек на эту микросхему, возьмите ардуиновскую, прочитайте и перепишите ее под stm. Есть и куча обсуждений касательно stm. Так что ничего необычного и сложного там нету.
@romaVeber5 жыл бұрын
есть протокол чуть интереснее i2c, есть интерфейс 1-wire (даже некоторые устройства заточены так что-бы брать питание от шины данных)
@VladimirMedintsev5 жыл бұрын
А чем он интереснее? Мне уже несколько лет кажется что 1wire относится к вымирающим интерфейсам которые никто не использует. Домофоны не в счет.
@romaVeber5 жыл бұрын
@@VladimirMedintsev , единственный годный пример это ds18b20
@VladimirMedintsev5 жыл бұрын
Стоп, вы же говорили что он интереснее...
@romaVeber5 жыл бұрын
@@VladimirMedintsev, интересный что некоторые расширители портов запитываются шины, тоесть нужна только нога данных и земля (но увы из-за малой популярности очень дорогие)