реклама на сайте
подробности

 
 
8 страниц V  « < 4 5 6 7 8 >  
Reply to this topicStart new topic
> LTDC + ChromART в STM, Проконсультируйте, кто работал.
SpyBot
сообщение Apr 16 2016, 12:12
Сообщение #76


Местный
***

Группа: Свой
Сообщений: 285
Регистрация: 5-11-05
Пользователь №: 10 491



Нет, ну внутренней... Внутренней хватает всего на 320х240. А хочется Размаха! sm.gif 1024х768 и несколько буферов.
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Apr 16 2016, 14:47
Сообщение #77


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



на 720*575 хватает
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Apr 16 2016, 18:09
Сообщение #78


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(Огурцов @ Apr 16 2016, 10:14) *
а сколько надо ? внутренней уже вполне хватает на кое-что

Мне нужно 1.5МБ на фреймбуффер минимум. Если поиграться с прозрачностью, то еще столько же sm.gif

Цитата(Огурцов @ Apr 16 2016, 17:47) *
на 720*575 хватает

Это в каком STM есть 400кБ памяти? Да и то при восьмибитном цвете и если в памяти больше ничего кроме видеобуфера нет.
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Apr 16 2016, 19:02
Сообщение #79


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



семисотые посмотрите
более 800*600 на встраиваемых, зачем ?
на писюках как-то вполне 640*480*4 перебивались, а 800*600*8 появились - вообще праздник, так что не жадничайте
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Apr 17 2016, 04:38
Сообщение #80


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(Огурцов @ Apr 16 2016, 22:02) *
семисотые посмотрите

Те, что реально доступны имеют 320кБ на борту.

Цитата
более 800*600 на встраиваемых, зачем ?

Нет, не более, а 800х480х16бит + двойная буферизация. А если еще в два слоя то 3МБ и набегает, правда последнее в общем-то не самая нужная вещь, но кое-что в интерфейсе позволяет сделать красиво без лишних усилий.

Цитата
на писюках как-то вполне 640*480*4 перебивались, а 800*600*8 появились - вообще праздник, так что не жадничайте

Во-первых у меня задача требует минимум 8битного цвета, но лучше выглядит в 16битном. Некоторую информацию удобно/необходимо отображать в виде двух координат X-Y, а третья координата это цвет (думаю я не уникален в этом).
Во-вторых эффективно использовать DMA2D можно только с 16битным фреймбуффером.

Сообщение отредактировал Шаманъ - Apr 17 2016, 04:39
Go to the top of the page
 
+Quote Post
AVI-crak
сообщение Apr 17 2016, 07:06
Сообщение #81


Частый гость
**

Группа: Участник
Сообщений: 182
Регистрация: 16-10-15
Пользователь №: 88 894



Кстати, у чипов st их ускоритель имеет всего две полезные функции: заливка цветом и копирование памяти с прозрачностью. Именно для последней функции требуется огромное количество памяти, иначе теряется смысл dma2d.
Тут встроенной памятью не обойтись.
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Apr 17 2016, 07:41
Сообщение #82


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(AVI-crak @ Apr 17 2016, 10:06) *
Кстати, у чипов st их ускоритель имеет всего две полезные функции: заливка цветом и копирование памяти с прозрачностью.

Та не, больше функций - есть еще копирование с преобразованием цвета. Оно позволяет выводить шрифты и хранить картинки в сжатом (в смысле индексированный цвет) виде. Я прикидывал - все, что мне нужно могу делать через DMA2D. Если бы оно еще умело разворачивать монохромные битмапы было бы просто супер, а с другой стороны потратить на шрифты в четыре раза больше флэша не есть глобальная проблема.

Сообщение отредактировал Шаманъ - Apr 17 2016, 07:43
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Apr 17 2016, 08:33
Сообщение #83


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Цитата(Шаманъ @ Apr 17 2016, 04:38) *
двойная буферизация

ну поставьте два процыка
или подождите пару лет, до какой-нибудь 9xx

Сообщение отредактировал Огурцов - Apr 17 2016, 08:35
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Apr 17 2016, 17:26
Сообщение #84


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(Огурцов @ Apr 17 2016, 11:33) *
ну поставьте два процыка
или подождите пару лет, до какой-нибудь 9xx

Зачем? Два процессора для двойной буферизации вывода графики maniac.gif У Вас какие-то нездоровые идеи, то от LTDC отказаться, то от SDRAM... Если полосы SDRAM хватает, то пусть себе стоИт - стОит копейки, памяти много...
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Apr 17 2016, 18:13
Сообщение #85


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



у меня разные идеи - а вы выбираете
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Apr 18 2016, 06:23
Сообщение #86


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(Огурцов @ Apr 17 2016, 21:13) *
у меня разные идеи - а вы выбираете

Не, спасибо, у меня своих достаточно...
Go to the top of the page
 
+Quote Post
adrvyho
сообщение Aug 22 2016, 14:39
Сообщение #87


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 21-08-16
Из: Москва
Пользователь №: 93 041



Добрый день, дорогие форумчане.
Тоже решил идти в ногу со временем и пересесть с AVR на STM32.
Подключил сенсорный дисплей 800х480 по интерфейсу RGB24 к STM32F429IIT.
Но от того, что поспешил и не предусмотрел в своей схеме SDRAM, теперь мучаюсь.
Настроил тайминги, залил задний фон, активировал слой и окно на нём, но никак не выходит корректно залить область внутри окна.
Получается примерно следующее:



Заливать пробую через DMA2D Register to memory.
Краями, конечно, понимаю, что что-то неверно с адресом заливаемой области, но от неграмотности не могу совладать с DMA2D
Прошу помощи у тех, кто может совладать с DMA2D без SDRAM
Вот кусок кода для заливки

Код
static void _DMA_Fill(void * pDst, int xSize, int ySize, int OffLine, uint32_t ColorIndex) {

  DMA2D->CR      = 0x00030000UL | (1 << 9);         // Register to memory and TCIE
  DMA2D->OCOLR   = ColorIndex;                      // Color to be used
  DMA2D->OMAR    = (uint32_t)pDst;                       // Destination address
  DMA2D->OOR     = OffLine;                         // Destination line offset
  DMA2D->OPFCCR  = 4;                     // Defines the number of pixels to be transfered
  DMA2D->NLR     = ((uint32_t)xSize << 16) | ySize; // Size configuration of area to be transfered
  DMA2D->CR     |= 1;                               // Start operation
  //
  // Wait until transfer is done
  //
  while (DMA2D->CR & DMA2D_CR_START) {}
}
uint32_t aBufferResult[5000];

int main (void)
    

{
          SystemInit();
      HAL_Init();
          SystemClock_Config();
      DMA2D_Config();
      Screen_Init();
          _DMA_Fill(aBufferResult+10, 50, 1, 0, 0x1F0A);
          _DMA_Fill(aBufferResult+150, 30, 2, 0, 0x1C01);
      _DMA_Fill(aBufferResult+300, 5, 20, 0, 0xF0F0);
          while(1) {}
}

Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Aug 22 2016, 15:42
Сообщение #88


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(adrvyho @ Aug 22 2016, 17:39) *
Подключил сенсорный дисплей 800х480 по интерфейсу RGB24 к STM32F429IIT.
Но от того, что поспешил и не предусмотрел в своей схеме SDRAM, теперь мучаюсь.

Так а видеобуфер где поместился?

Цитата
Заливать пробую через DMA2D Register to memory.

Я бы вначале убедился, что без DMA2D все работает правильно, а потом уже подключал DMA2D.
Go to the top of the page
 
+Quote Post
adrvyho
сообщение Aug 22 2016, 16:05
Сообщение #89


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 21-08-16
Из: Москва
Пользователь №: 93 041



В видеобуфере, так подозреваю, моя проблема и кроется, только от того, что я самоучка и много не знаю, пока не могу понять, где именно.
Я так понял, что адрес буфера, при отсутствии внешней ОЗУ - адрес массива aBufferResult, но это только мои мутные догадки.
Без DMA2D я менял цвет заднего фона, поигрался со слоями, залил на слое 1 окно нужного размера - предположил, что экран рабочий и подключен правильно biggrin.gif
Активировал DMA2D (проверил в отладчике регистры), нашёл удобоваримый пример для режима Register-To_memory, пытаюсь вывести три разных прямоугольника, а получается то, что видим на фотографии ((
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Aug 22 2016, 18:11
Сообщение #90


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(adrvyho @ Aug 22 2016, 19:05) *
Я так понял, что адрес буфера, при отсутствии внешней ОЗУ - адрес массива aBufferResult, но это только мои мутные догадки.

Ищите где производится инициализация LTDC и смотрите где находится видеобуфер - для меня из Вашего куска кода совсем не очевидно, что aBufferResult это видеобуфер (его размер как бы должен быть побольше раз в двадцать как минимум), короче "Use the source luke" wink.gif
Go to the top of the page
 
+Quote Post

8 страниц V  « < 4 5 6 7 8 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 19:31
Рейтинг@Mail.ru


Страница сгенерированна за 0.01491 секунд с 7
ELECTRONIX ©2004-2016