Очень долго не мог понять почему у меня не запускается пример из видео, хотя и плата и экран один в один. Оказалось для моего экрана нужно выставлять значение high для параметра clock polarity (cpol) в настройках spi. Теперь осталось победить зеркальное отображение на экране и измененные цвета, но это уже мелочи. Владимир, спасибо за ролик!
Когда я лет 6 назад делал проект с цветным тачем, 320х240, то 2 месяца только софт под винду писал, в котором графически делал все эти кнопки, меню и оно мре код генерировало под IAR CMSIS
Ну что тут скажешь? Гениально! Владимир, на фото, немного похож и на Морфеуса и на БГ, но создает такой классный контент, что не понятно еще кто на кого похож. Отличная работа!
Класс!!! ох помню мучился с этими GUI когда пульты управления делал на микроконтроллерах. Сейчас это всё через Bluetooth на телефон пробрасываю. А вообще очень интересная тема и возможно пригодится, если дисплей нужен на устройстве для какой-то визуализации событий. Спасибо за обзор библиотеки!!!
смотрел в сторону QT. Ребята делают в нем интерфейсы для приборных досок машин, красивые интерфейсы для мед.оборудования. Но как только хочешь красивые штучки, плати денюжку)
Тоже, как и многим здесь, довелось написать свою реализацию вывода графики, прямо на этот экран. Даже узнал в списке гитхаба показанные проекты, я тоже из них выбирал исходный драйвер. О TouchGFX долго уже слышал, но всё как-то мельком, неуловимо. Спасибо за развёрнутую тему!
@@VladimirMedintsev Добрый день. Ни как не мог понять как так вышло, что вы просто перепрыгнули основную суть вопроса - как же программисту, начинающему разбирать эту тему, понять какие рычаги графического ядра нужно дергать в своем приложении чтобы оно завелось. Потом понял, что авторство проекта не совсем ваше и в исходной статье описание всех шагов довольно подробное. Я без претензии, Вам однозначно мое уважение и благодарность, но мне кажется было бы справедливо указать источник (Pero Krivić), начинающим в этой теме будет куда проще разобраться, почему вы сделали так, а не иначе. С уважением!
Видео очень полезное как и всегда, но так же хотелось бы раскрыть использование внешней памяти под программу, которая пригодилась вы для таких контролёров как stm32h750, так как объем памяти очень маленький а это единственный контроллер который ещё есть у крупных поставщиков, который можно купить без трудностей
Владимир, спасибо вам большое за ваши труды. Давно присматриваюсь к этой библиотеке, до нее использовал uGfx. Но, развитие библиотеки прекратилось, хотя она была довольно гибкая. Теперь появился шанс изучить продукт от ST.
Как то хотел попробовать прикрутить дисплей, но потом посчитал все расходы и решил в проекты ставить китайские HMI. 7 дюймовый HMI цена от 5 до 6 тыщ. Все на борту, тоуч. Может есть конечно дешевые экраны таких размеров но я не встречал.
Отлично, Долгожданное видео по граф. библиотеке. Когда-то делал на ассемблере AVR свою. Сейчас все просто. Скорость заполнения высокая, потому что дисплей маленький
Кам не для холивара, а для расширения горизонта;) Кмк, LVGL поинтересней будет, например в контексте FB. Причем гуи-дизайнерьі есть в двух вариантах родной и от NXP.
Для дисплея использую LVGL библиотеку, она по дефолту выдаёт более симпатичные виджеты. К ней нет дизайнера, но это вообще не проблема. TouchGFX не понравился, что из коробки какие то сташные виджеты и их все нужно допиливать, делать всё через картинки, а я не дизайнер. В LVGL всё управляется через код, это на много прощк для программиста
Библиотека интересно построена - пока идет загрузка картинки в память экрана (экран белый). потом только дается команда вывести на экран (это очень быстро), а вот если слать в память и сразу выводить - то видно реальную скорость отрисовки.
А что вскользь? Какой тут информации не хватает? Код предоставлен, где в файлах и что править - показано. Что именно было вскользь? Мне вот аж интересно.
@@VladimirMedintsev С ходу мне непонятно как вообще реализован вывод графики на дисплей. В каком виде эта самая графика хранится в проекте. Как ее связывать с логикой программы. Но старт есть, спасибо за то что вообще разжевали как вообще с этим начать работать, дальше будем попробовать разбираться.
Спасибо за информацию. Удивляет что у такой серьезной фирмы как ST такой убогий и неудобный набор компонентов, хотя работают они над этим проектом уже лет 10. Еще тогда у них было подобное решение, но без куба конечно - простенький редактор для создания GUI. За это время прогресса почти нет.
Да это ерунда, че там запускать, там скорости дофига, вот выжать максимум через spi с dma это интересно. Но все делают ногодрыг, программа ничего не далает только рисует….
Здравствуйте и спасибо за обзор. Программа работает нормально только с SPI1. При переключении на SPI2 или SPI3 по какой-то причине программа не выходит из while (state[drawingBlock] != EMPTY) { FrameBufferAllocatorWaitOnTransfer(); } Внутри FrameBufferAllocator.hpp Внутри библиотеки, конечно, меняю все "spi1" на "spi2". Может, Вы тоже с этим сталкивались и можете подсказать, в чем проблема?
20:35 Все изображения загружаются на F l a s h микроконтроллера? Если да, то в каких форматах? Я через D M A кодировал пиксели дисплея. Максимальный размер передачи через D M A составляет 65 Килобайт. Дисплей 240 х 320==76800 * 2==153600 байт надо передать. (1 пиксель==2 байта) 153600 / 65000==3 D M A передачи надо сделать, чтоб закодировать все пиксели дисплея. Передача по D M A очень быстрая это да, но инициализация D M A занимает относительно много времени и поэтому получаются паузы между передачами. Я передавал с U S B носителя изображание на дисплей. Не понимаю за счёт чего у вас такая быстрая передача данных на дисплей?
@@VladimirMedintsev В вашем случае у вас фото во флеш микроконтроллера загружаются? Если да, то может из за этого передача по D M A так быстро проходит у вас. Допустим если мне надо Слайдшоу сделать из тысячи изображений, они же во флеш МК не поместятся. Интересно можно ли в дизайнере T o u c h G F X настроить место куда загружать изображения, например на УСБ носитель. Загрузить изображения на УСБ и проверить скорость кодирования пикселей библиотекой T o u c h G F X.. Ок, думаю мне надо поизучать T o u c h G F X.
Все здорово, давно искал подобное в сети, но есть несколько неясностей, а именно: как файлы сгенерированные приложением вставляются в нужное место проекта? Какие это файлы поименно и если вставлять вручную то куда? Спасибо.
Сегодня руки дошли попробовать запустить это чудо от ST, на дисплее ILI9481 480x320 по параллельному 8-битному интерфейсу. Использую CubeIDE, вывод через FSMC, камень F407VET6. Ну что-ж, получилось, все довольно таки не плохо, только флеша после компиляции 1-го экрана с тремя кнопками ушло аж 240 килограмм , половина всей памяти этого контроллера. Попробовал виджет часов вывести, все память кончилась. ?????
Но я по итогу не разобрался почему не компилируется. 2 ошибки выдает. "undefined reference to `TouchGFXHAL::beginFrame() и endFrame" не понял где объявлять их. помогите пожалуйста.
Здравствуйте, а почему не LVGL? TouchGFX вроде был платным, возможно раньше. LVGL может и под esp32, m5stack. Получается универсально под разные платформы бесплатно, а так только фреймворк для stm32
Извините. А LVGL платная или нет? Код там открытый? Вы совершенно правы - TouchGFX проприетарная библиотека и с бесплатной лицензией под STM контроллеры.
ЭсТэМы как всегда, в своём духе. Что в коде, что в справке. Всё отлично и понятно, только чтоб поиграться с виджетами. Но в прикладной задаче, чтоб изменить текст какого-нибудь лэйбла из мейн си - начинаешь с ума сходить, разбираясь во всех этих хитрых скрещиваниях Си и Сипп, как подступиться к этому всему с наружи. Сложно было методов написать?
Сколько бы я не долбался с этим 9341, какие бы библиотеки не брал, всегда он работал у меня тормознуто. То правда на ESP32. Может теперь соберусь с силами, попытаюсь еще раз.
Так буфер вы сами задаете сколько есть столько и даете, а так сами посчитайте 800х480х2=768кбайт, это только серия h743 с внешней памятью. Но если экран подключен не по RGB то иметь полный буфер не нужно, 10-20 Кбайт достаточно
Устранил практически все ошибки компиляции, осталась одна, а именно "GUI_IAR.elf section `TouchGFX_Framebuffer' will not fit in region `RAM'". Что означает эта ошибка понятно, но в каком файле задается размер фреймбуфера найти не смог. В STemWin это файл GUIConf.c там по умолчанию этот размер 0x200000 то есть намного больше всей RAM процессора и при изменении на вменяемый размер ошибка overflowed уходит. Не подскажите в каком файле задается размер фреймбуфера в библиотеке TouchGFX. Спасибо.
Очень познавательно, GFX продвинулся в части совместимости с кейлом. Владимир ,может рассматривали в качестве альтернативы библиотеку lvgl? Использует си без плюсов + красиво портируется в кейл.
Еще кое-что. Появился непонятный файл Videos.s и в нем непонятные 3 строчки, которые все ошибочны. Если можно, хотелось бы более подробное описание работы этой связки приложений. По началу казалось все просто, но когда сделал руками как в описании, оказалось есть вопросы, без решения которых ничего не работает. Вспомнил еще - почему Вы используете Keil, если логично использовать STM32CubeIde?
Во первых, восхищаюсь Вашей плодовитостью по выпуску роликов. Спасибо за Ваш труд. Смотрю Вас уже давно, но этот ролик был для меня прям специально выпущен к сроку. На днях жду приезда из поднебесной дисплей на камне ILI9488. Пытаюсь подготовить проект для него, а тут Ваш ролик. Я думал, что логично использовать CubeIDE так как это его библиотека. Странно, что в ней не учтено, будет использоваться именно CubeIDE Я поставил библиотеку не просто на куб, а на CubeIDE и естественно создался проект именно там. Возможно я не прав. По мне так одно проистекает из другого. То есть в CubeIDE проект не будет работать? Откуда берется эта директория "Keil" и файл videos.s и зачем они нужны? Вы не разбирались случайно? А не пробовали сделать проект для IARa? Я на работе не по своей воле использую IAR, а дома для собственных нужд CubeIDE. Не хочется тратить время на освоение третьей IDE, тем более кое что про нее я тоже знаю. Использую тоже на работе для компиляции чужих проектов на SiLabs процах. Заранее спасибо.
CubeIDE, Keil uVision, TouchGFX это разные программные продукты. По этой причине выражения "это его библиотека" или "поставил библиотеку не просто на куб, а на CubeIDE" говорят, что вы не сильно разобрались с тем, как генерируются проекты. Ошибка с дирректорией и файлом video.s возникает только в том случае, если вы пытаетесь проект созданный для среды разработкиKeil uVision собрать в среде CubeIDE. На самом деле единственное, что требовалось это создать проект заново именно в той среде, в которой вы собираетесь работать и ошибок не возникнет.
@@VladimirMedintsev Понял Вас, но ведь я и создал проект там, где и работаю - в CubeIde. Библиотеку накатил туда, создал проект, открыл его, попробовал скомпелировать там же и получил ошибку. Что-то я сделал не так?
@@GennPen десятью секундами ранее есть же консольное сообщение. Program Size: Code=42746 RO-data= 239854 RW-data=412 ZI-data=8820, то есть FLASH - 282600 байт,а RAM - 9232 байт. Вот и сравните с пустым проектом.
Да, рано или поздно продолжение будет, ну на самом деле все самое интересное по старту здесь показано, что и куда прописывать, а работа с элементами так хорошо описана в справке, что стыдно и пересказывать. Тяжелый всегда только старт.
Попробовал повторить проект на Nucleo-64-F446RE платкой TFT совместимой с Arduino shields. К сожелению видео не совсем совпадает с файлами проекта. Например получаю такую ошыбку : ../Core/Src/ili9341.c:354:20: error: 'SPI1_NSS_GPIO_Port' undeclared (first use in this function). Пока неразобрался, так как в видео об этом неговорится.
Этот вопрос относится не к видео, а к пониманию работы интерфейса SPI. Самое забавное что ответ кроется в сообщении об ошибке. У вас не определен вывод NSS, это контакт вашего дисплея. Так, что на видео кивать смысла нету. Необходимо разобраться с простыми понятиями, прежде чем столь сложные вещи делать.
Так видео для новичков делается? Нет? Я задействовал все пины по видео, включил SPI1, прерывания, DMA, CRC и т.д. точно по видео. Правда у мениа CubeIDE, но проект я создавал с нуля, смотря видео и пошагово делая. Просмотрел и проверил дважды. Скачал Ваш проект, взял библиотеки, доп. файлы. Из main.c взял всё что нужно (к стати, есть мелкие разногласия с видео, но да ладно, разобратся можно, там непринципияльно). Нога SPI1_NSS по умалчанию включая SPI1 незатрагиватеся, в видео это также. Включил принудительно, но код ошыбки тот же. Я расберусь, Google меня незабанил.
В видео нет таких понятий или я слепой: #define SPI1_NSS_Pin GPIO_PIN_4 #define SPI1_NSS_GPIO_Port GPIOA #define T_CS_Pin GPIO_PIN_15 #define T_CS_GPIO_Port GPIOE Там есть RESET, DC, CS. Ну я у себя подправлю.
@@VladimirMedintsev Из Вашего короткого видеобзора: 1. На кнопках можно всякие иконки добавлять (да и сами кнопки гораздо круче). Также и цвет можно поменять. Всего этого в StemWin нет вообще, а если цвет и как-то можно скостылить, то просто так не получается там; 2. Намного (!) больше всяких других контроллов; 3. Непонятно правда как один из важнейших компонентов - 'GraphControl' работает тут. В StemWin с этим все нормально и четко.
Stemwin по своему хороша, первое чистый си , второе - дает массу возможностей при работе на низком уровне, и как по мне побыстрее будет однозначно (если делать анимацию различных объектов) в связке f429 + 800*480 2 слоя
@@cline2539 То что чистый Си - это хорошо когда только C компилятор/линкер собирает проект, а не мешанина C и C++, но с др. стороны возможностей C++ намного больше. Т.е. не все так однозначно. Остальные вещи надо сравнивать в реальном железе. А Вы сравнивали эти библиотеки у себя в железе?
А что не так с нынешними ценами? Цена на 18.10.2021 на STM32F401CCU6 - 279.40 рублей. В наличии - около 3 тысяч штук. Что не так с ценами? Да, из-за кризиса некоторые микроконтроллеры стало тяжелее купить, но если не покупать в первом попавшемся месте, то что-то я не вижу огромных проблем.
@Michael Art погоду, для примера, вы также на семисегментнике будете отображать? За конкретные графические библиотеки не скажу, но подобными дисплеями запросто управляют f103 камни. Приведу пару примеров: - популярный dso138 (дисплей 2,4", программный 8 бит fsmc через ногодрыг ); - популярные программируемые dc-dc преобразователи от китайской компании Riden(какой дислей не знаю, в руках не держал, f103 камень).
I am still sad that there is no English for this. Having English will help the viewers & will also improve your channel. Please consider English. Please man.
@@VladimirMedintsev Насколько мне известного для Qt есть специальные дополненный инструментарий, который позволяет писать GUI для embedded system. И конечно в авангарде этого изобилия стоят контроллеры stm.
@@VladimirMedintsev Я тоже с ним мучаюсь. Всё выглядит на демонстрациях так мило и красиво а когда начинаешь делать реальные вещи то куча проблем. А какой вариант вместо него ?
Чтобы увидеть скорость нужно было в цикле выводить 2 разные картинки или интерфейса, а так хрен знает сколько времени шла отрисовка, экран был отключен, буфер вввелся и экран включился. Явно отрисовка была скрыта.
Как я понял, TouchGFX - это библиотека, которую непосредственно надо подключать в свой код и она будет заминать какое-то пространство во флэше. Когда мне надо было отрисовать свой интерфейс на дисплее, я использовал дисплеи фирмы Nextion. Вкратце, да, это не отдельная библиотека, но это отдельное устройство, со своим сенсорным экраном, со своим микроконтроллером, со своим eeprom. У них, так же, есть своя ide, где можно рисовать разные экраны.
После слов "сейчас я прервусь" происходит какая-то магия и эти 2 ошибки пропадают... Я определил необходимые функции точно, как в видео, но никак не могу избавиться от этих ошибок((
Прошу прощения, это моя глупость. Ночью до меня не дошло, что эти директивы не обернуты никакими условиями, а потому являются просто сообщениями пользователю)
@@slavickolesnikov7036 здравствуйте. Да, я их просто закомментировал и продолжил дальше отлаживать программу. По логике, при перестроении проекта они должны снова появиться, но этого не произошло... А на каком этапе эти сообщения перестали меня беспокоить, я как-то упустил из виду. Сейчас у меня всё успешно работает.
Программа немного конченная. Автоматически предлагает установку на внешний юсб накопитель. А если я меняю путь установки на другой диск то пишет ошибка "в пути не может быть пробелов" и не устанавливается. А папку я создаю с английским названием прямо в корне диска. В любом месте кроме предложенного она не распаковывается. Реально ужас. Пришлось удалить весь проект и снова создать и тогда смог скопировать нужные файлы (уже в самом проекте).
Накидать кнопок и всякой бяки это одно, а взаимодействие с периферией.... ещё те танцы с бубном. Объединять Си и С++. Не доволен этой приблудой. При таких мощьностях графики такие убогие настройки и виджеты. Нет крутилки как в Appwizard. Неужели нельзя его было ввести? EmWin кажется лучше по сравнению с этим убожеством, написано на Си, без всяких плюсов, более гибкие настройки. Если есть возможность осветие EmWin и Appwizard, слишком мало информации.
TouchGFX не настолько большая библиотека как LVGL. Почему для LVGL в CubeMX нет поддержки(Фреймворк), а для TouchGFX есть поддержка в CubeMX? LVGL ведь намного больше и лучше. Я ещё ни одной библиотеки не использовал, выбираю сейчас библиотеку, которая лучше. Может вы подскажете хорошую библиотеку для дисплеев? В LVGL библиотеке есть поддержка Touch(сенсорных) дисплеев? Кстати в CubeMX есть драйвер на дисплей ili9341 в разделе Middleware.
Чат ГПТ мне вывел такой рейтинг популярности графических библиотек для дисплеев: STemWin, LittlevGL(Это наверное и есть LVGL), TouchGFX, emWin, GTK+ Меня почему то привлекает библиотека STemWin. Об этой библиотеке на сайте ST есть очень много информации в отличии от lvgl библиотеки. По запросу STemWin на сайте ST выдаёт 6 страниц информации.
Чат ГПТ мне так ответил: Исходя из моих данных и анализа мнений разработчиков, можно сказать, что библиотека TouchGFX более популярна среди разработчиков.
Ответ на ваш вопрос кроется в том, что lvgl это свободно распространяемый проект, а TouchGFX это детище STMicroelectronics. Что по вашему они будут продвигать и рекламировать? Ответ очевиден и без использования туповатого чат-бота.
Жить стало лучше, жить стало веселее! СПАСИБО!
Очень долго не мог понять почему у меня не запускается пример из видео, хотя и плата и экран один в один. Оказалось для моего экрана нужно выставлять значение high для параметра clock polarity (cpol) в настройках spi. Теперь осталось победить зеркальное отображение на экране и измененные цвета, но это уже мелочи. Владимир, спасибо за ролик!
Когда я лет 6 назад делал проект с цветным тачем, 320х240, то 2 месяца только софт под винду писал, в котором графически делал все эти кнопки, меню и оно мре код генерировало под IAR CMSIS
Я восхищаюсь такими людьми)))
Ну что тут скажешь? Гениально! Владимир, на фото, немного похож и на Морфеуса и на БГ, но создает такой классный контент, что не понятно еще кто на кого похож. Отличная работа!
Последний раз также радовался когда появилась Delph 1
Класс!!! ох помню мучился с этими GUI когда пульты управления делал на микроконтроллерах. Сейчас это всё через Bluetooth на телефон пробрасываю. А вообще очень интересная тема и возможно пригодится, если дисплей нужен на устройстве для какой-то визуализации событий. Спасибо за обзор библиотеки!!!
Как всегда полезная и актуальная информация. Однозначно лайк!
Спасибо! Начинаю смотреть
Восхищаюсь людьми, которые являются первопроходцами в таких сложных вещах
смотрел в сторону QT. Ребята делают в нем интерфейсы для приборных досок машин, красивые интерфейсы для мед.оборудования. Но как только хочешь красивые штучки, плати денюжку)
Тоже, как и многим здесь, довелось написать свою реализацию вывода графики, прямо на этот экран. Даже узнал в списке гитхаба показанные проекты, я тоже из них выбирал исходный драйвер.
О TouchGFX долго уже слышал, но всё как-то мельком, неуловимо.
Спасибо за развёрнутую тему!
Да она не сильно развернутой получилась. Но для понимания происходящего подойдет. Спасибо.
@@VladimirMedintsev Добрый день. Ни как не мог понять как так вышло, что вы просто перепрыгнули основную суть вопроса - как же программисту, начинающему разбирать эту тему, понять какие рычаги графического ядра нужно дергать в своем приложении чтобы оно завелось. Потом понял, что авторство проекта не совсем ваше и в исходной статье описание всех шагов довольно подробное.
Я без претензии, Вам однозначно мое уважение и благодарность, но мне кажется было бы справедливо указать источник (Pero Krivić), начинающим в этой теме будет куда проще разобраться, почему вы сделали так, а не иначе. С уважением!
Видео очень полезное как и всегда, но так же хотелось бы раскрыть использование внешней памяти под программу, которая пригодилась вы для таких контролёров как stm32h750, так как объем памяти очень маленький а это единственный контроллер который ещё есть у крупных поставщиков, который можно купить без трудностей
stm32H743
Видео суперское. Очень хочу продолжения. Поставил бы 10 лайков, пойду заводить аккаунты)
Очень полезная информация. Хотелось бы посмотреть работу с сенсорным экраном . Лайк за видео 👍
Спасибо за реально полезное видео.
Владимир, спасибо вам большое за ваши труды. Давно присматриваюсь к этой библиотеке, до нее использовал uGfx. Но, развитие библиотеки прекратилось, хотя она была довольно гибкая. Теперь появился шанс изучить продукт от ST.
Спасибо большое за Ваш канал ..
Очень помог в реализации проекта ..
Сегодня посмотреть не успеваю, но для продвижения лайк и комментарий обязательно пишу.
Супер! Большое спасибо за видео. Так не смог запустить её на f412
Как раз очень актуально, спасибо!
quick tutorial. Шикарно!
Очень полезное видео, спасибо!
Замечательный урок. Спасибо!
Как всегда огонь! Жду продолжение!
Спасибо, ждём продолжения.
Ещё есть библиотека LVGL. Возможно кому-то она больше понравиться.
а у нее есть дизайнер подобный как у GFX,
@@Amigo5946 (говорят, целых два есть)
Как то хотел попробовать прикрутить дисплей, но потом посчитал все расходы и решил в проекты ставить китайские HMI. 7 дюймовый HMI цена от 5 до 6 тыщ. Все на борту, тоуч. Может есть конечно дешевые экраны таких размеров но я не встречал.
Отлично, Долгожданное видео по граф. библиотеке. Когда-то делал на ассемблере AVR свою. Сейчас все просто. Скорость заполнения высокая, потому что дисплей маленький
Ооо, мне как раз отладочная плата пришла с экраном и тачскрином
спасибо Владимир!
Спасибо. Как всегда интересно. Надо осваивать.
Очень полезное видео! Не знал, что существует такая классная прога! Лайк! Спасибо за Ваши труды!
Ждём обзора Ethernet Modbus, и никакие жк экраны не нужны. Всё управление устройствами с центрального ПК, дёшево и необычайно удобно.
Кам не для холивара, а для расширения горизонта;) Кмк, LVGL поинтересней будет, например в контексте FB. Причем гуи-дизайнерьі есть в двух вариантах родной и от NXP.
В контексте МК, кмк, самое главное - кто жрет меньше памяти. TouchGFX вроде как я понял в Blue pill не влезает, а LVGL - со скрипом, но можно
Спасибо большое за такой подробный и полезный урок :)
Для дисплея использую LVGL библиотеку, она по дефолту выдаёт более симпатичные виджеты. К ней нет дизайнера, но это вообще не проблема. TouchGFX не понравился, что из коробки какие то сташные виджеты и их все нужно допиливать, делать всё через картинки, а я не дизайнер. В LVGL всё управляется через код, это на много прощк для программиста
Вы уверены, что к LVGL нет дизайнера? А мне казалось их целых два...
ua-cam.com/video/UrSkzbuuGaw/v-deo.html
Библиотека интересно построена - пока идет загрузка картинки в память экрана (экран белый). потом только дается команда вывести на экран (это очень быстро), а вот если слать в память и сразу выводить - то видно реальную скорость отрисовки.
Великолепно! Спасибо
КРУТО!!!!
Спасибо. Актуальная информация.
Как всегда, отличное, и полезное видео!
Аааа, ОГРОМНОЕ спасибо!!
Это то чего я ждал очень давно )))
Тема очень нужная и интересная. Но как то все вскользь. Но хоть кто-то ее затронул, русскоязычного материала на эту тему мало, хотелось бы подробней.
А что вскользь? Какой тут информации не хватает? Код предоставлен, где в файлах и что править - показано. Что именно было вскользь? Мне вот аж интересно.
@@VladimirMedintsev С ходу мне непонятно как вообще реализован вывод графики на дисплей. В каком виде эта самая графика хранится в проекте. Как ее связывать с логикой программы. Но старт есть, спасибо за то что вообще разжевали как вообще с этим начать работать, дальше будем попробовать разбираться.
Спасибо за информацию. Удивляет что у такой серьезной фирмы как ST такой убогий и неудобный набор компонентов, хотя работают они над этим проектом уже лет 10. Еще тогда у них было подобное решение, но без куба конечно - простенький редактор для создания GUI. За это время прогресса почти нет.
надо тест с сменой картинок, так бы нагляднее была видна скорость отрисовки
2 часть видео есть?
Спасибо
Хорошее видео, спасибо.
Интересно посмотреть на прогресс бар и отображение графика в действии
Интересно бы с fsmc запустить 407ve...:)
А в чем там проблема?
Да это ерунда, че там запускать, там скорости дофига, вот выжать максимум через spi с dma это интересно. Но все делают ногодрыг, программа ничего не далает только рисует….
Здравствуйте и спасибо за обзор.
Программа работает нормально только с SPI1. При переключении на SPI2 или SPI3 по какой-то причине программа не выходит из
while (state[drawingBlock] != EMPTY)
{
FrameBufferAllocatorWaitOnTransfer();
}
Внутри FrameBufferAllocator.hpp
Внутри библиотеки, конечно, меняю все "spi1" на "spi2". Может, Вы тоже с этим сталкивались и можете подсказать, в чем проблема?
А библиотечки от Япончика уже нет - можно ее выложить где не будь?
Здравствуйте! А продолжения с сенсорным дисплеем так и не было?
Нет, пока не было.
У меня такой экран без SPI. Будет работать?
Очень интересная тема, а вы какой модуль планируете приобрести с тачскрином? Жду продолжения.
20:35
Все изображения загружаются на F l a s h микроконтроллера?
Если да, то в каких форматах?
Я через D M A кодировал пиксели дисплея.
Максимальный размер передачи через D M A составляет 65 Килобайт.
Дисплей 240 х 320==76800 * 2==153600 байт надо передать. (1 пиксель==2 байта)
153600 / 65000==3 D M A передачи надо сделать, чтоб закодировать все пиксели дисплея.
Передача по D M A очень быстрая это да, но инициализация D M A занимает относительно много времени и поэтому получаются паузы между передачами.
Я передавал с U S B носителя изображание на дисплей.
Не понимаю за счёт чего у вас такая быстрая передача данных на дисплей?
S P I B a u d R a t e у меня 42 M b i t / s максимальная на S T M 32 F 407
Не обязательно именно во Flash микроконтроллера. Форматы в принципе любые. Можно же и JPG прикрутить. Но базово конечно это битовое изображение.
@@VladimirMedintsev
В вашем случае у вас фото во флеш микроконтроллера загружаются?
Если да, то может из за этого передача по D M A так быстро проходит у вас.
Допустим если мне надо Слайдшоу сделать из тысячи изображений, они же во флеш МК не поместятся.
Интересно можно ли в дизайнере T o u c h G F X настроить место куда загружать изображения, например на УСБ носитель.
Загрузить изображения на УСБ и проверить скорость кодирования пикселей библиотекой T o u c h G F X..
Ок, думаю мне надо поизучать T o u c h G F X.
Все здорово, давно искал подобное в сети, но есть несколько неясностей, а именно: как файлы сгенерированные приложением вставляются в нужное место проекта? Какие это файлы поименно и если вставлять вручную то куда? Спасибо.
Сегодня руки дошли попробовать запустить это чудо от ST, на дисплее ILI9481 480x320 по параллельному 8-битному интерфейсу. Использую CubeIDE, вывод через FSMC, камень F407VET6. Ну что-ж, получилось, все довольно таки не плохо, только флеша после компиляции 1-го экрана с тремя кнопками ушло аж 240 килограмм , половина всей памяти этого контроллера. Попробовал виджет часов вывести, все память кончилась. ?????
Можете проект скинуть посмотреть?
@@ИльяБолдырев-ж3р Дык, это так побаловался и усе. Даже не знаю сохранилось чего нибудь или нет, давно это было. Будет время поищу.
Но я по итогу не разобрался почему не компилируется. 2 ошибки выдает. "undefined reference to `TouchGFXHAL::beginFrame() и endFrame" не понял где объявлять их. помогите пожалуйста.
Благодарю. А меню?
Там есть список
Здравствуйте, а где можно скачать TouchGFX, кроме официального сайта? Пробовал через vpn, не отправляет подтверждение на почту.
Здравствуйте, а почему не LVGL? TouchGFX вроде был платным, возможно раньше. LVGL может и под esp32, m5stack. Получается универсально под разные платформы бесплатно, а так только фреймворк для stm32
Странно, но он никогда не был платным, хотя я могу и ошибаться, ну и в случае TouchGFX интерфейс не имеет значения.
Извините. А LVGL платная или нет? Код там открытый? Вы совершенно правы - TouchGFX проприетарная библиотека и с бесплатной лицензией под STM контроллеры.
ЭсТэМы как всегда, в своём духе. Что в коде, что в справке. Всё отлично и понятно, только чтоб поиграться с виджетами. Но в прикладной задаче, чтоб изменить текст какого-нибудь лэйбла из мейн си - начинаешь с ума сходить, разбираясь во всех этих хитрых скрещиваниях Си и Сипп, как подступиться к этому всему с наружи. Сложно было методов написать?
Сколько бы я не долбался с этим 9341, какие бы библиотеки не брал, всегда он работал у меня тормознуто. То правда на ESP32. Может теперь соберусь с силами, попытаюсь еще раз.
Потому что через dma делать нужно, эта библиотека не поможет, нужно сам вывод оптимизировать. Через дма он заливается за 0.12секунды весь.
@@gt540gfx 0.12 сек это много. Я всерьез рассматриваю варианты только когда не видно глазом смену кадра.
Спасибо за ролик. Вопрос - сколько же памяти съедает буфер этой библиотеки? А если у меня экранчик 800*480 16 бит?
Так буфер вы сами задаете сколько есть столько и даете, а так сами посчитайте 800х480х2=768кбайт, это только серия h743 с внешней памятью. Но если экран подключен не по RGB то иметь полный буфер не нужно, 10-20 Кбайт достаточно
Устранил практически все ошибки компиляции, осталась одна, а именно "GUI_IAR.elf section `TouchGFX_Framebuffer' will not fit in region `RAM'". Что означает эта ошибка понятно, но в каком файле задается размер фреймбуфера найти не смог. В STemWin это файл GUIConf.c там по умолчанию этот размер 0x200000 то есть намного больше всей RAM процессора и при изменении на вменяемый размер ошибка overflowed уходит. Не подскажите в каком файле задается размер фреймбуфера в библиотеке TouchGFX. Спасибо.
Откройте файл проекта в CubeMX (файл *.ioc) и там укажите размер видеобуфера, чтобы влазил во внутренний RAM
Очень познавательно, GFX продвинулся в части совместимости с кейлом. Владимир ,может рассматривали в качестве альтернативы библиотеку lvgl? Использует си без плюсов + красиво портируется в кейл.
LVGL, на мой взгляд, интересна для использования с контроллерами NXP. А у ST, меня более чем устраивают официально поддерживаемые библиотеки
Без знания плюсов можно обойтись?
Ну хоть немного понимать как они работают необходимо.
Еще кое-что. Появился непонятный файл Videos.s и в нем непонятные 3 строчки, которые все ошибочны. Если можно, хотелось бы более подробное описание работы этой связки приложений. По началу казалось все просто, но когда сделал руками как в описании, оказалось есть вопросы, без решения которых ничего не работает. Вспомнил еще - почему Вы используете Keil, если логично использовать STM32CubeIde?
Как Вы и сказали - в STM32CubeIDE проект не собирается из-за ошибки в файле keil/videos.s. А вот в Keil все собирается как показано.
Очень хочу спросить, а откуда у вас мнение, что логично использовать именно CubeIDE? А почему, к примеру, не SeggerStudio?
Во первых, восхищаюсь Вашей плодовитостью по выпуску роликов. Спасибо за Ваш труд. Смотрю Вас уже давно, но этот ролик был для меня прям специально выпущен к сроку. На днях жду приезда из поднебесной дисплей на камне ILI9488. Пытаюсь подготовить проект для него, а тут Ваш ролик. Я думал, что логично использовать CubeIDE так как это его библиотека. Странно, что в ней не учтено, будет использоваться именно CubeIDE Я поставил библиотеку не просто на куб, а на CubeIDE и естественно создался проект именно там. Возможно я не прав. По мне так одно проистекает из другого. То есть в CubeIDE проект не будет работать? Откуда берется эта директория "Keil" и файл videos.s и зачем они нужны? Вы не разбирались случайно? А не пробовали сделать проект для IARa? Я на работе не по своей воле использую IAR, а дома для собственных нужд CubeIDE. Не хочется тратить время на освоение третьей IDE, тем более кое что про нее я тоже знаю. Использую тоже на работе для компиляции чужих проектов на SiLabs процах. Заранее спасибо.
CubeIDE, Keil uVision, TouchGFX это разные программные продукты. По этой причине выражения "это его библиотека" или "поставил библиотеку не просто на куб, а на CubeIDE" говорят, что вы не сильно разобрались с тем, как генерируются проекты. Ошибка с дирректорией и файлом video.s возникает только в том случае, если вы пытаетесь проект созданный для среды разработкиKeil uVision собрать в среде CubeIDE. На самом деле единственное, что требовалось это создать проект заново именно в той среде, в которой вы собираетесь работать и ошибок не возникнет.
@@VladimirMedintsev Понял Вас, но ведь я и создал проект там, где и работаю - в CubeIde. Библиотеку накатил туда, создал проект, открыл его, попробовал скомпелировать там же и получил ошибку. Что-то я сделал не так?
На сколько распухает откомпилированная прошивка и использование памяти при использовании этой библиотеки?
А смотря сколько и какой графики вы туда наберёте и какую оптимизацию включите
@@VladimirMedintsev Ну, это понятно. Допустим картинка с кнопкой как на 20:40.
@@GennPen десятью секундами ранее есть же консольное сообщение.
Program Size: Code=42746 RO-data= 239854 RW-data=412 ZI-data=8820, то есть FLASH - 282600 байт,а RAM - 9232 байт. Вот и сравните с пустым проектом.
@@olegp.3012 Нет, кнопка весит в 10 раз меньше. Это столько дает подгруженная картинка.
@@olegp.3012 Да, спасибо. Что то сразу не увидел.
А будет продолжение?
Да, рано или поздно продолжение будет, ну на самом деле все самое интересное по старту здесь показано, что и куда прописывать, а работа с элементами так хорошо описана в справке, что стыдно и пересказывать. Тяжелый всегда только старт.
Попробовал повторить проект на Nucleo-64-F446RE платкой TFT совместимой с Arduino shields. К сожелению видео не совсем совпадает с файлами проекта. Например получаю такую ошыбку : ../Core/Src/ili9341.c:354:20: error: 'SPI1_NSS_GPIO_Port' undeclared (first use in this function). Пока неразобрался, так как в видео об этом неговорится.
Этот вопрос относится не к видео, а к пониманию работы интерфейса SPI. Самое забавное что ответ кроется в сообщении об ошибке. У вас не определен вывод NSS, это контакт вашего дисплея. Так, что на видео кивать смысла нету. Необходимо разобраться с простыми понятиями, прежде чем столь сложные вещи делать.
Так видео для новичков делается? Нет? Я задействовал все пины по видео, включил SPI1, прерывания, DMA, CRC и т.д. точно по видео. Правда у мениа CubeIDE, но проект я создавал с нуля, смотря видео и пошагово делая. Просмотрел и проверил дважды. Скачал Ваш проект, взял библиотеки, доп. файлы. Из main.c взял всё что нужно (к стати, есть мелкие разногласия с видео, но да ладно, разобратся можно, там непринципияльно). Нога SPI1_NSS по умалчанию включая SPI1 незатрагиватеся, в видео это также. Включил принудительно, но код ошыбки тот же. Я расберусь, Google меня незабанил.
В видео нет таких понятий или я слепой:
#define SPI1_NSS_Pin GPIO_PIN_4
#define SPI1_NSS_GPIO_Port GPIOA
#define T_CS_Pin GPIO_PIN_15
#define T_CS_GPIO_Port GPIOE
Там есть RESET, DC, CS. Ну я у себя подправлю.
В видео есть момент, когда Вы определяете ножки но экран увеличен и не видно какие. Ето и было SPI1_NSS на PA4, дальше всё понятно.
Что то я не въехал по Гикбрейнс... Вы ведете у них какой то курс???
У меня там несколько больше чем курс. gb.ru/geek_university/internet-of-things
А я StemWin использую. Выходит, что напрасно? Раз есть такая библиотека? (что-то больше она мне понравилась по сравнению с StemWin)
StemWIn тоже весьма интересная графическая библиотека. Так что, думаю, не напрасно.
@@VladimirMedintsev Из Вашего короткого видеобзора:
1. На кнопках можно всякие иконки добавлять (да и сами кнопки гораздо круче). Также и цвет можно поменять. Всего этого в StemWin нет вообще, а если цвет и как-то можно скостылить, то просто так не получается там;
2. Намного (!) больше всяких других контроллов;
3. Непонятно правда как один из важнейших компонентов - 'GraphControl' работает тут. В StemWin с этим все нормально и четко.
Stemwin по своему хороша, первое чистый си , второе - дает массу возможностей при работе на низком уровне, и как по мне побыстрее будет однозначно (если делать анимацию различных объектов) в связке f429 + 800*480 2 слоя
@@cline2539 То что чистый Си - это хорошо когда только C компилятор/линкер собирает проект, а не мешанина C и C++, но с др. стороны возможностей C++ намного больше. Т.е. не все так однозначно. Остальные вещи надо сравнивать в реальном железе. А Вы сравнивали эти библиотеки у себя в железе?
Нет не напрасно, в stemwin ещё бы добавили редактор окон по аналогии с touchgfx - многие вещи облегчили в написании кода.
не выходит подключить st7789 240x240(((
С нынешними ценами на топовые stm, которые графику тянут, это так и останется теорией. Семисегменты Форева и ближайшее будущее
А что не так с нынешними ценами? Цена на 18.10.2021 на STM32F401CCU6 - 279.40 рублей. В наличии - около 3 тысяч штук. Что не так с ценами? Да, из-за кризиса некоторые микроконтроллеры стало тяжелее купить, но если не покупать в первом попавшемся месте, то что-то я не вижу огромных проблем.
В догонку STM32H742BIT6 (уж куда еще жирнее и мощнее) - на 18.10. цена - 955.94 рубля.
@Michael Art погоду, для примера, вы также на семисегментнике будете отображать? За конкретные графические библиотеки не скажу, но подобными дисплеями запросто управляют f103 камни. Приведу пару примеров:
- популярный dso138 (дисплей 2,4", программный 8 бит fsmc через ногодрыг );
- популярные программируемые dc-dc преобразователи от китайской компании Riden(какой дислей не знаю, в руках не держал, f103 камень).
@@VladimirMedintsev это где такое в наличии? STM32F401CCU6 в Промэлектронике нет
@@olegp.3012 К примеру немецкое промоборудывание за х лямов прекрасно на семисегментах работает)
I am still sad that there is no English for this. Having English will help the viewers & will also improve your channel. Please consider English. Please man.
The latest video has English subtitles
T o u c h G F X написан на С ++
Я знаю только язык С.
Будет ли это проблемой при использовании T o u c h G F X ?
Нет, не будет.
Доброго вечера Вам. Попробуйте Qt creator !
А чего его пробовать? Я с ним работаю.
@@VladimirMedintsev Насколько мне известного для Qt есть специальные дополненный инструментарий, который позволяет писать GUI для embedded system. И конечно в авангарде этого изобилия стоят контроллеры stm.
QT много чего позволяет, но официально такой поддержки нет. Здесь, в этом видео, показывается работа с официальной библиотекой.
Здравствуйте
А какой экран с тачем едет у вам?
Не знаю. Как приедет посмотрю.
@@VladimirMedintsev здравствуйте. Приехал?
Да, приехал ILI9341 быстры с тачскрином.
@@VladimirMedintsev А можете, пожалуйста, поделиться ссылкой на али, если к этому экрану есть готовые библиотеки?
a.aliexpress.com/_Asrfg4
Я так понимаю что выпуска с тачскрином не будет.
По TouchGFX точно видео не будет. Я нашел гораздо более хороший вариант который требует меньше ресурсов.
@@VladimirMedintsev Я тоже с ним мучаюсь. Всё выглядит на демонстрациях так мило и красиво а когда начинаешь делать реальные вещи то куча проблем. А какой вариант вместо него ?
Мне очень и очень понравилась LVGL.
Гораздо интереснее.
@@VladimirMedintsev а что вы скажете об SquareLine Studio ?
Чтобы увидеть скорость нужно было в цикле выводить 2 разные картинки или интерфейса, а так хрен знает сколько времени шла отрисовка, экран был отключен, буфер вввелся и экран включился. Явно отрисовка была скрыта.
Кто-нибудь знает, как сказать слово "функция" в уменьшительно-ласкательной форме?
фунЬкция
не благодарите
Как я понял, TouchGFX - это библиотека, которую непосредственно надо подключать в свой код и она будет заминать какое-то пространство во флэше. Когда мне надо было отрисовать свой интерфейс на дисплее, я использовал дисплеи фирмы Nextion. Вкратце, да, это не отдельная библиотека, но это отдельное устройство, со своим сенсорным экраном, со своим микроконтроллером, со своим eeprom. У них, так же, есть своя ide, где можно рисовать разные экраны.
Да ну и управлять по уарту? Это отстой все медленно не гибко. Это для ардуино подход.
Круче только tkinter python.)
После слов "сейчас я прервусь" происходит какая-то магия и эти 2 ошибки пропадают... Я определил необходимые функции точно, как в видео, но никак не могу избавиться от этих ошибок((
Прошу прощения, это моя глупость. Ночью до меня не дошло, что эти директивы не обернуты никакими условиями, а потому являются просто сообщениями пользователю)
@@alexandertemyakov8365 здравствуйте. Так их просто закомментировать надо? Или они всё таки сами должны анигилироваться при достижении их условия?
@@slavickolesnikov7036 здравствуйте. Да, я их просто закомментировал и продолжил дальше отлаживать программу. По логике, при перестроении проекта они должны снова появиться, но этого не произошло... А на каком этапе эти сообщения перестали меня беспокоить, я как-то упустил из виду. Сейчас у меня всё успешно работает.
Программа немного конченная. Автоматически предлагает установку на внешний юсб накопитель. А если я меняю путь установки на другой диск то пишет ошибка "в пути не может быть пробелов" и не устанавливается. А папку я создаю с английским названием прямо в корне диска. В любом месте кроме предложенного она не распаковывается. Реально ужас. Пришлось удалить весь проект и снова создать и тогда смог скопировать нужные файлы (уже в самом проекте).
Накидать кнопок и всякой бяки это одно, а взаимодействие с периферией.... ещё те танцы с бубном. Объединять Си и С++. Не доволен этой приблудой. При таких мощьностях графики такие убогие настройки и виджеты. Нет крутилки как в Appwizard. Неужели нельзя его было ввести?
EmWin кажется лучше по сравнению с этим убожеством, написано на Си, без всяких плюсов, более гибкие настройки.
Если есть возможность осветие EmWin и Appwizard, слишком мало информации.
Вы использовали в реальном железе EmWim? Или просто поверхностно сравнили? Если честно, то насчет "убожества" можно сказать прямо противоположно тут.
@@ajdarseidzade688 У меня есть ИК стол под управлением EMWIN. Достаточно? Сейчас занимаюсь освоением Segger AppWizard.
TouchGFX не настолько большая библиотека как LVGL.
Почему для LVGL в CubeMX нет поддержки(Фреймворк), а для TouchGFX есть поддержка в CubeMX?
LVGL ведь намного больше и лучше.
Я ещё ни одной библиотеки не использовал, выбираю сейчас библиотеку, которая лучше.
Может вы подскажете хорошую библиотеку для дисплеев?
В LVGL библиотеке есть поддержка Touch(сенсорных) дисплеев?
Кстати в CubeMX есть драйвер на дисплей ili9341 в разделе Middleware.
Чат ГПТ мне вывел такой рейтинг популярности графических библиотек для дисплеев:
STemWin, LittlevGL(Это наверное и есть LVGL), TouchGFX, emWin, GTK+
Меня почему то привлекает библиотека STemWin. Об этой библиотеке на сайте ST есть очень много информации в отличии от lvgl библиотеки.
По запросу STemWin на сайте ST выдаёт 6 страниц информации.
По библиотеке STSafe очень много информации на ST, но это библиотека для защиты от атак, то есть специализированная.
Чат ГПТ мне так ответил:
Исходя из моих данных и анализа мнений разработчиков, можно сказать, что библиотека TouchGFX более популярна среди разработчиков.
Количество публикаций и видео на тему TouchGFX на сайте ST действительно огромно в сравнении с другими библиотеками.
Ответ на ваш вопрос кроется в том, что lvgl это свободно распространяемый проект, а TouchGFX это детище STMicroelectronics. Что по вашему они будут продвигать и рекламировать? Ответ очевиден и без использования туповатого чат-бота.
Шикарно! Жду продолжения с нетерпением!