|
|
  |
32F769IDISCOVERY + MIPI DSI 720p (1280x720)?, Не получается подключить разрешение 720p |
|
|
|
Sep 13 2017, 07:28
|

Частый гость
 
Группа: Свой
Сообщений: 185
Регистрация: 25-02-09
Из: Россия
Пользователь №: 45 369

|
Не у кого нет опыта реализации разрешения 720p (1280x720) на плате 32f769 Discovery через MIPI DSI. В описании упоминается что МК в состоянии вывести 720p через DSI, но по факту ни чего не выходит. Для тестирования разрешений использую переходник DSI to HDMI от ST. Ситуация ещё омрачается тем что нет полного описания на чип adv7533 используемый в переходнике. В Общем буду благодарен за любую помощь.
|
|
|
|
|
Sep 13 2017, 10:40
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(Sanya_kv @ Sep 13 2017, 10:28)  В описании упоминается что МК в состоянии вывести 720p через DSI, но по факту ни чего не выходит. Ну, как говорят, на заборе много что написано... Сколько бит на пиксель выводите, если 24, то посчитайте при таком разрешении, битности и частоте кадров, на сколь это все грузит довольно медленную память, и прослезитесь....
|
|
|
|
|
Sep 20 2017, 01:30
|
Участник

Группа: Участник
Сообщений: 66
Регистрация: 15-04-10
Из: Kiev
Пользователь №: 56 654

|
Цитата(Sanya_kv @ Sep 13 2017, 09:28)  Не у кого нет опыта реализации разрешения 720p (1280x720) на плате 32f769 Discovery через MIPI DSI. В описании упоминается что МК в состоянии вывести 720p через DSI, но по факту ни чего не выходит. Для тестирования разрешений использую переходник DSI to HDMI от ST. Ситуация ещё омрачается тем что нет полного описания на чип adv7533 используемый в переходнике. В Общем буду благодарен за любую помощь. а с меньшим разрешением выходит?
|
|
|
|
|
Sep 22 2017, 13:01
|

Частый гость
 
Группа: Свой
Сообщений: 185
Регистрация: 25-02-09
Из: Россия
Пользователь №: 45 369

|
Цитата(golf2109 @ Sep 20 2017, 05:30)  а с меньшим разрешением выходит? Завелась на 1024х768 32 бит / 50Гц. Переключить adv7533 на 16 бит пока не как не получается, не могу вычислить нужную конфигурацию регистров. В планах подключить переходник на базе sn65dsi83 и выводить картинку через lvdc в разрешении 1200х800. В AN4861 пишут при 16 бит и 30 Гц можно получить разрешение 1920 x1080.
|
|
|
|
|
Sep 22 2017, 14:33
|

Частый гость
 
Группа: Свой
Сообщений: 185
Регистрация: 25-02-09
Из: Россия
Пользователь №: 45 369

|
Цитата(Genadi Zawidowski @ Sep 22 2017, 17:30)  О! как перключить MIPI-DSI процессора в режим LVDS (FlatLink на sn65dsi83 ) ? Пока ни чего не могу сказать, переходник в процессе изготовления.
|
|
|
|
|
Sep 24 2017, 17:09
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(Genadi Zawidowski @ Sep 22 2017, 21:12)  Перепутал... Вопрос вообще ко всем - можно ли процессор обучить формату, что принимает SN75LVDS82DGG - TI называет это FlatLink "Смешались в кучу кони, люди"... Вы как вообще себе это представляете?? Это все равно, что сказать, как HDMI выход контроллера напрямую подключить к LVDS матрице DSI - Это совсем другой протокол, хоть и "ходит" по LVDS линиям. Цитата(Sanya_kv @ Sep 22 2017, 16:01)  Завелась на 1024х768 32 бит / 50Гц. Поздравляю! А теперь попробуйте, в режиме работы дисплея "покидать" скажем, 3-5МБ с помощью DMA...
|
|
|
|
|
Sep 25 2017, 11:08
|

Частый гость
 
Группа: Свой
Сообщений: 185
Регистрация: 25-02-09
Из: Россия
Пользователь №: 45 369

|
Цитата(mantech @ Sep 24 2017, 21:09)  Поздравляю! А теперь попробуйте, в режиме работы дисплея "покидать" скажем, 3-5МБ с помощью DMA... При слое 16 бит (RGB565) с двойной буферизацией, вроде все красиво. Или я что-то делаю не так. Судя по ответу у Вас есть опыт использования данного контроллера. Не хотите поделиться.
|
|
|
|
|
Sep 25 2017, 12:10
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(Sanya_kv @ Sep 25 2017, 14:08)  При слое 16 бит (RGB565) с двойной буферизацией, вроде все красиво. Или я что-то делаю не так. Судя по ответу у Вас есть опыт использования данного контроллера. Не хотите поделиться. Опыт есть, но не этого конкретно, был двухядерник LPC, номер уже не помню, сдрам 32 бита, пытался "выжать" 32 бит ARGB8888 1024х768, и таки выжал, но "шаг вправо, шаг влево" любое другое занятие памяти (копирование картинок) приводило к срыву синхры на дисплее. После этого понял, что такие параметры только на МК с ДДР2(3) памятью. ЗЫ. В вашем случае (16 бит), и в однослойном режиме может и "прокатит".
Сообщение отредактировал mantech - Sep 25 2017, 12:11
|
|
|
|
|
Sep 25 2017, 14:29
|

Частый гость
 
Группа: Свой
Сообщений: 185
Регистрация: 25-02-09
Из: Россия
Пользователь №: 45 369

|
Цитата(mantech @ Sep 25 2017, 16:10)  Опыт есть, но не этого конкретно, был двухядерник LPC, номер уже не помню, сдрам 32 бита, пытался "выжать" 32 бит ARGB8888 1024х768, и таки выжал, но "шаг вправо, шаг влево" любое другое занятие памяти (копирование картинок) приводило к срыву синхры на дисплее. После этого понял, что такие параметры только на МК с ДДР2(3) памятью.
ЗЫ. В вашем случае (16 бит), и в однослойном режиме может и "прокатит". Делал картинку на lpc1788 16 бит sdram и 16бит на цвет при разрешении 800х480. На сколько я помню пришлось повозиться с приоритетами прежде чем заработало как хочется. Проект закрыл года 3-4 назад. Получилось даже очень хорошо. В итоге на этой платформе было реализовано несколько проектов. У STM, DSI может работать в командном режиме для дисплеев со своим контроллером. В этом случае картинка копируется только при необходимости обновления. Нужно только подходящий дисплей с найти. Сейчас параллельно подыскиваю такой.
|
|
|
|
|
Sep 26 2017, 06:43
|

Частый гость
 
Группа: Свой
Сообщений: 185
Регистрация: 25-02-09
Из: Россия
Пользователь №: 45 369

|
Цитата(Огурцов @ Sep 26 2017, 00:43)  поставить второй чип sdram, не ? Шина то одна. Цитата(mantech @ Sep 25 2017, 21:55)  Как найдете, киньте сюда посмотреть, я год назад искал, и ничего, кроме мелких экранциков для телефона не нашел. Как вариант innolux В разрешении WXGA на 7", 8" и 10". Либо что-нибудь от сюда или отсюда
|
|
|
|
|
Sep 30 2017, 03:41
|
Участник

Группа: Участник
Сообщений: 66
Регистрация: 15-04-10
Из: Kiev
Пользователь №: 56 654

|
кстати RGB565 очень некачественно воспроизводит цвета по сравнению с ARGB888 я вот сейчас переделываю проект из за этого заказчику очень не понравились цвета в RGB565
|
|
|
|
|
Oct 1 2017, 05:53
|

Частый гость
 
Группа: Свой
Сообщений: 185
Регистрация: 25-02-09
Из: Россия
Пользователь №: 45 369

|
Цитата(golf2109 @ Sep 30 2017, 07:41)  кстати RGB565 очень некачественно воспроизводит цвета по сравнению с ARGB888 Цвета воспроизводятся одинаково, только в случае RGB565 их меньше, 64к против 16м. Для вывода графики может это и критично. Для вывода пользовательского интерфейса, абсолютно нет. Можете потестить это на своем мониторе
(Скриншот сделан в режиме 16бит. )
|
|
|
|
|
Oct 2 2017, 09:23
|

Частый гость
 
Группа: Свой
Сообщений: 185
Регистрация: 25-02-09
Из: Россия
Пользователь №: 45 369

|
Цитата(mantech @ Sep 30 2017, 19:21)  Дык, как бы очевидно, 16бит на пиксель против 32х. Только на стм 24бита цвет плюс альфа-канал прокатит макс. на 640х480... В исходниках к плате 32F769IDISCOVERY, есть пример использования платы в разрешении 800x480 в режиме ARGB8888 (24 бита с альфа каналом). Уверен что плата также заработает в этом режиме с разрешением 1024х768. Согласен с вами что для вывода качественной графики имеет смысл использовать что-нибудь посущественнее и с разрешением хотя бы Full HD. Хотя и с STM при использовании "командного режима" можно добиться этих характеристик. К сожалению найти дисплей с поддержкой этого режима мне пока не удалось.
|
|
|
|
|
Oct 2 2017, 11:29
|

Частый гость
 
Группа: Свой
Сообщений: 185
Регистрация: 25-02-09
Из: Россия
Пользователь №: 45 369

|
Цитата(Огурцов @ Oct 2 2017, 15:16)  даже если индексный 8 бит Кстати, отличное решение, можно существенно сэкономить ресурсы. СПАСИБО за подсказку!!!. Обязательно опробую этот вариант.
|
|
|
|
|
Oct 3 2017, 07:49
|
Участник

Группа: Участник
Сообщений: 66
Регистрация: 15-04-10
Из: Kiev
Пользователь №: 56 654

|
Цитата(mantech @ Sep 30 2017, 17:21)  Дык, как бы очевидно, 16бит на пиксель против 32х. Только на стм 24бита цвет плюс альфа-канал прокатит макс. на 640х480... гы...у меня "катит" ARGB888 (32bit) при разрешении 800x480 - что я делаю не так ?
|
|
|
|
|
Oct 4 2017, 07:12
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(mantech @ Oct 3 2017, 17:50)  На МХ6 и не магазин, а автомат на подобии кофе-машины. На контроллере сделан весь функционал аппарата, кроме расширителя каналов силового управления.
По началу думал, что можно и на стм перекинуть, удешевить, так сказать, но потом понял что слабоват он для данной задачи... я бы разделил задачи, слишком разные - функции управления на stm, а гуй под линуксом, на любой, пусть даже полностью закрытой железке
|
|
|
|
|
Oct 4 2017, 07:35
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(Огурцов @ Oct 4 2017, 10:12)  я бы разделил задачи, слишком разные - функции управления на stm, а гуй под линуксом, на любой, пусть даже полностью закрытой железке Сначала думал так же, но это влечет ряд проблем, во первых, это несколько различных программ, которые требуют обновления клиентом, а это, при учете, что клиенты могут только пополнять расходники и с техникой многие не знакомы вообще - очень проблематично. Во вторых, если в стм программа, как правило, не портится от времени, то линуксы на сд карте, уже проблема, т.к. если с карта выйдет из строя, клиенту придется все восстановить самостоятельно, а это не просто даже для меня. Выбрал компромиссное решение - вся программа в одном месте, на сд карте в виде скриптов, которые крутятся на вирт. машине контроллера МХ6. Если что-то происходит с картой, клиент покупает новую, просто переписывает несколько файлов из архива на нее и вставляет в аппарат - все! Карта работает с фат32, т.ч. форматировать ничего не нужно, копировать можно на любом ПК.
|
|
|
|
|
Oct 4 2017, 15:27
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(Огурцов @ Oct 4 2017, 12:24)  что там обновлять в линуксе ? зачем в нём какие-то программы ? копировать флешку можно каким-нибудь акронисом а stm должна обновляться сама, по команде юзера Да много чего, например, дизайн изменился, функционал блока управления(это тот, который с тачпанелью и экраном), как юзеры будут это делать, когда даже винду толком на старых аппаратах переустановить не могли? а stm должна обновляться сама, по команде юзера - это как? Юзер сначала должен залить куда-то новую прошивку, которая по команде блока управления должна будет обновиться в стм, так что-ли? Причем, если во время обновления что-то зависло или отключилось питание, потом все автоматом восстановилось... И зачем мне весь этот гемор, если все с одной карточки уже работает
|
|
|
|
|
Oct 4 2017, 19:44
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(Огурцов @ Oct 4 2017, 21:04)  в смысле, вам на самом деле нужен какой-то мой совет или вы просто спорите ? вообще, для юзера я бы сделал какую-то волшебную кнопку или ключ для загрузки через интернет, а юзерские данные, исключительно, положил на sd-карту Зачем мне спорить, я уже выбрал вариант, который самый удобный для юзеров, что до этого разговора - просто проконстатировал, что для меня стм на данном этапе развития, слабоват и только. ЗЫ. Инет для обновления стараюсь использовать в крайнем случае - далеко не у всех юзеров аппараты подключены к нему и обязывать их подключать не считаю нужным.
|
|
|
|
|
Oct 5 2017, 04:28
|
Участник

Группа: Участник
Сообщений: 66
Регистрация: 15-04-10
Из: Kiev
Пользователь №: 56 654

|
Цитата(Огурцов @ Oct 4 2017, 21:59)  просто топик про stm, а к stm гораздо проще добавить внешний контроллер lcd или контроллер с линуксом, нежели переползать на очередной недокамень нет инета - тогда sd-карта какой то оксюморон сами говорите, что тема о STM32, и сами же предлагаете другие контроллеры
|
|
|
|
|
Oct 5 2017, 05:57
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(golf2109 @ Oct 5 2017, 04:28)  какой то оксюморон сами говорите, что тема о STM32, и сами же предлагаете другие контроллеры не знаю, что у вас за юморон, но я предлагаю, как не уходить на другие мк, но расширить возможности stm я например хочу 1080p, как это сделать на stm без дополнительного расширения ? и вообще, странно, что такого ещё никто не сделал
|
|
|
|
|
Oct 6 2017, 00:24
|
Участник

Группа: Участник
Сообщений: 66
Регистрация: 15-04-10
Из: Kiev
Пользователь №: 56 654

|
Цитата(Огурцов @ Oct 5 2017, 07:57)  не знаю, что у вас за юморон, но я предлагаю, как не уходить на другие мк, но расширить возможности stm я например хочу 1080p, как это сделать на stm без дополнительного расширения ? и вообще, странно, что такого ещё никто не сделал оксюморон - сочетание противоречащих друг другу понятий подробнее в вики... а насчет 1080 читаем первоисточники http://www.st.com/content/ccc/resource/tec....DM00287603.pdfстр. 39 а "не сделал" - значит нет потребности и кроме того, попробуйте найти дисплей 1080 с RGB интерфейсом
|
|
|
|
|
Oct 6 2017, 07:01
|

Частый гость
 
Группа: Свой
Сообщений: 185
Регистрация: 25-02-09
Из: Россия
Пользователь №: 45 369

|
Цитата(golf2109 @ Oct 6 2017, 04:24)  и кроме того, попробуйте найти дисплей 1080 с RGB интерфейсом Там есть MIPI DSI интерфейс. К нему уже найти дисплей без особых проблем. Ни кто не баловался с DMA2D. Не получается залить картинку цветом с прозрачностью в режиме RGB565. Пытаюсь сделать эффект затемнения за диалоговым окном на одном слое. С двумя слоями работает без проблем при разрешении 1024x768. Но мне нужно в разрешении 1280х800, а там тянет только 1 слой.
|
|
|
|
|
Oct 6 2017, 07:50
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(golf2109 @ Oct 6 2017, 00:24)  оксюморон - сочетание противоречащих друг другу понятий вы не поняли один юморон, и я не удивлён, что вы не поняли и другой Цитата(golf2109 @ Oct 6 2017, 00:24)  а насчет 1080 читаем первоисточники что именно в первоисточнике ? 30 кадров 8 бит ? Цитата(golf2109 @ Oct 6 2017, 00:24)  а "не сделал" - значит нет потребности действительно, кому такая порнуха нужна мой коллега сделал примерно такое, хоть скорее и не по его вине, но тоже, через одно место поэтому реального практического смысла у него тоже не получилось Цитата(golf2109 @ Oct 6 2017, 00:24)  и кроме того, попробуйте найти дисплей 1080 с RGB интерфейсом в том вам и вопрос, а зачем ?
|
|
|
|
|
Oct 6 2017, 08:16
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(Огурцов @ Oct 5 2017, 08:57)  я например хочу 1080p, как это сделать на stm без дополнительного расширения ? и вообще, странно, что такого ещё никто не сделал В таблице ясно написано, что такое разрешение только на 1 слое и в 16битах, при 32х битной сдрам, что тут может быть непонятного, если достаточно таких параметров - должно работать... Почему не делают, по себе скажу, что кроме собственно отрисовки картинки с таким разрешением, ее еще нужно как-то подготовить, а в случае анимированных - еще и обеспечить скорость распаковки-обновления, а с этим такие МК не справляются однозначно..
|
|
|
|
|
Oct 6 2017, 09:19
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(mantech @ Oct 6 2017, 08:16)  В таблице ясно написано, что такое разрешение только на 1 слое и в 16битах, при 32х битной сдрам, что тут может быть непонятного, если достаточно таких параметров - должно работать...
Почему не делают, по себе скажу, что кроме собственно отрисовки картинки с таким разрешением, ее еще нужно как-то подготовить, а в случае анимированных - еще и обеспечить скорость распаковки-обновления, а с этим такие МК не справляются однозначно.. недостаточно, нужно 24 бита, или 32 - для удобства вот пусть stm (да хоть avr) и занимается подготовкой и распаковкой и что совсем прекрасно - в асинхронном режиме а отрисовкой пусть занимается внешний, по отношению к stm, контроллер lcd - не понятно, что тут непонятно
|
|
|
|
|
Oct 6 2017, 10:28
|

Частый гость
 
Группа: Свой
Сообщений: 185
Регистрация: 25-02-09
Из: Россия
Пользователь №: 45 369

|
Цитата(Шаманъ @ Oct 6 2017, 13:59)  В чем именно проблема, напишите подробнее? У меня такой вариант работает без проблем. Да и почти вся графика работает через DMA2D. Скажите, в своём проекте Вы RGB565 режим используете? Пытался делать заливку цветом в формате ARGB8888, как оказалось для режима RGB565 он выкидывает alpha канал в функции DMA2D_SetConfig. Понял что не так делал. Сейчас пытаюсь разобраться как это сделать правильно.
|
|
|
|
|
Oct 6 2017, 13:40
|
Знающий
   
Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839

|
Цитата(Sanya_kv @ Oct 6 2017, 13:28)  Скажите, в своём проекте Вы RGB565 режим используете? Я разные режимы использую, но фреймбуфер в RGB565. Цитата Пытался делать заливку цветом в формате ARGB8888, как оказалось для режима RGB565 он выкидывает alpha канал в функции DMA2D_SetConfig. Что такое SetConfig я не знаю - STMовскими либами не пользуюсь. Чтобы сделать то, что Вы хотите Вам нужно сконфигурировать DMA2D для полной обработки (режим Memory-to-memory with blending, см. описание регистра DMA2D->CR). Далее в качестве переднего плана указать формат цвета А8, с заменой альфа канала на указанное Вами значение, установить регистр DMA2D->FGCOLR в требуемый цвет, в качестве заднего плана нужно использовать тот же кусок фреймбуфера куда будете рисовать. Тогда у Вас будет прочитано исходное изображение произведен блендинг с указанным Вами цветом переднего плана и прозрачностью, и результат записан обратно. В Reference Manual DMA2D блок достаточно хорошо описан - там нет ничего сложного. Надеюсь Вы поняли меня  Цитата(Огурцов @ Oct 6 2017, 15:05)  а dma2d может работать со статической памятью и с отключенным ltdc ? Да, это независимый блок. Может и с внутренней и со статической, читать из флеша может и т.д.
|
|
|
|
|
Oct 9 2017, 14:52
|

Частый гость
 
Группа: Свой
Сообщений: 185
Регистрация: 25-02-09
Из: Россия
Пользователь №: 45 369

|
Цитата(Шаманъ @ Oct 6 2017, 17:40)  Чтобы сделать то, что Вы хотите Вам нужно сконфигурировать DMA2D для полной обработки (режим Memory-to-memory with blending, см. описание регистра DMA2D->CR). Далее в качестве переднего плана указать формат цвета А8, с заменой альфа канала на указанное Вами значение, установить регистр DMA2D->FGCOLR в требуемый цвет, в качестве заднего плана нужно использовать тот же кусок фреймбуфера куда будете рисовать.
Тогда у Вас будет прочитано исходное изображение произведен блендинг с указанным Вами цветом переднего плана и прозрачностью, и результат записан обратно. В Reference Manual DMA2D блок достаточно хорошо описан - там нет ничего сложного. Сделал как вы рекомендовали, все завилось с пол пинка. Попутно избавился от СТМовских библиотек в LTDC и DMA2D, лишнего там ... . Ещё раз благодарю "Шаманъ" за помощь . Неизвестно сколько мне одному пришлось разбираться. По началу банально не был уверен в позитивном результате. На будущие, может кому пригодится, примерный набросок рабочей функции заливки области цветом с прозрачностью. CODE //=============== Заполнить буфер цветом с коэффициентом прозрачности ======== void LCD_DRV_LL_FillBufferAlphaColor(uint32_t BufferAddr, uint32_t xSize, uint32_t ySize, uint32_t OffLine, uint32_t OutputColorMode, uint32_t ColorRGB888, uint8_t Alpha) { // Копирование с замешиванием MODIFY_REG(DMA2D->CR, DMA2D_CR_MODE, DMA2D_M2M_BLEND); //Конфигурация переднего плана DMA2D->FGPFCCR = (DMA2D_FGPFCCR_CM & DMA2D_INPUT_A8)// Формат цвета |(DMA2D_FGPFCCR_AM & (1 << DMA2D_FGPFCCR_AM_Pos))//Замена альфа канала |(DMA2D_FGPFCCR_ALPHA & (Alpha << DMA2D_FGPFCCR_ALPHA_Pos));//Алфа канал DMA2D->FGCOLR = ColorRGB888; DMA2D->FGMAR = BufferAddr; DMA2D->FGOR = OffLine; //Конфигурация заднего плана DMA2D->BGPFCCR = DMA2D_BGPFCCR_CM & OutputColorMode;// Формат цвета
DMA2D->BGMAR = BufferAddr; DMA2D->BGOR = OffLine; //Выходной буфер // Формат цвета DMA2D->OPFCCR = DMA2D_OPFCCR_CM & OutputColorMode;
DMA2D->OMAR = BufferAddr;//адрес буфера для заполнения DMA2D->OOR = OffLine; // установка смещения (xSize + OffLine = LayerXSize)
// установка количества пикселей на линию и количество линий DMA2D->NLR = (DMA2D_NLR_NL|DMA2D_NLR_PL) & (ySize| (xSize << DMA2D_NLR_PL_Pos)); //Запуск DMA2D->CR |= DMA2D_CR_START; if((DMA2D->CR & DMA2D_CR_START) != RESET) { uint32_t tickstart = HAL_GetTick(); __IO uint32_t DMA2D_ISR; uint32_t ErrorCode; //Ожидаем конца выполнения рисования while(((DMA2D_ISR = DMA2D->ISR) & DMA2D_FLAG_TC) == RESET) { if ((DMA2D_ISR & (DMA2D_FLAG_CE|DMA2D_FLAG_TE)) != RESET) {//Ошибка if ((DMA2D_ISR & DMA2D_FLAG_CE) != RESET) { ErrorCode |= HAL_DMA2D_ERROR_CE; } if ((DMA2D_ISR & DMA2D_FLAG_TE) != RESET) { ErrorCode |= HAL_DMA2D_ERROR_TE; }
DMA2D->IFCR = DMA2D_FLAG_TC | DMA2D_FLAG_CTC; return;//произошла ошибка } if((HAL_GetTick() - tickstart ) > DMA2D_TIMEOUT) {//Вышло время ожидания DMA2D->CR |= DMA2D_CR_ABORT;// DMA2D->IFCR = DMA2D_FLAG_TC | DMA2D_FLAG_CTC; return; } } } DMA2D->IFCR = DMA2D_FLAG_TC|DMA2D_FLAG_CTC; }
|
|
|
|
|
Oct 23 2017, 13:37
|

Частый гость
 
Группа: Свой
Сообщений: 185
Регистрация: 25-02-09
Из: Россия
Пользователь №: 45 369

|
Цитата(Огурцов @ Oct 23 2017, 06:40)  ещё вопрос: есть мысли как подключить к stm второй дисплей ? с разными картинками, конечно Можно. Только если у второго дисплея будет свой графический контроллер.
|
|
|
|
|
Oct 23 2017, 14:23
|
Знающий
   
Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839

|
Цитата(Огурцов @ Oct 23 2017, 05:40)  ещё вопрос: есть мысли как подключить к stm второй дисплей ? с разными картинками, конечно Кроме варианта озвученного выше можно сильно извратиться и подключить пару одинаковых дисплеев (безконтроллерных) так, что каждая "четная" точка будет отображаться на первом, а каждая "нечетная" на втором, думаю все догадались как это сделать (да, потребуется немного внешней логики). Естественно возможны и вариации на тему (типа два дисплея с 12-ти битным цветом, тут хватит возможностей самого МК, внешняя логика не потребуется) и т.д. Только в чем смысл?
|
|
|
|
|
Oct 23 2017, 15:36
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(Шаманъ @ Oct 23 2017, 15:23)  каждая "четная" точка а dma2d по отдельности чётные-нечётные получится рисовать ? Цитата(Шаманъ @ Oct 23 2017, 15:23)  12-ти битным цветом вообще не вариант Цитата(Шаманъ @ Oct 23 2017, 15:23)  Только в чем смысл? странный вопрос
|
|
|
|
|
Oct 25 2017, 12:28
|
Знающий
   
Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839

|
Цитата(Огурцов @ Oct 23 2017, 18:36)  а dma2d по отдельности чётные-нечётные получится рисовать ? И да, и нет. В общем случае не позволяет, но некоторые вещи ускорить можно. Например, можно нарисовать горизонтальную линию, но не прямоугольник. Можно рисовать в буфер за пределами экрана с помощью DMA2D, потом им же можно перенести все в основной буфер одной операцией с учетом "шагания через одну точку". В таком варианте будет полноценное использование DMA2D. Цитата странный вопрос Ну я бы в случае если мне нужно было бы пару полноценных дисплеев поискал бы что-то другое (в первую очередь с бОльшей пропускной способностью подсистемы памяти), а если нужно маленький экранчик, так сказать в дополнение, так полно мелких дисплеев со своим контроллером.
|
|
|
|
|
Oct 25 2017, 12:51
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Шаманъ @ Oct 25 2017, 15:28)  Можно рисовать в буфер за пределами экрана с помощью DMA2D, потом им же можно перенести все в основной буфер одной операцией с учетом "шагания через одну точку". В таком варианте будет полноценное использование DMA2D. А в чём выигрыш от рисования в видеобуфере с помощью DMA2D? Чем оно лучше чисто процессорного рисования? В моём текущем проекте на STM32F4 отрисовка в видеобуфер делается процессором. Имеет ли смысл как-то задействовать сюда DMA2D? Видеобуфер у меня просто во внутренней памяти МК, без привязки к железу. Наиболее частые операции у меня: Рисование разных шрифтов с наложением OR поверх другого изображения (однотонного) с отсечением по границам экрана или по границам произвольной прямоугольной области. И рисование закрашенных прямоугольников. Тоже с отсечением. И разными цветами. 16 цветов.
|
|
|
|
|
Oct 25 2017, 16:13
|
Знающий
   
Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839

|
Цитата(jcxz @ Oct 25 2017, 15:51)  А в чём выигрыш от рисования в видеобуфере с помощью DMA2D? Чем оно лучше чисто процессорного рисования? На многих операциях через DMA2D быстрее, а даже если не быстрее рисование выполняется параллельно с работой ЦП. Т.е. нагрузка на ЦП уменьшается в любом случае (ну конечно если не выводить через DMA2D по одной точке  ). Цитата В моём текущем проекте на STM32F4 отрисовка в видеобуфер делается процессором. Имеет ли смысл как-то задействовать сюда DMA2D? Зависит от того, что рисуется и чем Вас не устраивает нынешний вариант. В общем случае с DMA2D должно получиться более быстрое рисование и разгрузка процессора - если это интересно, то используйте DMA2D. Я почти все делаю через DMA2D.Рисование через DMA2D было всегда быстрее, за исключением одной очень специфической операции (которая в итоге была реализована напрямую) - с ней разницы по времени не было, но напрямую было проще. Цитата Наиболее частые операции у меня: Рисование разных шрифтов с наложением OR поверх другого изображения (однотонного) с отсечением по границам экрана или по границам произвольной прямоугольной области. И рисование закрашенных прямоугольников. Тоже с отсечением. И разными цветами. 16 цветов. Это все можно легко сделать через DMA2D. На маленьком дисплее, правда выигрыш будет наверное не очень большой.
Сообщение отредактировал Шаманъ - Oct 25 2017, 16:17
|
|
|
|
|
Oct 25 2017, 23:15
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(aaarrr @ Oct 25 2017, 13:42)  Лучше добавить немного логики, и сделать side by side если добавлять, то можно добавить много, просто не понятно, как сделать side by side на логике ? вот если бы горизонтальное поле дисплей позволял увеличить в пару раз, тогда да или то же самое по вертикали но не позволяет Цитата(Шаманъ @ Oct 25 2017, 13:28)  можно нарисовать горизонтальную линию, но не прямоугольник можете привести пример ? или какое поле нужно заполнить в структуре DMA2D_InitTypeDef чтобы нарисовать горизонтальную линию точками ?
|
|
|
|
|
Oct 25 2017, 23:31
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(mantech @ Oct 23 2017, 18:37)  есть другие мк с соотв. возможностями. stm32 - хороший вариант микроконтроллера, одновременно с производительностью первых пентиумов, на которые никто вообще-то не жаловался вплоть до 1280x1024 Цитата(aaarrr @ Oct 26 2017, 00:17)  Маскировать CLK и DE на половину строки, если допуск по частоте CLK дисплея позволяет. вот первый попавшийся дисплей https://www.waveshare.com/w/upload/4/44/4.3...-UserManual.pdf605 vs 480 или 399 vs 272 - ни в то, ни в то второй дисплей не входит Цитата(aaarrr @ Oct 26 2017, 00:17)  Если нет, тогда "много логики" - буфер на строку. это как раз понятно
Сообщение отредактировал Огурцов - Oct 25 2017, 23:33
|
|
|
|
|
Oct 25 2017, 23:40
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(Огурцов @ Oct 26 2017, 02:31)  605 vs 480 или 399 vs 272 - ни в то, ни в то второй дисплей не входит Цитата Маскировать CLK и DE на половину строки Цитата(Огурцов @ Oct 26 2017, 02:31)  stm32 - хороший вариант микроконтроллера, одновременно с производительностью первых пентиумов, на которые никто вообще-то не жаловался вплоть до 1280x1024 В те блаженные времена никто особо не жаловался на отсутствие альфа-канала, скоростной анимации на весь экран и прочих современных must have плюшек.
|
|
|
|
|
Oct 25 2017, 23:54
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата Маскировать CLK и DE на половину строки не, а такое прокатит ? в смысле прерывать подачу клока Цитата(aaarrr @ Oct 26 2017, 00:40)  В те блаженные времена никто особо не жаловался на отсутствие альфа-канала, скоростной анимации на весь экран и прочих современных must have плюшек. и кто придумал этот must have ? если даже spi в качестве интерфейса не гнушаются предлагать
Сообщение отредактировал Огурцов - Oct 25 2017, 23:56
|
|
|
|
|
Oct 25 2017, 23:59
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(Огурцов @ Oct 26 2017, 02:54)  не, а такое прокатит ? А что, кто-то запрещает? Цитата(Огурцов @ Oct 26 2017, 02:54)  и кто придумал этот must have ? если даже spi не гнушаются предлагать Так требования рынка. 256 цветов могут долго существовать только в условиях плановой экономики. SPI для всякой ерунды типа 128x64.
|
|
|
|
|
Oct 26 2017, 00:26
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(aaarrr @ Oct 26 2017, 00:59)  А что, кто-то запрещает? привычка, для тв-сигнала не приемлемо Цитата(aaarrr @ Oct 26 2017, 00:59)  256 цветов я не говорил про 256 цветов, а про 24 бита говорил прозрачность как бы не сильно нужна, но она требуется для выравнивания размера пикселя на 4 байта
Сообщение отредактировал Огурцов - Oct 26 2017, 00:29
|
|
|
|
|
Oct 26 2017, 05:51
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(aaarrr @ Oct 26 2017, 02:59)  SPI для всякой ерунды типа 128x64. Хм... у меня сейчас вполне себе нормально работает LCD по SPI на 320x240x16bpp. 3D-шутеры на нём показывать не надо. Вся динамическая информация отображается вполне бодро: всякие счётчики (текстовые отображения меняющихся чисел) на экране бегут очень даже шустро. Конечно, если бы в этом LCD (и МК) был quad-SPI (или LCD по интерфейсу поддерживал бы режимы с меньшей разрядностью цвета) - было бы вообще за глаза. На quad-SPI и в 2 раза больший экран нормально пойдёт. Цитата(aaarrr @ Oct 26 2017, 04:32)  Вот 480x272, пожалуй, еще как-то можно окучивать STM. А выше забираться я бы не стал. По какому интерфейсу? Параллельному? По параллельному STM32 должен много больше нормально обслуживать. Ну если руки конечно прямые У меня сейчас работает проектик: По SPI идёт 320x240x16bpp на SCLK=40МГц, параллельно этот же CPU декодирует MP3 на 320кб/c, парсит поток с ESP8266 (WiFi) и ещё много чего успевает. На экране в это время бегут несколько быстро меняющихся счётчиков, процедура отрисовки пока построена неоптимально - при каждом изменении видеобуфер стирается полностью, потом строится новый кадр заново (затем отправляется на LCD) - поэтому при любой модификации на экране контроллеру LCD отправляются все пикселы 320x240. При всём при этом загрузка процессора составляет ~55%. И частота МК не максимальная == 160МГц. И измерено это на исходнике скомпилённом с Low оптимизацией (IAR) выполняющемся из RAM/SDRAM. Если-б этот МК (и контроллер ILI9341) имели dual- или quad-SPI была-бы вообще красота.
|
|
|
|
|
Oct 26 2017, 06:51
|
Знающий
   
Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839

