Тёмный
No video :(

STM32. Урок 22. I2C. Part 2. Практика. I2C переходник на LCD1602 

NR.electronics
Подписаться 19 тыс.
Просмотров 7 тыс.
50% 1

Продолжаем серию популярных видео по изучению и практике применения STM32. Сегодня закрепляем использование интерфейса I2C на примере переходника I2C для дисплея LCD1602 на плате BlackPill.
Исходник видео:
cloud.mail.ru/...

Опубликовано:

 

22 авг 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 50   
@Embedded_Developer
@Embedded_Developer 4 года назад
В топ! Спасибо за урок. :-)
@NRelectronics
@NRelectronics 4 года назад
Пожалуйста, не забывайте ставить лайк)
@ajdarseidzade688
@ajdarseidzade688 4 года назад
Хорошее видео и урок. Не использую, но решил написать про это. И еще вспомнил подробности про свой dupont разъем и тогда там, в той теме, напишу.
@NRelectronics
@NRelectronics 4 года назад
Спасибо, стараюсь. Ок, делитесь конечно опытом. Будет для всех полезно.
@user-qw6ho3kp6s
@user-qw6ho3kp6s 4 года назад
Классная серия! Ещё бы тему мультимастера раскрыть по подробнее.
@NRelectronics
@NRelectronics 4 года назад
Спасибо. Пока не планирую мультимастерный режим
@user-xh8ji8hu2h
@user-xh8ji8hu2h 4 года назад
Спасибо за труды, но почему во всех уроках по I2C показывают работу только в режиме тупого ожидания? Почему не использовать прерывания? Это же намного эффективнее. И к тому же никто никогда не показывает работу в слэйве, только мастер ну а обработку ошибок вообще никто не затрагивает, а ведь эта шина крайне капризная. По сравнению с АВР здесь крайне глючный блок I2C. Столкнулся с проблемой как раз обработки ошибок при работе одновременно слэйв-мастер. Модуль часто зависает если ловит потерю приоритета или BUS FAIL Если интересно распишу подробнее
@NRelectronics
@NRelectronics 4 года назад
Пожалуйста. Но у меня нет цели делать прошивку с наименьшей нагруженностью на мк, показываю именно работу прошивки дисплея. Никто не спорит с эффективностью прерывания и дма. Это каждый сможет прикрутить. Контроллер мастер для дисплея, это норм. Интерфейс глюченный на F1. Тут лучше дело обстоит. Поделитесь опытом, только по подробнее.
@user-xh8ji8hu2h
@user-xh8ji8hu2h 4 года назад
@@NRelectronics Да, забыл написать что это про F051. Проблемы было две. Первое это когда мы ловим свой адрес во время передачи, и второе - когда вклинивается другой мастер во время преедачи, ну или просто плохой контакт в линии SDA или SCL. Вторая проблема хуже. МОдуль тупо зависал. Висел флаг BUSY и линия SCL сбрасывалась в 0. И все. никаких больше флагов. Первое решил запретом прерывания ADDR и отключением возможности отзываться на свой адрес I2C_OAR1_OA1EN = 0(то есть режим слэйва выкл) при предаче в режиме мастер. Со вторым сложнее. Если мы вываливаемся в I2C_ISR_BERR или I2C_ISR_ARLO, то смотрим флаг BUSY. Если он стоит (а его, как я понял быть не должно в нормальном случае) - это означает, что модуль завис. Пробуем перезапустить модуль битом PE = 0, PE = 1 и вкатить опять Start. Но бывает, что все равно это не помогает, модуль не висит, но флаги состояния не появляются, пооэтому есть вторая ступень защиты. В нормальном режиме после старта, у меня в очередь задач становится функция Supervisor с задержкой около 15 мс, чтоб с запасом на время передачи. Если мастер отработал успешно, то позавершению, мы удаляем Supervisor из очереди задач не дав ей сработать. То есть в норм ситуации она не работает никогда. А если модуль завис, она вызывается и тогда смотрим, если у нас висит BUSY или моя внутренняя переменная состояния I2C, то тогда ребутим модуль PE = 0, PE = 1. Да в тупом суперцикле этот костыль не проканает, нужен диспетчер задач. Топорно. Дубово, но работает безотказно. Да, это результат моих опытов и мои наблюдения. Может я ошибаюсь и делаю что-то не так, если у кого есть соображения на этот счет, поделитесь пожалуйста
@NRelectronics
@NRelectronics 4 года назад
Интересно получалось. Спасибо что поделились опытом, для себя его учту тоже. Побольше таких подписчиков, которые делились опытом реальным а не опытом лежания на диване!
@mi4ell
@mi4ell 3 года назад
@@NRelectronics Тоже решил реализовать обмен по I2C с помощью прерываний...и как понеслось. Реализовывал master-передатчик и master-приемник. Использовал контроллер F103. Столкнулся с тем что хочу принять 1 байт, вместо этого принимаю 2 байта (1 байт реальных данных, 2 байт 0xFF - т.е нет изменений на линии SDA, а есть просто тактирование на линии SCL). В RM пишут что есть некое событие EV6_1, которое ни с чем не ассоциируется и в нем надо отключить подтверждение и сгенерить СТОП-условие, но не тут то было - этот алгоритм не рабочий! Залез в ERRATA, нашел что реально за STM грешок, есть ошибки принятия лишнего байта) Что они предлагают: среди прочего вывод SCL вывести в режим GPIO и настроить на открытый сток с низким лог. уровнем, а затем вернуть в определенный момент в альтернативную функцию (если интересно почитайте, там 2 страницы, весь алгоритм расписывать лень). В итоге добился что принимаю 1 байт, НО нет СТОП-условия в результате чего, что логично микруха виснет)) и и линия SCL остается в лог. нуле (походу не возвращается в альтернативный режим работы), дальнейший обмен по шине невозможен. Итог: капался 2 недели))) модуль на F103 жудко сырой, с кучей глюков. Может я в чем-то ошибся, если у кого-то другой опыт, поделитесь, буду рад его перенять!
@user-gn6js6gy2n
@user-gn6js6gy2n 4 года назад
Не очень понял про нераспаянный reset на программаторе. В кейле же есть галочка "reset and run" на вкладке "download function". Тоже пользуюсь китайским стлинком и все запускается само.
@NRelectronics
@NRelectronics 4 года назад
Знаю про эту галочку, но китайский стлинк он не сбрасывает у меня.
@slavaglow6933
@slavaglow6933 3 года назад
Спасибо за информацию. У меня есть не совсем связанный с этим видео. Как правильно реализовывать атомарный доступ к 64 битной переменной?
@NRelectronics
@NRelectronics 3 года назад
Пожалуйста. Тут до меня все описано: habr.com/ru/post/244881/
@alx123
@alx123 4 года назад
Без отдельного ресета непонятно, то ли прошил, то ли нет, а в готовой сборке до кнопки нет доступа, поэтому я сразу соорудил ST-Link из блупилла.
@NRelectronics
@NRelectronics 4 года назад
Есть такое дело. В видео нажал кнопку ресет на плате. И окна консоли для чего собственно нужно?)
@alx123
@alx123 4 года назад
@@NRelectronics Кстати, в кубе IDE нет кнопки прошивки (может сочетание клавиш есть?), есть только компилить, запустить или дебаг, а в Кейле есть. И еще с устройств кидать на "сд-карту" стлинка удобно. Почему-то на всех Demo Board F030 у меня ошибка верификации, если через куб запускать, а скорость SWD родного отладчика вроде нельзя понизить.
@NRelectronics
@NRelectronics 4 года назад
кнопки прошивки действительно нет, приходиться запускать дебаг, в Кейле многое чего лучше...
@Mikke_30
@Mikke_30 Год назад
Что такое "хиддер"? 5:49
@NRelectronics
@NRelectronics Год назад
Файл для препроцессора с расширением .h
@tarasdemyanchuk9132
@tarasdemyanchuk9132 4 года назад
👍
@luckygiftlit3177
@luckygiftlit3177 2 года назад
Не открывается исходный код.
@NRelectronics
@NRelectronics 2 года назад
Я проверю, ок.
@Jtcvry
@Jtcvry 3 года назад
Либо было сказано как-то вскользь, либо не было сказано вообще, какая библиотека используется. Речь про lcd.h и .c
@NRelectronics
@NRelectronics 3 года назад
Библиотека для работы с I2C преобразователем.
@Jtcvry
@Jtcvry 3 года назад
@@NRelectronics Ссылку на источник, пожалуйста. Или вы сами её писали?
@NRelectronics
@NRelectronics 3 года назад
ссылка на гитхаб есть, там Weather Station закладка.
@Jtcvry
@Jtcvry 3 года назад
@@NRelectronics В смысле на облако мыла.ру?
@NRelectronics
@NRelectronics 3 года назад
в смысле на социальную сеть программеров гитхаб)
@ihor2240
@ihor2240 3 года назад
Если убрать все "эээ" из ролика, то видео сократится наполовину. Не стоит так волноваться.
@NRelectronics
@NRelectronics 3 года назад
Хорошо, согласен, не буду больше волноваться)
@manul88
@manul88 4 года назад
Спасибо! Но очень похоже на копию с канала Narodstream.
@NRelectronics
@NRelectronics 4 года назад
А там оно рабочее вообще??))
@manul88
@manul88 4 года назад
@@NRelectronics да, вполне
@sergienko_maxim
@sergienko_maxim 4 года назад
@@NRelectronics Ну у меня в конечном итоге все заработало по тому уроку на Narodstream. Но не помню сейчас точно, следовал ли буквально или просто брал за основу урок.
@NRelectronics
@NRelectronics 4 года назад
Я иду в любом случае по своей программе, и если где-то как у меня то я не виноват, зато на BlackPill - плате.
@ivanrusev2270
@ivanrusev2270 3 года назад
у меня два вопроса к вам как к спецу ф 1 глючит,Вообще у меня с I2C проблемма .Создал я своё меню по пинам оно переключается а вот во через приставку I2C не хочет. ?Как с этим бороться?Что я только не делал.Прошу меня не судить.Я чайник.На AVR EEPROM настроил в железе.В stm32 EEPROM и вообще I2C загадка.Как мне ресетировать шину и переустановить?
@NRelectronics
@NRelectronics 3 года назад
Проверьте адрес вашей приставки. Если шина правильно проинициализирована то переустановка не требуется.
@ivanrusev2270
@ivanrusev2270 3 года назад
@@NRelectronics почему вы не ответили?
@NRelectronics
@NRelectronics 3 года назад
Вообще-то ответил.
@ivanrusev2270
@ivanrusev2270 3 года назад
@@NRelectronics adres 0x4E или 0b01001110 он верный я проверил причина наверное в другом.
@NRelectronics
@NRelectronics 3 года назад
может не работать и приставка.
@znakomiy_42
@znakomiy_42 2 года назад
быстро быстро пробежался, палцем натыкал.... кто-то подгонял. Наверное не урок, а обзор больше
@NRelectronics
@NRelectronics 2 года назад
Всё относительно)
Далее
Мама приболела😂@kak__oska
00:16
Просмотров 725 тыс.
МЕГА МЕЛКОВЫЙ СЕКРЕТ
00:46
Просмотров 412 тыс.
STM32. Урок 13. USART. Теория. Часть 1
45:45
Мама приболела😂@kak__oska
00:16
Просмотров 725 тыс.