mn2=n 0 12 октября, 2021 Опубликовано 12 октября, 2021 · Жалоба Добрый день. Мне нужна консультация опытных парней и девушек по выбору и подключению tft дисплея. Передо мной возникла задача разработки устройства с tft дисплеем и WiFi, в качестве "сердца" должен быть STM32. С WiFi вообще вопросов нет, все работает как нужно, однако с tft дисплеем, что-то пошло не так. Сразу хочу подчеркнуть, что устройство нужно для моих личных нужд. Так вот, основные требования пока такие: 1. Устройство должно быть на одной плате, то есть модули дисплеев со своей платой не подходят. 2. Сенсорный TFT дисплей резистивный 7 дюймов. Пошарив digikey, я предварительно выбрал AFK800480A0-7.0N012NTM-R. Это резистивный сенсорный tft дисплей, 800x480, интерфейс PARALLEL, 24-BIT RGB, есть встроенный контроллер дисплея и сенсора hx8264+hx8664. Также я не планирую отображать на дисплее каких либо сложных анимаций, основная хотела это вывод текстовой информации. 3. Собственно STM32. На первый взгляд хотелось бы взять f429/f439 или что-то помощнее со встроенным драйвером tft. Однако дефицит stm32 и ограниченный бюджет обламывают меня на старте, и у меня в наличии есть STM32F405, поэтому хотелось бы использовать именно его. Мне не нужны готовые решения, я хочу разобраться в вопросе выбора и подключения дисплеев, чтобы при изменении контроллера или дисплея были знания как собрать устройство. Главные вопросы: 1. Как мне правильно рассуждать при выборе и контроллера и дисплея. 2. Какие интерфейсы лучше выбрать. 3. Дисплеи со встроенным драйвером или нет. Я прочел несколько статей плюс описание на ltdc от stm32, пошарил схемы отладок. И чем больше я читаю, тем больше я не понимаю. Например, схемы подключения дисплеев. Буду очень рад если поможете мне разобраться в данном вопросе. Заранее всем спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 13 октября, 2021 Опубликовано 13 октября, 2021 · Жалоба 3 часа назад, mn2=n сказал: Передо мной возникла задача разработки устройства с tft дисплеем и WiFi, в качестве "сердца" должен быть STM32. С WiFi вообще вопросов нет, все работает как нужно, однако с tft дисплеем, что-то пошло не так. Сразу хочу подчеркнуть, что устройство нужно для моих личных нужд. Сейчас вот рядом со мной работает моё личное устройство с LCD (320x240) и WiFi (ESP8266). Собрано на базе отладки 32F429IDISCOVERY. И Вам советую начинать с отладочной платы. Если нет опыта, то 1-й блин однозначно будет комом и придётся переделывать. А с отладкой - есть уверенность, что по-крайней мере железо рабочее. 3 часа назад, mn2=n сказал: 2. Какие интерфейсы лучше выбрать. Если нужен в основном текстовый вывод и нет динамики, то параллельный RGB - имхо избыточен (по занимаемым ногам). Хотя для такого разрешения (800x600) возможно уже и нет другой альтернативы. Схемы подключения можно подсмотреть на http://starterkit.ru. Там много отладочных плат и плат с LCD. И они там обычно со схемами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vasily_ 59 13 октября, 2021 Опубликовано 13 октября, 2021 · Жалоба 10 часов назад, mn2=n сказал: Сенсорный TFT дисплей резистивный 7 дюймов https://riverdi.com/product-category/intelligent-displays/bt817q/?yith_wcan=1&filter_size-inch=7-0&query_type_size-inch=or Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 190 13 октября, 2021 Опубликовано 13 октября, 2021 · Жалоба 12 часов назад, jcxz сказал: ...параллельный RGB - имхо избыточен (по занимаемым ногам)... Еще (если говорим про STM32) RGB-IF-экран подключается к LTDC, и лучше сразу предусмотреть внешнюю SDRAM. На отладке под F429 она, кстати, есть. Касательно F405... В нем LTDC нет, но есть FSMC. Поэтому лучше засматриваться на LCD со встроенным контроллером, который понимает, например, 6800/8080. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 60 13 октября, 2021 Опубликовано 13 октября, 2021 · Жалоба https://www.buydisplay.com/7-inch-lcd-module-capacitive-touch-screen-panel-i2c-spi-serial Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uriy 5 14 октября, 2021 Опубликовано 14 октября, 2021 · Жалоба mn2=n вы хотите использовать дисплей со встроенным контроллером и LTDC. Так не получится. Нужно либо дисплей без встроенного контроллера + LTDC либо дисплей со встроенным контроллером + FSMC или SPI или I2C или UART Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlanDrakes 1 15 октября, 2021 Опубликовано 15 октября, 2021 · Жалоба Собираю устройство на stm32f745 (повезло купить пока ещё были). RAM - встроенная, LCD на ILI9341 (впрочем, добавил поддержку других контроллеров с их определением и подбором функций вывода, но не суть) на DMA2D + FMC. Память упакованая A4 (L4 как хотите) - 16 цветов, 2 пиксела на байт. Внешний обвес - клавиатура на SPI + Flash (SPI) + uSD (SDIO) + MII (с управлением) + (UART) + некоторое количество периферии на ногодрыге и регистрах. Возомжно что-то забыл. Буфер экрана занимает 320*240/2 = 37,5кБ (38400 байт). Отрисовка - настройкой DMA2D (он же "ускоритель" Chrome-ART, впрочем, действительно ускоряет) с выводом в "память" (диапазон адресов FSMC, на котором висит дисплей). Скорость вывода ограничивается тиками таймера, но замеры дают порядка 60+Гц при частоте ядра 100+МГц. Ширина шины - 8 бит. Дисплей на шильде для Ардуины. (Тот самый, 2.4" с тачем). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 190 15 октября, 2021 Опубликовано 15 октября, 2021 · Жалоба 13 минут назад, AlanDrakes сказал: Буфер экрана занимает 320*240/2 = 37,5кБ (38400 байт)... У контроллера экрана своя память, насколько я знаю. Так что можно сократить требования к ОЗУ МК. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 15 октября, 2021 Опубликовано 15 октября, 2021 · Жалоба 2 часа назад, Arlleex сказал: У контроллера экрана своя память, насколько я знаю. Так что можно сократить требования к ОЗУ МК. Непрактично. Если рисовать что-то сложнее закрашенных прямоугольников, то придётся постоянно читать из ILI9341. А это кроме того что медленно (представьте что рисуете звезду во весь экран или текст с наложением на весь экран - нужно почти всю видео-ОЗУ считать; а по чтению у ILI9341 скорость заявлена ещё и ниже чем по записи), так и не факт что получится: когда я запускал свой драйвер ILI9341, у меня так и не получилось ничего прочитать из него (хотя давно это было и глубоко не разбирался - может что я сам накосячил - не особо нужно было; но в сети тогда встречал много сообщений, что у людей тоже на запись он работал, а на чтение - ни в какую). В простых случаях, когда заведомо известно, что не нужна будет отрисовка с наложением на произвольный фон - конечно можно обойтись без видеобуфера в ОЗУ МК. Но часто - заранее трудно предугадать что потребуется в дальнейшем от устройства. PS: Впрочем - перечитал сообщение AlanDrakes внимательнее: он похоже ILI9341 подключает по параллельной шине, а не по SPI (как у меня). Тогда с чтением возможно будет легче. Но имхо - всё равно быстрее во внутренней памяти буфер держать, если больших проблем со свободной памятью нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 60 15 октября, 2021 Опубликовано 15 октября, 2021 · Жалоба 57 minutes ago, jcxz said: Но имхо Имхо у каждого своё и зависит от требований. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlanDrakes 1 18 октября, 2021 Опубликовано 18 октября, 2021 · Жалоба 15.10.2021 в 12:44, Arlleex сказал: У контроллера экрана своя память, насколько я знаю. Так что можно сократить требования к ОЗУ МК. Верно. Но в процессе отрисовки картинка может выводиться на панель в неготовом виде. И это не очень красиво. В случае же наличия буфера - можно сначала сгенерировать всё изображение, а затем отправить его на экран целиком и не ловить "ломаные" кадры, или мерцание, когда чтобы вывести новые данные, нужно стереть старые, затем (например), построить сетку (по пикселам), и после этого набросать тот же график. Крайне сложная задача. 15.10.2021 в 15:08, jcxz сказал: PS: Впрочем - перечитал сообщение AlanDrakes внимательнее: он похоже ILI9341 подключает по параллельной шине, а не по SPI (как у меня). С SPI - со скоростью грустно. Да и те шильды, что мне попадались, используют параллельную шину. Кстати, к mn2=n 13.10.2021 в 03:09, mn2=n сказал: Однако дефицит stm32 и ограниченный бюджет обламывают меня на старте Посмотрите в сторону Allwinner'ов. Я себе заказал на пробу F1C200s. Да, эта дура скорее всего будет ЖРАТЬ как ни в себя. Да, у него всё печально с динамическим изменением тактовой частоты, но(!) у него аппаратная поддержка разных экранов (в том числе, с шиной i80, RGB (тупо данные пикселей)), имеется немного периферии - USART,SPI,ADC,DAC,SDIO,USB(HS) цена на них - 200-300 рублей (с доставкой - 400-500) за штуку, плюс встроенные 32(F1C100s) или 64(F1C200s) Мегабайта оперативной памяти. К сожалению, DDR, так что игры с тактовой частотой как я мог бы это делать на STM32, и экономией тока, немного не удастся :( Ну и требует он минимум три разных питания для работы вместо общего 3.3В, что напрягает больше всего. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 18 октября, 2021 Опубликовано 18 октября, 2021 · Жалоба 2 часа назад, AlanDrakes сказал: В случае же наличия буфера - можно сначала сгенерировать всё изображение, а затем отправить его на экран целиком и не ловить "ломаные" кадры, или мерцание, когда чтобы вывести новые данные, нужно стереть старые, затем (например), построить сетку (по пикселам), и после этого набросать тот же график. Крайне сложная задача. Вообще-то для этого необходимо, чтобы была возможность синхронизации с развёрткой экрана. Иначе никакой буфер в ОЗУ не поможет. Есть ли она в ILI9341? Не знаю... 2 часа назад, AlanDrakes сказал: С SPI - со скоростью грустно. Да и те шильды, что мне попадались, используют параллельную шину. Не знаю - зашёл на али, набрал в поиске "spi lcd touch ili9341" вывалило кучу ссылок, типа: https://aliexpress.ru/item/1005001692474185.html https://aliexpress.ru/item/1005003120684423.html PS: Цены что-то на них сильно поднялись... негуманно как-то... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlanDrakes 1 21 октября, 2021 Опубликовано 21 октября, 2021 · Жалоба 18.10.2021 в 16:01, jcxz сказал: Есть ли она в ILI9341? Не знаю... Нет. Вообще, технически, есть. Имеется и вывод TE (Tearing Effect) и даже команда Get Scan Line (0x45), только работает для вертикальной ориентации, если расположить экран горизонтально, то обновление будет идти, допустим, слева-направо. Так что толку от этого не будет. Потому заполняю экран через DMA - более-менее успевает уложиться в кадр. Но только на большой частоте ядра 100+МГц. Вторая ссылка - неплохой вариант. Хотя мне не нравится скорость на посдедовательном интерфейсе. :( Но вообще, экран неплохой. А цены взвинтили страшно. Помнится, я брал подобные: https://aliexpress.ru/item/1005001839488050.html Попадается ili9341, Renesas R61580, ili9340 (по какой-то причине не пожелал работать), ili9325 (не получилось написать нормальный драйвер на него, какой-то он весёлый) и нечто с ID = 0x1620, который заработал как Renesas. Весёлый шильд, в общем :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 21 октября, 2021 Опубликовано 21 октября, 2021 · Жалоба 1 час назад, AlanDrakes сказал: Потому заполняю экран через DMA - более-менее успевает уложиться в кадр. А какая разница - успевает или нет? Если у вас вывод не синхронизирован с развёрткой, то с DMA или без - без разницы: развёртка обгоняет вывод, или наоборот - вывод развертку - получите и в том и в другом случае при каждом обновлении на экране склейку из двух кадров - нового и старого. А от того как идёт обновление, будет только меняться расположение границы эти двух частей. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 22 октября, 2021 Опубликовано 22 октября, 2021 · Жалоба сложно как-то. То интерфейс параллельный, то ОЗУ сотни килобайт. Я бы предложил SPI интерфейс. На ютубе много роликов, можно увидеть какую мультипликацию делают через SPI. Я, правда, QVGA имею в виду. Кстати: реально ли нужно ли такое разрешение, обычно QVGA уже хватает, особенно если текст (иначе очень мелкий получается). Я тож SPI гоняю, правда через DMA (загоняю сразу множество точек) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться