|
|
  |
LTDC + ChromART в STM, Проконсультируйте, кто работал. |
|
|
|
Apr 16 2016, 18:09
|
Знающий
   
Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839

|
Цитата(Огурцов @ Apr 16 2016, 10:14)  а сколько надо ? внутренней уже вполне хватает на кое-что Мне нужно 1.5МБ на фреймбуффер минимум. Если поиграться с прозрачностью, то еще столько же  Цитата(Огурцов @ Apr 16 2016, 17:47)  на 720*575 хватает Это в каком STM есть 400кБ памяти? Да и то при восьмибитном цвете и если в памяти больше ничего кроме видеобуфера нет.
|
|
|
|
|
Apr 17 2016, 04:38
|
Знающий
   
Группа: Участник
Сообщений: 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
|
|
|
|
|
Aug 22 2016, 14:39
|
Участник

Группа: Участник
Сообщений: 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) {} }
|
|
|
|
|
Aug 22 2016, 15:42
|
Знающий
   
Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839

|
Цитата(adrvyho @ Aug 22 2016, 17:39)  Подключил сенсорный дисплей 800х480 по интерфейсу RGB24 к STM32F429IIT. Но от того, что поспешил и не предусмотрел в своей схеме SDRAM, теперь мучаюсь. Так а видеобуфер где поместился? Цитата Заливать пробую через DMA2D Register to memory. Я бы вначале убедился, что без DMA2D все работает правильно, а потом уже подключал DMA2D.
|
|
|
|
|
Aug 22 2016, 16:05
|
Участник

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

|
В видеобуфере, так подозреваю, моя проблема и кроется, только от того, что я самоучка и много не знаю, пока не могу понять, где именно. Я так понял, что адрес буфера, при отсутствии внешней ОЗУ - адрес массива aBufferResult, но это только мои мутные догадки. Без DMA2D я менял цвет заднего фона, поигрался со слоями, залил на слое 1 окно нужного размера - предположил, что экран рабочий и подключен правильно Активировал DMA2D (проверил в отладчике регистры), нашёл удобоваримый пример для режима Register-To_memory, пытаюсь вывести три разных прямоугольника, а получается то, что видим на фотографии ((
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|