SpyBot 0 16 апреля, 2016 Опубликовано 16 апреля, 2016 · Жалоба Нет, ну внутренней... Внутренней хватает всего на 320х240. А хочется Размаха! :) 1024х768 и несколько буферов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VCucumber 0 16 апреля, 2016 Опубликовано 16 апреля, 2016 · Жалоба на 720*575 хватает Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Шаманъ 0 16 апреля, 2016 Опубликовано 16 апреля, 2016 · Жалоба а сколько надо ? внутренней уже вполне хватает на кое-что Мне нужно 1.5МБ на фреймбуффер минимум. Если поиграться с прозрачностью, то еще столько же :) на 720*575 хватает Это в каком STM есть 400кБ памяти? Да и то при восьмибитном цвете и если в памяти больше ничего кроме видеобуфера нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VCucumber 0 16 апреля, 2016 Опубликовано 16 апреля, 2016 · Жалоба семисотые посмотрите более 800*600 на встраиваемых, зачем ? на писюках как-то вполне 640*480*4 перебивались, а 800*600*8 появились - вообще праздник, так что не жадничайте Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Шаманъ 0 17 апреля, 2016 Опубликовано 17 апреля, 2016 (изменено) · Жалоба семисотые посмотрите Те, что реально доступны имеют 320кБ на борту. более 800*600 на встраиваемых, зачем ? Нет, не более, а 800х480х16бит + двойная буферизация. А если еще в два слоя то 3МБ и набегает, правда последнее в общем-то не самая нужная вещь, но кое-что в интерфейсе позволяет сделать красиво без лишних усилий. на писюках как-то вполне 640*480*4 перебивались, а 800*600*8 появились - вообще праздник, так что не жадничайте Во-первых у меня задача требует минимум 8битного цвета, но лучше выглядит в 16битном. Некоторую информацию удобно/необходимо отображать в виде двух координат X-Y, а третья координата это цвет (думаю я не уникален в этом). Во-вторых эффективно использовать DMA2D можно только с 16битным фреймбуффером. Изменено 17 апреля, 2016 пользователем Шаманъ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AVI-crak 0 17 апреля, 2016 Опубликовано 17 апреля, 2016 · Жалоба Кстати, у чипов st их ускоритель имеет всего две полезные функции: заливка цветом и копирование памяти с прозрачностью. Именно для последней функции требуется огромное количество памяти, иначе теряется смысл dma2d. Тут встроенной памятью не обойтись. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Шаманъ 0 17 апреля, 2016 Опубликовано 17 апреля, 2016 (изменено) · Жалоба Кстати, у чипов st их ускоритель имеет всего две полезные функции: заливка цветом и копирование памяти с прозрачностью. Та не, больше функций - есть еще копирование с преобразованием цвета. Оно позволяет выводить шрифты и хранить картинки в сжатом (в смысле индексированный цвет) виде. Я прикидывал - все, что мне нужно могу делать через DMA2D. Если бы оно еще умело разворачивать монохромные битмапы было бы просто супер, а с другой стороны потратить на шрифты в четыре раза больше флэша не есть глобальная проблема. Изменено 17 апреля, 2016 пользователем Шаманъ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VCucumber 0 17 апреля, 2016 Опубликовано 17 апреля, 2016 (изменено) · Жалоба двойная буферизация ну поставьте два процыка или подождите пару лет, до какой-нибудь 9xx Изменено 17 апреля, 2016 пользователем Огурцов Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Шаманъ 0 17 апреля, 2016 Опубликовано 17 апреля, 2016 · Жалоба ну поставьте два процыка или подождите пару лет, до какой-нибудь 9xx Зачем? Два процессора для двойной буферизации вывода графики :maniac: У Вас какие-то нездоровые идеи, то от LTDC отказаться, то от SDRAM... Если полосы SDRAM хватает, то пусть себе стоИт - стОит копейки, памяти много... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VCucumber 0 17 апреля, 2016 Опубликовано 17 апреля, 2016 · Жалоба у меня разные идеи - а вы выбираете Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Шаманъ 0 18 апреля, 2016 Опубликовано 18 апреля, 2016 · Жалоба у меня разные идеи - а вы выбираете Не, спасибо, у меня своих достаточно... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adrvyho 0 22 августа, 2016 Опубликовано 22 августа, 2016 · Жалоба Добрый день, дорогие форумчане. Тоже решил идти в ногу со временем и пересесть с 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) {} } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Шаманъ 0 22 августа, 2016 Опубликовано 22 августа, 2016 · Жалоба Подключил сенсорный дисплей 800х480 по интерфейсу RGB24 к STM32F429IIT. Но от того, что поспешил и не предусмотрел в своей схеме SDRAM, теперь мучаюсь. Так а видеобуфер где поместился? Заливать пробую через DMA2D Register to memory. Я бы вначале убедился, что без DMA2D все работает правильно, а потом уже подключал DMA2D. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adrvyho 0 22 августа, 2016 Опубликовано 22 августа, 2016 · Жалоба В видеобуфере, так подозреваю, моя проблема и кроется, только от того, что я самоучка и много не знаю, пока не могу понять, где именно. Я так понял, что адрес буфера, при отсутствии внешней ОЗУ - адрес массива aBufferResult, но это только мои мутные догадки. Без DMA2D я менял цвет заднего фона, поигрался со слоями, залил на слое 1 окно нужного размера - предположил, что экран рабочий и подключен правильно Активировал DMA2D (проверил в отладчике регистры), нашёл удобоваримый пример для режима Register-To_memory, пытаюсь вывести три разных прямоугольника, а получается то, что видим на фотографии (( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Шаманъ 0 22 августа, 2016 Опубликовано 22 августа, 2016 · Жалоба Я так понял, что адрес буфера, при отсутствии внешней ОЗУ - адрес массива aBufferResult, но это только мои мутные догадки. Ищите где производится инициализация LTDC и смотрите где находится видеобуфер - для меня из Вашего куска кода совсем не очевидно, что aBufferResult это видеобуфер (его размер как бы должен быть побольше раз в двадцать как минимум), короче "Use the source luke" ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться