Jump to content

    

STM32F429 Discovery / uGFX

Провожу эксперименты на Дискавери 429 . Использую uGFX, при работе с родным LCD все устраивает. Но хочется большего. Подключил внешний LCD 800х480. Очень заметно мерцание. Повысил в два раза частотту тактирования интерфейса LTDC процессора. Мерцание снизилось до приемлемого, но при перерисовке ГУИ появились серьезные артефакты. Далее действовал методом научного тыка, а именно запретил UGFX использовать DMA2D, было интересно узнать насколько все ухудшится. Но, странно, артефакты пропали, хотя скорость перерисовки заметно снизилас. Во всех случаях RGB565 и максимальный уровень оптимизации.

Edited by nanorobot

Share this post


Link to post
Share on other sites
Но, странно, артефакты пропали, хотя скорость перерисовки заметно снизилас.

 

А что тут странного-то?? Там узкое место скорость памяти, снизили загрузку шины, уменьшилась скорость отрисовки и стало стабильнее изображение - все логично :laughing:

Share this post


Link to post
Share on other sites
А что тут странного-то?? Там узкое место скорость памяти, снизили загрузку шины, уменьшилась скорость отрисовки и стало стабильнее изображение - все логично :laughing:

 

 

Если свою плату делать с 32 битовой SDRAM то можно ожидать удовлетворительной работы с разрешением 800х480? Или сразу смотреть в сторону STM32F7xx/ STM32H7xx ?

Share this post


Link to post
Share on other sites
Если свою плату делать с 32 битовой SDRAM то можно ожидать удовлетворительной работы с разрешением 800х480? Или сразу смотреть в сторону STM32F7xx/ STM32H7xx ?

 

И что вы там увидите? Правильно, ту же сд-рам :biggrin:

 

32бита это максимум, как можно увеличить скорость, дальше только контроллеры с ДДР, но это уже не к СТМу...

Share this post


Link to post
Share on other sites

Некоторые делают двойной буфер кадра, чтобы не мерцало.

Share this post


Link to post
Share on other sites
Если свою плату делать с 32 битовой SDRAM то можно ожидать удовлетворительной работы с разрешением 800х480? Или сразу смотреть в сторону STM32F7xx/ STM32H7xx ?

с разрешением 800х480, ... смотреть только в сторону старших армов с DDR3/4, под линуксами и там где есть нормальный GUI и тп.

C STM32H7xx не все алё.

Share this post


Link to post
Share on other sites
Некоторые делают двойной буфер кадра, чтобы не мерцало.

 

Тут не в буферах дело, а пропускной способности шины памяти. Если только отрисовка и работает нормально, то при одновременной интенсивной записи уже идет просадка по скорости и вылезают артефакты.

Share this post


Link to post
Share on other sites
с разрешением 800х480, ... смотреть только в сторону старших армов с DDR3/4, под линуксами и там где есть нормальный GUI и тп.

C STM32H7xx не все алё.

Не горячитесь вы так. Если кино не надо показывать, то и не нужны все эти старшие.

Статическую картинку кто угодно отрисует. Главное, чтобы совсем уж не тормозило. А от мерцания - двойной буфер в помощь.

 

Тут не в буферах дело, а пропускной способности шины памяти. Если только отрисовка и работает нормально, то при одновременной интенсивной записи уже идет просадка по скорости и вылезают артефакты.

Ну как бы надо соотносить желания и возможности, наверное. Кстати, а темп прорисовки контролировать не вариант?

Share this post


Link to post
Share on other sites

Как было уже озвучено - все упирается в пропускную способность шины.

И никакая двойная буферизация не поможет - даже статичная картинка все равно вычитывается из памяти и отрисовывается с отображением прямо на пиксели.

Я поднимал частоту и делал другой формат: не RGB888, а ARGB565. Никаких мерцаний на дисплее 800x480.

Share this post


Link to post
Share on other sites
Как было уже озвучено - все упирается в пропускную способность шины.

И никакая двойная буферизация не поможет - даже статичная картинка все равно вычитывается из памяти и отрисовывается с отображением прямо на пиксели.

Я поднимал частоту и делал другой формат: не RGB888, а ARGB565. Никаких мерцаний на дисплее 800x480.

 

Картинка близка к статичной, таблицы, менюшки, текстовые поля. Формат у меня тоже 565б Я бы готов и и 8 битный CLUT использовать, но, насколько я понимаю, в этом случае придется попрощаться со сглаживанием шрифтов, что меня не устраивает.

И да, проблема не в мерцании, оно лечится повышением частоты, а в возникающих при этом повышении артефактах.

Edited by nanorobot

Share this post


Link to post
Share on other sites

Ну покажите артефакты тогда. У меня артефакты были при некачественом питании SDRAM.

Share this post


Link to post
Share on other sites
Ну покажите артефакты тогда. У меня артефакты были при некачественом питании SDRAM.

Если только завтра. Все дела на работе, а я уже дома. Пока могу описать словами. Артефакты очень серьезные. при перемещении курсора - выделенной цветом строки по таблице, рваное изображение этой же таблицы мелькает в стороне от нее. Как то так. В принципе при отключении DMA2D все почти приемлемо, но оставляет неприятное впечатление начальное прорисовывание экрана, сравнительно медленное. Тем более что картинка пока осталась от прежнего LCD 320x240, после того как я переделаю ее на весь 800х480 это станет еще более заметным

Edited by nanorobot

Share this post


Link to post
Share on other sites
Если только завтра. Все дела на работе, а я уже дома. Пока могу описать словами. Артефакты очень серьезные. при перемещении курсора - выделенной цветом строки по таблице, рваное изображение этой же таблицы мелькает в стороне от нее. Как то так. В принципе при отключении DMA2D все почти приемлемо, но оставляет неприятное впечатление начальное прорисовывание экрана, сравнительно медленное. Тем более что картинка пока осталась от прежнего LCD 320x240, после того как я переделаю ее на весь 800х480 это станет еще более заметным

 

У меня подобное было, когда кэш был неправильно настроен, но в данном МК его нет, поэтому странно, как-будто что-то с таймингами.

Share this post


Link to post
Share on other sites
Некоторые делают двойной буфер кадра, чтобы не мерцало.

 

двойной буфер кадра не чтоб не мерцало, а чтоб не было артефактов? То есть имеем две копии экранов, перерисовываем в теневом, а потом переключаем? Интересно, uGFX поддерживает такую технику? Ухожу читать...

Edited by nanorobot

Share this post


Link to post
Share on other sites
двойной буфер кадра не чтоб не мерцало, а чтоб не было артефактов? То есть имеем две копии экранов, перерисовываем в теневом, а потом переключаем? Интересно, uGFX поддерживает такую технику? Ухожу читать...

Двойной буфер, чтобы не раздражала медленная прорисовка. Если артефакты от затыка на шине, двойной буфер не в тему - второй буфер на той же шине, что и первый.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this