|
Цитата(aaarrr @ Oct 26 2017, 02:40)  В те блаженные времена никто особо не жаловался на отсутствие альфа-канала, скоростной анимации на весь экран и прочих современных must have плюшек. Цитата(aaarrr @ Oct 26 2017, 04:32)  Вот 480x272, пожалуй, еще как-то можно окучивать STM. А выше забираться я бы не стал. У меня на экране 800х480х16бит крутится можно сказать анимация почти на весь экран с несколькими слоями прозрачности. Перерисовка всего кадра занимает от 10 до 30мс при одновременном выводе с частотой кадров около 29к/с. Загрузка процессора при этом от 5 до 14% (процессор параллельно занят разными своими делами - вычислениями БПФ, фильтрацией сигнала, обслуживанием подключенных к нему устройств, USB, запись/чтение с SD карты и т.д). Наверное я что-то делаю не так, но меня полностью устраивает в этом плане stm32 Как по мне, то 800х480х16бит без проблем вообще, 1024х600х16бит наверное рубеж, для большего нужно как минимум перейти на 32битную SDRAM либо на другую платформу. Цитата(Огурцов @ Oct 26 2017, 02:15)  можете привести пример ? Все просто - в регистр смещения до следующей линии (OOR/BGOR) записываете смещение до следующей точки/штриха от окончания нарисованного элемента, размер по горизонтали устанавливаете равным длине штриха (или в 1 если точки рисуете), кол-во линий (размер по вертикали) равным кол-ву точек/штрихов в линии, вот собственно и все. Например, линия 3 точки рисуем, потом 5 точек пропускаем, общая длина 80 точек: Код int m = 3; //Кол-во точек которые рисуем int s = 5; //Кол-во точек которые пропускаем int l = 80; //Длина линии DMA2D->OOR = s; DMA2D->NLR = DMA2D_NLR_PL_0 * m + DMA2D_NLR_NL_0 * (l/(m+s)); Остальное инициализируете, как обычно при рисовании, например, прямоугольника. Если нужна прозрачность, то регистр BGOR инициализируете так же, как OOR. Код DMA2D->BGOR = s; Цитата или какое поле нужно заполнить в структуре DMA2D_InitTypeDef чтобы нарисовать горизонтальную линию точками ? HALом не пользуюсь, поэтому что там в структурах надо инициализировать не подскажу.
|
|
|
|
|
Oct 26 2017, 09:16
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(Шаманъ @ Oct 26 2017, 06:51)  DMA2D->OOR = s; DMA2D->NLR = DMA2D_NLR_PL_0 * m + DMA2D_NLR_NL_0 * (l/(m+s)); ок, надо перевести на нормальный язык а почему так нельзя рисовать прямоугольники ? вроде самое оно, если ширина регистра позволяет Цитата(Шаманъ @ Oct 26 2017, 06:51)  HALом не пользуюсь я тоже олл, почему дисплей подёргивается, когда dma2d работает ? т.е. картинка как бы сдвигается в сторону это синхра слетает или что, или это нормально, куда копать ? Цитата(aaarrr @ Oct 26 2017, 01:32)  Вот 480x272, пожалуй, еще как-то можно окучивать STM. А выше забираться я бы не стал. 800x600 считается нормально, т.е. 2x640x480 обязано работать а больше вроде бы как и не надо т.е. надо, но уже как-то иначе и это будет уже совсем другая история
Сообщение отредактировал Огурцов - Oct 26 2017, 09:21
|
|
|
|
|
Oct 26 2017, 09:19
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(jcxz @ Oct 26 2017, 08:51)  По SPI идёт 320x240x16bpp на SCLK=40МГц... 320 * 240 * 16 / 40M = 30.72 мс = 32.55 к/с Цитата(Шаманъ @ Oct 26 2017, 09:51)  Перерисовка всего кадра занимает от 10 до 30мс при одновременном выводе с частотой кадров около 29 к/с. Ну вот, а у нормального UI перерисовка не должна занимать больше 16 мс (т.е. обеспечивать 60 к/с), иначе плавной анимации не будет по определению. Да, TFT-экран, конечно, надо обслуживать с частотой 60, а не 30. Даташит позволяет, но пользователей тоже надо уважать.
|
|
|
|
|
Oct 26 2017, 10:21
|

Частый гость
 
Группа: Свой
Сообщений: 185
Регистрация: 25-02-09
Из: Россия
Пользователь №: 45 369

|
Цитата(Шаманъ @ Oct 25 2017, 16:28)  Например, можно нарисовать горизонтальную линию, но не прямоугольник. Прямоугольник рисовать можно, Пример: Цитата(Sanya_kv @ Oct 9 2017, 18:52)  CODE void LCD_DRV_DrawFillRectAlpha(uint32_t LayerAddr, uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint32_t ColorRGB888, uint8_t Alpha) { if (y0 > y1) { uint16_t bak; bak = y1; y1 = y0; y0 = bak; } if (x0 > x1) { uint16_t bak; bak = x1; x1 = x0; x0 = bak; } uint16_t Width = x1 - x0; uint16_t Height = y1 - y0; #if (LCD_PIXEL_BYTES == 2) uint32_t Xaddress = LayerAddr + 2*(LCD_DRV_GetXSize()*y0 + x0); #else uint32_t Xaddress = LayerAddr + 4*(LCD_DRV_GetXSize()*y0 + x0); #endif LCD_DRV_LL_DMA2D_FillBufferAlphaColor(Xaddress, Width, Height, (LCD_DRV_GetXSize() - Width), DMA2D_OUTPUT_RGB565, ColorRGB888, Alpha, true); } //=============== Заполнить область цветом с коэффициентом прозрачности ======== void LCD_DRV_LL_DMA2D_FillBufferAlphaColor(uint32_t BufferAddr, uint32_t xSize, uint32_t ySize, uint32_t OffLine, uint32_t OutputColorMode, uint32_t ColorRGB888, uint8_t Alpha, uint8_t wait) { LCD_DRV_DMA2D_WaitEND();//Дождаться конца выполнения предыдущего вывода // Замешивание MODIFY_REG(DMA2D->CR, DMA2D_CR_MODE, DMA2D_M2M_BLEND); //Конфигурация переднего плана DMA2D->FGPFCCR = (DMA2D_FGPFCCR_CM & DMA2D_INPUT_A8)// Формат цвета |(DMA2D_FGPFCCR_AM & (1 << DMA2D_FGPFCCR_AM_Pos))//Замена альфа канала |(DMA2D_FGPFCCR_ALPHA & (Alpha << DMA2D_FGPFCCR_ALPHA_Pos));//Алфа канал DMA2D->FGCOLR = ColorRGB888; DMA2D->FGMAR = BufferAddr; DMA2D->FGOR = OffLine; //Конфигурация заднего плана DMA2D->BGPFCCR = DMA2D_BGPFCCR_CM & OutputColorMode;// Формат цвета
DMA2D->BGMAR = BufferAddr; DMA2D->BGOR = OffLine; //Выходной буфер // Формат цвета DMA2D->OPFCCR = DMA2D_OPFCCR_CM & OutputColorMode; DMA2D->OMAR = BufferAddr;//адрес буфера для заполнения DMA2D->OOR = OffLine; // установка смещения (xSize + OffLine = LayerXSize)
// установка количества пикселей на линию и количество линий DMA2D->NLR = (DMA2D_NLR_NL|DMA2D_NLR_PL) & (ySize| (xSize << DMA2D_NLR_PL_Pos)); //Запуск DMA2D->CR |= DMA2D_CR_START; if(wait)LCD_DRV_DMA2D_WaitEND(); }
|
|
|
|
|
Oct 26 2017, 10:27
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(aaarrr @ Oct 26 2017, 12:19)  Ну вот, а у нормального UI перерисовка не должна занимать больше 16 мс (т.е. обеспечивать 60 к/с), иначе плавной анимации не будет по определению. Да, TFT-экран, конечно, надо обслуживать с частотой 60, а не 30. Даташит позволяет, но пользователей тоже надо уважать. У меня в UI есть бегущие строки - на глаз бегут вполне плавно. Так что FPS==30Гц - вполне ок. Тащить 8+ проводов только на LCD - сильно накладно. В планах есть модификация всего алгоритма отрисовки UI (чтобы при изменении одного элемента только он перерисовывался, а не весь экран). Это позволит пересылать на LCD не весь экран, а только минимальный прямоугольник, охватывающий изменения (ILI9341 позволяет и моя граф.либа позволяет) и поднять средний FPS. Но потребуется сильно усложнить весь алгоритм отрисовки UI. Не уверен, что это усложнение реально нужно.
|
|
|
|
|
Oct 26 2017, 10:31
|

Частый гость
 
Группа: Свой
Сообщений: 185
Регистрация: 25-02-09
Из: Россия
Пользователь №: 45 369

|
Цитата(Огурцов @ Oct 26 2017, 13:16)  олл, почему дисплей подёргивается, когда dma2d работает ? т.е. картинка как бы сдвигается в сторону это синхра слетает или что, или это нормально, куда копать ? Причин может быть 2: Либо у Вас высокая частота вывода, медленная память, 16 бит память. Или Вы выводите картинку и рисуете её в одном буфере. На 32 битной памяти (в 32F769IDISCOVERY) без проблем выводится разрешение 1280х800 RGB565 1 слой 42 гц. С помощью DMA2d вывожу анимацию частотой 42 гц. После того как разобрался с DMA2d, во втором слое не вижу необходимости.
|
|
|
|
|
Oct 26 2017, 11:19
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(Sanya_kv @ Oct 26 2017, 11:31)  Или Вы выводите картинку и рисуете её в одном буфере. да, в одном, а какая разница, где я её рисую ? если бы она просто мерцала на месте перерисовки, я бы даже не спрашивал, но она куда-то улетает - каков механизм этого ? Цитата(aaarrr @ Oct 26 2017, 11:54)  ИМХО, когда дело касается UI, нельзя идти на компромиссы вся электроника - это сплошные компромиссы
Сообщение отредактировал Огурцов - Oct 26 2017, 11:20
|
|
|
|
|
Oct 26 2017, 11:21
|

Частый гость
 
Группа: Свой
Сообщений: 185
Регистрация: 25-02-09
Из: Россия
Пользователь №: 45 369

|
Цитата(Огурцов @ Oct 26 2017, 15:19)  да, в одном, а какая разница, где я её рисую ? если бы она просто мерцала, я бы даже не спрашивал, но она куда-то улетает - каков механизм этого ? Попробуйте понизить частоту вывода.
|
|
|
|
|
Oct 26 2017, 12:30
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(jcxz @ Oct 26 2017, 15:22)  У меня скорость бегущих строк намного ниже чем по этой ссылке. Речь не о скорости, а о плавности. Цитата(jcxz @ Oct 26 2017, 15:22)  На бегущих счётчиках тоже не видно никаких артефактов, дёрганий и т.п. Не видно ровно до тех пор, пока рядом не окажется счетчика с 60 FPS. 30 - это практически нижняя граница комфортного восприятия движения.
|
|
|
|
|
Oct 26 2017, 14:16
|

Частый гость
 
Группа: Свой
Сообщений: 185
Регистрация: 25-02-09
Из: Россия
Пользователь №: 45 369

|
Цитата(Obam @ Oct 26 2017, 17:46)  Кино - 24 fps и ничего, никно не жужжит… или это не те fps? В кино каждый кадр в отдельности смазан. Тема эта достаточно обширна, описана боле менее здесь https://habrahabr.ru/post/338796/ (раскрывается в комментариях). На хабаре так же есть статья, как сделать нормальную анимацию с низким FPS. Найти сейчас не смог. Читал пару лет назад.
|
|
|
|
|
Oct 26 2017, 15:31
|
Знающий
   
Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839

|
Цитата(Огурцов @ Oct 26 2017, 12:16)  а почему так нельзя рисовать прямоугольники ? вроде самое оно, если ширина регистра позволяет Обычный прямоугольник можно, но вопрос был про "рисование через одну точку" - так уже прямоугольник не выйдет. Цитата олл, почему дисплей подёргивается, когда dma2d работает ? т.е. картинка как бы сдвигается в сторону Не хватает производительности подсистемы памяти. Цитата(aaarrr @ Oct 26 2017, 12:19)  Ну вот, а у нормального UI перерисовка не должна занимать больше 16 мс (т.е. обеспечивать 60 к/с), иначе плавной анимации не будет по определению. Да, TFT-экран, конечно, надо обслуживать с частотой 60, а не 30. Даташит позволяет, но пользователей тоже надо уважать. У меня все плавно. Я как-то по этому поводу проводил эксперименты - если делать с умом, то начиная от 22..24fps все можно сделать, чтобы выглядело плавно. Посмотрите с каким fps Вы смотрите фильмы, и ничего не дергается... В любом случае есть хороший запас - у меня память 16бит, ожно перейти на 32бита, но под мою задачу смысла нет. Цитата(Sanya_kv @ Oct 26 2017, 13:21)  Прямоугольник рисовать можно, Пример: Это будет обычный прямоугольник, а вопрос был про через одну точку, так не выйдет.
|
|
|
|
|
Oct 28 2017, 07:46
|

Частый гость
 
Группа: Свой
Сообщений: 185
Регистрация: 25-02-09
Из: Россия
Пользователь №: 45 369

|
Цитата(Огурцов @ Oct 23 2017, 06:40)  ещё вопрос: есть мысли как подключить к stm второй дисплей ? с разными картинками, конечно Побаловался с MIPI DSI в командном режиме. Идея его в том, что на индикаторе используется графический контроллер со своей GRAM памятью (например OTM8009A), передача данных происходит при необходимости изменения картинки. Соответственно к DSI шине вполне возможно подключить несколько индикаторов. "Шаманъ" Случайно не проверяли, что быстрее копирует DMA2D или просто DMA. Имеется в виду режим MemToMem
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|