Перейти к содержанию
    

Разработка устройства с tft дисплеем

Добрый день. Мне нужна консультация опытных парней и девушек по выбору и подключению 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, пошарил схемы отладок. И чем больше я читаю, тем больше я не понимаю. Например, схемы подключения дисплеев. 

Буду очень рад если поможете мне разобраться в данном вопросе. Заранее всем спасибо

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, mn2=n сказал:

Передо мной возникла задача разработки устройства с tft дисплеем и WiFi, в качестве "сердца" должен быть STM32. С WiFi вообще вопросов нет, все работает как нужно, однако с tft дисплеем, что-то пошло не так. Сразу хочу подчеркнуть, что устройство нужно для моих личных нужд.

Сейчас вот рядом со мной работает моё личное устройство с LCD (320x240) и WiFi (ESP8266). Собрано на базе отладки 32F429IDISCOVERY.

И Вам советую начинать с отладочной платы. Если нет опыта, то 1-й блин однозначно будет комом и придётся переделывать. А с отладкой - есть уверенность, что по-крайней мере железо рабочее.

3 часа назад, mn2=n сказал:

2. Какие интерфейсы лучше выбрать.

Если нужен в основном текстовый вывод и нет динамики, то параллельный RGB - имхо избыточен (по занимаемым ногам). Хотя для такого разрешения (800x600) возможно уже и нет другой альтернативы.

Схемы подключения можно подсмотреть на http://starterkit.ru. Там много отладочных плат и плат с LCD. И они там обычно со схемами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 часов назад, jcxz сказал:

...параллельный RGB - имхо избыточен (по занимаемым ногам)...

Еще (если говорим про STM32) RGB-IF-экран подключается к LTDC, и лучше сразу предусмотреть внешнюю SDRAM. На отладке под F429 она, кстати, есть.

Касательно F405... В нем LTDC нет, но есть FSMC. Поэтому лучше засматриваться на LCD со встроенным контроллером, который понимает, например, 6800/8080.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

mn2=n вы хотите использовать дисплей со встроенным контроллером и LTDC. Так не получится. Нужно либо дисплей без встроенного контроллера + LTDC либо дисплей со встроенным контроллером + FSMC или SPI или I2C или UART

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Собираю устройство на 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" с тачем).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 минут назад, AlanDrakes сказал:

Буфер экрана занимает 320*240/2 = 37,5кБ (38400 байт)...

У контроллера экрана своя память, насколько я знаю. Так что можно сократить требования к ОЗУ МК.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, Arlleex сказал:

У контроллера экрана своя память, насколько я знаю. Так что можно сократить требования к ОЗУ МК.

Непрактично. Если рисовать что-то сложнее закрашенных прямоугольников, то придётся постоянно читать из ILI9341. А это кроме того что медленно (представьте что рисуете звезду во весь экран или текст с наложением на весь экран - нужно почти всю видео-ОЗУ считать; а по чтению у ILI9341 скорость заявлена ещё и ниже чем по записи), так и не факт что получится: когда я запускал свой драйвер ILI9341, у меня так и не получилось ничего прочитать из него (хотя давно это было и глубоко не разбирался - может что я сам накосячил - не особо нужно было; но в сети тогда встречал много сообщений, что у людей тоже на запись он работал, а на чтение - ни в какую).

В простых случаях, когда заведомо известно, что не нужна будет отрисовка с наложением на произвольный фон - конечно можно обойтись без видеобуфера в ОЗУ МК. Но часто - заранее трудно предугадать что потребуется в дальнейшем от устройства.

 

PS: Впрочем - перечитал сообщение AlanDrakes внимательнее: он похоже ILI9341 подключает по параллельной шине, а не по SPI (как у меня). Тогда с чтением возможно будет легче. Но имхо - всё равно быстрее во внутренней памяти буфер держать, если больших проблем со свободной памятью нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

57 minutes ago, jcxz said:

Но имхо

Имхо у каждого своё и зависит от требований.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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В, что напрягает больше всего.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, AlanDrakes сказал:

В случае же наличия буфера - можно сначала сгенерировать всё изображение, а затем отправить его на экран целиком и не ловить "ломаные" кадры, или мерцание, когда чтобы вывести новые данные, нужно стереть старые, затем (например), построить сетку (по пикселам), и после этого набросать тот же график. Крайне сложная задача.

Вообще-то для этого необходимо, чтобы была возможность синхронизации с развёрткой экрана. Иначе никакой буфер в ОЗУ не поможет. Есть ли она в ILI9341? Не знаю...

2 часа назад, AlanDrakes сказал:

С SPI - со скоростью грустно. Да и те шильды, что мне попадались, используют параллельную шину.

Не знаю - зашёл на али, набрал в поиске "spi lcd touch ili9341" вывалило кучу ссылок, типа:

https://aliexpress.ru/item/1005001692474185.html

https://aliexpress.ru/item/1005003120684423.html

 

PS: Цены что-то на них сильно поднялись... негуманно как-то... :sad:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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. Весёлый шильд, в общем :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, AlanDrakes сказал:

Потому заполняю экран через DMA - более-менее успевает уложиться в кадр.

А какая разница - успевает или нет? Если у вас вывод не синхронизирован с развёрткой, то с DMA или без - без разницы: развёртка обгоняет вывод, или наоборот - вывод развертку - получите и в том и в другом случае при каждом обновлении на экране склейку из двух кадров - нового и старого.

А от того как идёт обновление, будет только меняться расположение границы эти двух частей.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сложно как-то. То интерфейс параллельный, то ОЗУ сотни килобайт.

Я бы предложил SPI интерфейс. На ютубе много роликов, можно увидеть какую мультипликацию делают через SPI. Я, правда, QVGA имею в виду.

Кстати: реально ли нужно ли такое разрешение, обычно QVGA уже хватает, особенно если текст (иначе очень мелкий получается).

Я тож SPI гоняю, правда через DMA (загоняю сразу множество точек)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...