Подключение дисплея ili9341 с тачскрином xpt2046 по одному spi к stm32: пишем драйвер, рисуем

แชร์
ฝัง
  • เผยแพร่เมื่อ 18 ม.ค. 2025

ความคิดเห็น • 163

  • @VadRov
    @VadRov  ปีที่แล้ว

    Проект из этого видео на гитхаб: github.com/vadrov/stm32-xpt2046-ili9341-dma-irq-spi-temperature-voltage
    Видео о подключении дисплея: th-cam.com/video/8tIJ16riJqo/w-d-xo.html
    Драйвер дисплея на гитхаб: github.com/vadrov/stm32-display-spi-dma
    Поддержать канал:
    yoomoney.ru/to/4100117522443917
    Комплектующие в видео:
    - плата разработки stm32f401ccu6
    - макетная плата
    - провода для макетной платы
    - 3.2" дисплей с тачскрином ILI9341 (spi)

  • @andrybelaev339
    @andrybelaev339 ปีที่แล้ว +3

    Большое спасибо за детальные уроки! Рад, что вы снова с нами! Надеюсь вы не оставите это очень полезное для начинающих дело, еще раз спасибо!!

    • @VadRov
      @VadRov  ปีที่แล้ว

      После таких комментариев забрасывать канал категорически нельзя 😊

  • @олегникитенко-ц1б
    @олегникитенко-ц1б ปีที่แล้ว +2

    Спасибо за подробные уроки на не дорогих чипах STM32

    • @VadRov
      @VadRov  ปีที่แล้ว +1

      У меня есть "неприлично" дорогие (в настоящее время) микроконтроллеры, о которых нет смысла рассказывать, так как 99% увлекающихся самодельщиков в их сторону, скорее всего, не посмотрят. Но, возможно, в качестве сравнения производительности как-нибудь выпущу видео (но это не точно 😉).

    • @олегникитенко-ц1б
      @олегникитенко-ц1б ปีที่แล้ว

      @@VadRov так оно и есть,спасибо ещё раз не пропадайте с уроками!

  • @ТуттиФрутти-ю8ю
    @ТуттиФрутти-ю8ю ปีที่แล้ว +1

    Большое спасибо, все описано детально.

  • @igoriskarolaitis3392
    @igoriskarolaitis3392 ปีที่แล้ว +2

    VadRov, благодарю от души. Особая благодарность за коментарии к коду. Большой респект и отдельная уважуха.

    • @VadRov
      @VadRov  ปีที่แล้ว

      👌

  • @victorn1199
    @victorn1199 ปีที่แล้ว +2

    Подписка, лайк, респект за труды.

    • @VadRov
      @VadRov  ปีที่แล้ว +1

      Спасибо!

  • @alexshu1609
    @alexshu1609 ปีที่แล้ว +1

    Ура товарищи! День удался ! ВадРовичь новый видос запилил. Будем повторить путь нашего кормчего.
    В телеге в качестве анонса был видос как намек на будущие свершения. После определенных выводов были сделаны соответствующие закупки продемонстрированного железа .
    И вот он час настал ! Железо будет пущено в дело. 😊

    • @VadRov
      @VadRov  ปีที่แล้ว

      А у меня-то как день удался... Особенно, если учесть, что это видео должно было выйти, как минимум, почти год назад. 🙂

  • @kokotmkokot4926
    @kokotmkokot4926 ปีที่แล้ว

    Прекрасный образец и отличное пособие как писать код. Да еще с такими комментариями, да еще с таким объяснением на канале. Огромное спасибо!

    • @VadRov
      @VadRov  ปีที่แล้ว

      Спасибо. Вы мне льстите, но все равно приятно 😉

    • @kokotmkokot4926
      @kokotmkokot4926 ปีที่แล้ว

      @@VadRov Вовсе нет, прекрасно закомментированный код позволяет досконально разобраться с тонкостями. Мне очень помогло, но, на мой скромный взгляд, на LL код будет более переносимый на другие семейства и его ценность от этого только возрастет.

  • @avr_stm_pro2955
    @avr_stm_pro2955 11 หลายเดือนก่อน +2

    Спасибо большое за видос и работу ,👍👍👍👍

  • @sergatmel8242
    @sergatmel8242 ปีที่แล้ว

    Круто !
    Большое спасибо за подробности !

  • @VadRov
    @VadRov  ปีที่แล้ว

    0:00 Приветствие. О чем видео. Лайки и комментарии в виде обратной связи приветствуются.
    0:58 Схема подключения, которая используется в демонстрационном проекте.
    3:06 Характеристика дисплейного модуля ("три в одном").
    3:38 Особенности подключения линий одного spi к нескольким устройствам.
    4:17 Какие элементы распаяны (и не распаяны) на плате дисплейного модуля.
    5:42 Особенности настройки выводов CS для нескольких устройств, работающих на одном spi.
    7:06 Спецификация на контроллер xpt2046. Общая характеристика и функционал контроллера.
    8:59 Встроенный в контроллер АЦП последовательного приближения. Максимальная частота сэмплирования (дискретизации), ограничения по скорости spi.
    10:30 Блок-схема контроллера xpt2046. Характеристика входов/выходов. Дребезг на выводе PENIRQN.
    14:44 Тайминги "15 тактов на преобразование". Почему не используем.
    15:55 Тайминги "16 тактов на преобразование". Почему используем. Как формируется ответ контроллера на управляющий байт. Как интерпретировать этот ответ.
    18:57 Тайминги "24 тактов на преобразование". Почему не используем.
    20:52 Структура управляющего байта. Идентификация управляющего байта контроллером. Назначение битов управляющего байта.
    23:42 О драйвере контроллера xpt2046. Особенности построения проекта в STM32CubeIDE. Настройки spi, выводов CS (CS, T_CS).
    30:35 Настройка вывода T_IRQ.
    32:08 Обработчики драйвера. Что обрабатывают. Куда и как их подключать.
    37:27 Процедура реализации режима "16 тактов на преобразование".
    39:27 Обработка результатов измерений. Массив "на будущее". Почему отказался от статистических методов оценки результатов измерений.
    41:10 Борьба за минимизацию погрешностей. Элементарный фильтр.
    43:40 Настройка spi драйвером.
    43:53 О калибровке. Математические основы. Варианты хранения калибровочных параметров (коэффициентов).
    45:56 Демки, использующие драйвер тачскрина.
    48:00 Скользящее среднее температуры, измеряемой встроенным в xpt2046 датчиком.
    48:46 Построение своего проекта с использованием драйвера тачскрина и дисплея.
    49:36 Ускоряем микроконтроллер (если не используется HAL).
    54:13 Настройка соединения обработчика тачскрина. Скорость spi.
    58:14 Инициализация обработчика тачскрина.
    59:16 "Испытательный стенд" в действии.

  • @alexanderurezchenko6446
    @alexanderurezchenko6446 ปีที่แล้ว

    Очень доходчиво. Спасибо!

  • @avr_stm_pro2955
    @avr_stm_pro2955 10 หลายเดือนก่อน +1

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

    • @VadRov
      @VadRov  10 หลายเดือนก่อน +1

      Качаем программу PixelFontGenerator: drive.google.com/open?id=105Z92oXuPc31tbzNCNSIot0m41IIiUxG
      Формируем код для требуемого шрифта с нужным размером (ширина на выходе до 32 пикселей). Вставляем код в библиотеку (fonts.h, fonts.c), подредактировав его по аналогии с имеющимися в библиотеке шрифтами.

    • @avr_stm_pro2955
      @avr_stm_pro2955 10 หลายเดือนก่อน

      @@VadRov ОК, спасибо 👍

  • @gmmc_84
    @gmmc_84 6 หลายเดือนก่อน

    Приветствую, у меня дисплей ili 9341 вот только с тачем на контроллере ADS7846, это вроде клон xpt2046. Подскажите пожалуйста, драйвер подойдет или нужно править?

    • @VadRov
      @VadRov  6 หลายเดือนก่อน

      Приветствую. Теоретически доолжен подойти. Пробуйте.

  • @ukr-pig
    @ukr-pig ปีที่แล้ว

    Привет.А ты не пробовал подключать какой нибудь тач от смартфона ?

    • @VadRov
      @VadRov  ปีที่แล้ว +2

      Приветствую. Пробовал подключать резистивный 10'' тачскрин от планшета (digma). Подключал через м/с xpt2046. Пробовал также подключать резистивные тачскрины через встроенный в м/к ADC, минуя м/с драйвера.

  • @ebjikkolu4757
    @ebjikkolu4757 ปีที่แล้ว

    Бесценно . VadRov, я могу задать вам на почту gmail личный вопрос по микроэлектронике ? Просто на другие платформы написать возможности нет

    • @VadRov
      @VadRov  ปีที่แล้ว +1

      Приветствую. Задавайте, конечно, если вопрос не превысит уровня моей компетенции.

  • @ismailalhajji
    @ismailalhajji 11 หลายเดือนก่อน

    Thank You VADROV

  • @dmitriycold6906
    @dmitriycold6906 ปีที่แล้ว

    Здравствуйте а подскажите у этого продавца stm32f401ccu6 Платка это оригинальный St или перемаркированный? Я фотки в отзывах смотрю у кого то нормальные на вид а у кого то видно что шкуркой драли 80 номером 🤣

    • @VadRov
      @VadRov  ปีที่แล้ว

      Приветствую. Заказывал у него уже раз 5-6. Последний раз месяца два назад. Все было в норме. Все работает. Не перемаркер был. Из недостатков. В одном заказе пришлось пропаивать м/к по контуру и поменять кнопку.
      Через куб шьются и отладка работает.

    • @dmitriycold6906
      @dmitriycold6906 ปีที่แล้ว

      Понял спасибо, с наступающим всех благ )

  • @avr_stm_pro2955
    @avr_stm_pro2955 2 หลายเดือนก่อน

    Доброе время суток! Хочу переписать ваш драйвер xpt 2046 под серию stm32h7 не могу понять в функции где идёт опрос по spi в частности по флагу RXNE в серии h7 его нет ,и на spi два регистра данных у f4 один как это все организовать хз

    • @VadRov
      @VadRov  2 หลายเดือนก่อน

      Приветствую. Там все должно быть очень несложно (RM очень помогает), но со своими нюансами, главный из которых FIFO. Флаги называются по-другому и, действительно, два регистра данных по-разному называемых (на прием SPI_RXDR и передачу SPI_TXDR. В F4 их тоже два, но в записи они именуются просто одноименно DR). Кроме этого, есть и другие различия в настройке и наименованиях, расположении контрольных бит (в т.ч., флаговых: например, TXP, RXP статусного регистра SR, информирующих о готовности к передаче/приему информационного пакета).
      Под такую железку даже как-то жалко использовать xpt2046 с резистивным тачскрином. Напрашивается что-то емкостное с анализом до 5 касаний. 🙂

    • @avr_stm_pro2955
      @avr_stm_pro2955 2 หลายเดือนก่อน

      @VadRov спасибо 👍

    • @avr_stm_pro2955
      @avr_stm_pro2955 2 หลายเดือนก่อน

      @@VadRov хочу запустить дисплей 800x480 nt35510

  • @serg888fert4
    @serg888fert4 11 หลายเดือนก่อน

    Здравствуйте. Спасибо за работу. Есть вопрос. У меня есть такой же дисплей. Но у него 34 пина. Можете подсказать чем отличается такой дисплей от того, что в ролике. И как подключить дисплей с 34 спинами? Или где почитать? Чтобы попроще объяснялось. Спасибо.

    • @VadRov
      @VadRov  11 หลายเดือนก่อน +3

      Здравствуйте. Наверное, речь идет, все-таки, о 32-пиновом дисплее, предлагаемом для отладочной платы (stm32f4ve) на микроконтроллере stm32f407vet6. Там параллельный 16-битный интерфейс (распаяны перемычки на модуле дисплея). Для подключения дисплея используется контроллер FSMC, имеющийся "на борту" м/к stm32f407vet6. В простейшем случае, в CUBEIDE, выполнив предварительную настройку тактирования и периферии, идем в раздел Connectivity, выбираем FSMC, затем кликаем на NOR Flash/PSAM/..., далее ставим галку NE1 ChipSelect, потом в списке Memory type выбираем LCD Interface. В списке LCD Register Select выбираем A18, а в списке Data выберем 16 bit. Теперь идем в раздел Timers. Выбираем TIM3. В списке Channel 4 выбираем PWM Generation CH4, а ниже в Parameter Settings в Counter Perioder указываем 13999, в PWM Generation Channel 4 в пункте Puls указываем 6999. Все. Сохраняем проект, генерируем код. Писать команды дисплею в адрес 0x60000000, а данные в адрес 0x60080000. А как настроить без HAL будет видео на канале.

    • @serg888fert4
      @serg888fert4 11 หลายเดือนก่อน

      @@VadRov спасибо. Отлично !!

    • @serg888fert4
      @serg888fert4 11 หลายเดือนก่อน

      ​@@VadRovсейчас посмотрел. Эта плата на алике стоит 24 тыс рублей. Думаю, есть другой вариант подключения 😢😢

    • @VadRov
      @VadRov  11 หลายเดือนก่อน

      @@serg888fert4 , да, нет... Эта плата стоит в 20 раз дешевле. Как вариант, aliexpress.ru/item/32861780621.html

    • @serg888fert4
      @serg888fert4 11 หลายเดือนก่อน

      И пинов, таки 34

  • @ДаулетАлиев-у6я
    @ДаулетАлиев-у6я 8 วันที่ผ่านมา

    Добрый день. Огромное спасибо Вам за труды! Можно ли завести этот проект на proteuse? STM32F401CEU6 + ILI9341

    • @VadRov
      @VadRov  8 วันที่ผ่านมา

      @@ДаулетАлиев-у6я , добрый день. Давно не баловался в Proteus с симуляцией. Если есть модели перечисленных Вами устройств, то проблем с подключением hex файла с прошивкой для stm, скомпилированной в stm32cubeide возникнуть не должно. Если модель точно описана, то всё должно заработать также, как в железе, но, естественно, с поправкой на скорость. Помнится, симулировал клон спектрума с ЭЛТ экраном. Работало также, как и в железе, но очень медленно. 🙂

    • @ДаулетАлиев-у6я
      @ДаулетАлиев-у6я 7 วันที่ผ่านมา

      ​@@VadRov Доброй ночи. Который час сижу и голову ломаю никак не смог запустить этот проект на Proteus-е. При запуске экран становится черным и переходит на серый. Что делаю не так сможете подсказать?
      Подключение в Proteus-e ILI 9341:
      IM1, IM2, IM3, EXTC, RD, SDO, VSYNC, HSYNC, DE, D0-D17 - к 3.3в.
      IM0 - к минусу.
      Главное ШИМ вывод PA6 работает а выводы PA7 (mosi) и PA5 (sck) не функционируют выводятся логически ноль и все.

    • @VadRov
      @VadRov  7 วันที่ผ่านมา

      @@ДаулетАлиев-у6я , получается тишина на стороне spi м/к. А отдельно без дисплея (с отключенным от выводов в модели) есть что-нибудь на линиях spi? Не проверяли?

    • @ДаулетАлиев-у6я
      @ДаулетАлиев-у6я 7 วันที่ผ่านมา

      @@VadRov При отключений mosi и cs по очереди отключал реакций нету серый экран. А на остальных res, ds, sck тоже по очереди отключал дисплей не заводится т.е черный дисплей.

    • @VadRov
      @VadRov  7 วันที่ผ่านมา

      @@ДаулетАлиев-у6я , как бы всё говорит за то, что spi не заводится в модели. Если прошивка получена для того же м/к, что и модель, и в железе это работает, то проблема явно в модели. Надо экспериментировать просто со spi. То есть создать простой проект в Кубе, и в нём постоянно что-то передавать по spi, например, в кольцевом режиме dma, чтобы просто убедиться в работоспособности модели.

  • @ИльяСысуев-ъ1х
    @ИльяСысуев-ъ1х ปีที่แล้ว

    Для микроконтроллера stm32f401CDU6 придется создавать этот проект по новой или можно использовать который в видео показан ?

    • @VadRov
      @VadRov  ปีที่แล้ว

      Можно интегрировать в этот, если драйвера, ...FLASH.ld и startup для 401xD поставить вместо 401xC. +Еще кое-какие правки. Если с этим сложности возникнут, то можно новый проект создать и перенести туда файлы из этого. Думаю, что второй вариант по времени быстрее и меньше шансов на ошибку.

    • @ИльяСысуев-ъ1х
      @ИльяСысуев-ъ1х ปีที่แล้ว

      @@VadRov "ещё кое какие правки" какие ?

    • @VadRov
      @VadRov  ปีที่แล้ว

      @@ИльяСысуев-ъ1х , в .mxproject сорцы прописать. Если кварц внешний такой же, то норм. Можно вообще до кучи и ioc, .project и .cproject скорректировать, чтобы проект вообще "родным" был для Вашего МК.

    • @ИльяСысуев-ъ1х
      @ИльяСысуев-ъ1х ปีที่แล้ว

      @@VadRov можете помочь с этим ?

    • @VadRov
      @VadRov  ปีที่แล้ว

      Илья, попробую. Но сегодня точно нет (занят). Возможно, завтра в течение дня.
      Upd. : я так понимаю, МК на такой же отладке, просто продавец с CDU6 прислал?

  • @Zurenio
    @Zurenio 5 หลายเดือนก่อน

    😍😍

  • @Zurenio
    @Zurenio 6 หลายเดือนก่อน

    🥰😍🤩👏👏👏🙏🙏🙏🙏

  • @Zurenio
    @Zurenio 6 หลายเดือนก่อน

    Dear friend... Wonderful...!!! Can I donate with PayPal ? (from Italy)

    • @VadRov
      @VadRov  6 หลายเดือนก่อน

      Thank you. There is no need to donate. 🙂

  • @v_fix_lab
    @v_fix_lab ปีที่แล้ว

    Добрый день.Спасибо Вам за труды! Вынужден просить Вас о помощи. Я уже три недели пытаюсь запустить Ваш проект но безуспешно,поэтому прошу Вас помочь мне. Имеется STM32F405RGT6 подключение пинов идентично Вашей схеме. Что имею на выходе попытаюсь детально изложить ,что бы Вы смогли мне помочь,если будете любезны... Если запустить проект как есть то он остановиться на калибровке тачскрина и первая же точка в вехнем левом углу не нажимается.Забегая вперед скажу что проверял потом все осциллографом и на этом этапе фронт IRQ падает вниз стабильно при нажатии ,но CS тачскрина не переходит в низкий,то есть к тачу никто не обращается.Во второй демке с квадратиками та же ситуация. В третьей ситуация меняться! Если не вводить ваши коэффициенты тачскрина то при касании экрана белый кружочек появляется в левом верхнем углу экрана и не перемещается независимо от области нажатия.Если ввести ваши коэффициенты,то тач немного оживает - он начинает рисовать кружочки ,но зеркально от оси Y другими словами зеркально вправо и влево от вертикальной середины экрана.Изменения поворота экрана в драйвере дисплея только ухудшает ситуацию,зеркалить начинает в других направлениях.На шине в третьей демке происходят странные вещи. Сигнал IRQ теперь не может полностью сменить фронт на низкий при нажатии на экран, форма сигнала принимает вид перевернутой буквы Ш соединенной бесконечно ,то есть опускается на короткий момент и потом поднимется назад.Форма сигнала на линии CS тача принимает тоже схожую форму независимо от нажатия,видимо идет постоянный опорос тача. Изменения скорости работы ничего не меняют.На третьей демке напротив количества примитивов ничего не пишет,напротив Temp пишет 4294967267 ,иногда последняя 7 меняется на 6. Прошу помощи так как близок к суициду...

    • @VadRov
      @VadRov  ปีที่แล้ว

      Здравствуйте. Вы большой шутник. За три недели можно изучить мк и программирование. По проблеме. Могу предположить, что мк не видит изменения сигнала на линии penirq. Под вопросом настройка соответствующего входа мк либо подключение. Вообще, по моим наблюдениям, в 90℅ случаев проблемы вызваны неправильным подключением, остальные 10 - особенности применяемого мк (другой мк, требующий изменения кода, исходя из документации на этот мк). В этом случае следует отдельно создать проект для тачскрина и отладить его. А затем уже дружить тачскрин с дисплеем.

    • @v_fix_lab
      @v_fix_lab ปีที่แล้ว

      @@VadRov Благодарю за ответ.По поводу трех недель на обучение программированию это Вы тоже хорошо пошутили.Проблему уже увидел - просто пропустил настройку систика на прерывание 1000 раз в секунду.Выходит он просто не мог посчитать что я от него хочу.Ваш проект очень пригодился мне для реализации управления выводами МК с помощью тачскрина. Помогите ,пожалуйста,в нем реализовать грамотно задержку после нажатия кнопки на тачскрине, другими словами что б она не меняла состояние много раз в секуду а к примеру была доступна к нажатию раз в секунду или в половину секунды.Заранее благодарю вас.

    • @VadRov
      @VadRov  ปีที่แล้ว

      @@v_fix_lab , посмотрите процедуру SelectMenu в моем проекте игры "Крестики - нолики": github.com/vadrov/stm32-TicTakToe-Game-xpt2046-pcm5102a-ili9341-mp3-wav/blob/main/Core/Src/main.c
      По-моему, там есть то самое, что Вам требуется.