VCucumber 0 October 4, 2017 Posted October 4, 2017 · Report post просто топик про stm, а к stm гораздо проще добавить внешний контроллер lcd или контроллер с линуксом, нежели переползать на очередной недокамень нет инета - тогда sd-карта Quote Share this post Link to post Share on other sites More sharing options...
golf2109 0 October 5, 2017 Posted October 5, 2017 · Report post просто топик про stm, а к stm гораздо проще добавить внешний контроллер lcd или контроллер с линуксом, нежели переползать на очередной недокамень нет инета - тогда sd-карта какой то оксюморон сами говорите, что тема о STM32, и сами же предлагаете другие контроллеры Quote Share this post Link to post Share on other sites More sharing options...
VCucumber 0 October 5, 2017 Posted October 5, 2017 · Report post какой то оксюморон сами говорите, что тема о STM32, и сами же предлагаете другие контроллеры не знаю, что у вас за юморон, но я предлагаю, как не уходить на другие мк, но расширить возможности stm я например хочу 1080p, как это сделать на stm без дополнительного расширения ? и вообще, странно, что такого ещё никто не сделал Quote Share this post Link to post Share on other sites More sharing options...
golf2109 0 October 6, 2017 Posted October 6, 2017 · Report post не знаю, что у вас за юморон, но я предлагаю, как не уходить на другие мк, но расширить возможности stm я например хочу 1080p, как это сделать на stm без дополнительного расширения ? и вообще, странно, что такого ещё никто не сделал оксюморон - сочетание противоречащих друг другу понятий подробнее в вики... а насчет 1080 читаем первоисточники http://www.st.com/content/ccc/resource/tec....DM00287603.pdf стр. 39 а "не сделал" - значит нет потребности и кроме того, попробуйте найти дисплей 1080 с RGB интерфейсом Quote Share this post Link to post Share on other sites More sharing options...
Sanya_kv 0 October 6, 2017 Posted October 6, 2017 · Report post и кроме того, попробуйте найти дисплей 1080 с RGB интерфейсом Там есть MIPI DSI интерфейс. К нему уже найти дисплей без особых проблем. Ни кто не баловался с DMA2D. Не получается залить картинку цветом с прозрачностью в режиме RGB565. Пытаюсь сделать эффект затемнения за диалоговым окном на одном слое. С двумя слоями работает без проблем при разрешении 1024x768. Но мне нужно в разрешении 1280х800, а там тянет только 1 слой. Quote Share this post Link to post Share on other sites More sharing options...
VCucumber 0 October 6, 2017 Posted October 6, 2017 · Report post оксюморон - сочетание противоречащих друг другу понятий вы не поняли один юморон, и я не удивлён, что вы не поняли и другой а насчет 1080 читаем первоисточники что именно в первоисточнике ? 30 кадров 8 бит ? а "не сделал" - значит нет потребности действительно, кому такая порнуха нужна мой коллега сделал примерно такое, хоть скорее и не по его вине, но тоже, через одно место поэтому реального практического смысла у него тоже не получилось и кроме того, попробуйте найти дисплей 1080 с RGB интерфейсом в том вам и вопрос, а зачем ? Quote Share this post Link to post Share on other sites More sharing options...
mantech 7 October 6, 2017 Posted October 6, 2017 · Report post я например хочу 1080p, как это сделать на stm без дополнительного расширения ? и вообще, странно, что такого ещё никто не сделал В таблице ясно написано, что такое разрешение только на 1 слое и в 16битах, при 32х битной сдрам, что тут может быть непонятного, если достаточно таких параметров - должно работать... Почему не делают, по себе скажу, что кроме собственно отрисовки картинки с таким разрешением, ее еще нужно как-то подготовить, а в случае анимированных - еще и обеспечить скорость распаковки-обновления, а с этим такие МК не справляются однозначно.. Quote Share this post Link to post Share on other sites More sharing options...
VCucumber 0 October 6, 2017 Posted October 6, 2017 · Report post В таблице ясно написано, что такое разрешение только на 1 слое и в 16битах, при 32х битной сдрам, что тут может быть непонятного, если достаточно таких параметров - должно работать... Почему не делают, по себе скажу, что кроме собственно отрисовки картинки с таким разрешением, ее еще нужно как-то подготовить, а в случае анимированных - еще и обеспечить скорость распаковки-обновления, а с этим такие МК не справляются однозначно.. недостаточно, нужно 24 бита, или 32 - для удобства вот пусть stm (да хоть avr) и занимается подготовкой и распаковкой и что совсем прекрасно - в асинхронном режиме а отрисовкой пусть занимается внешний, по отношению к stm, контроллер lcd - не понятно, что тут непонятно Quote Share this post Link to post Share on other sites More sharing options...
Шаманъ 0 October 6, 2017 Posted October 6, 2017 · Report post Ни кто не баловался с DMA2D. Не получается залить картинку цветом с прозрачностью в режиме RGB565. Пытаюсь сделать эффект затемнения за диалоговым окном на одном слое. В чем именно проблема, напишите подробнее? У меня такой вариант работает без проблем. Да и почти вся графика работает через DMA2D. Quote Share this post Link to post Share on other sites More sharing options...
Sanya_kv 0 October 6, 2017 Posted October 6, 2017 · Report post В чем именно проблема, напишите подробнее? У меня такой вариант работает без проблем. Да и почти вся графика работает через DMA2D. Скажите, в своём проекте Вы RGB565 режим используете? Пытался делать заливку цветом в формате ARGB8888, как оказалось для режима RGB565 он выкидывает alpha канал в функции DMA2D_SetConfig. Понял что не так делал. Сейчас пытаюсь разобраться как это сделать правильно. Quote Share this post Link to post Share on other sites More sharing options...
VCucumber 0 October 6, 2017 Posted October 6, 2017 · Report post Да и почти вся графика работает через DMA2D а dma2d может работать со статической памятью и с отключенным ltdc ? Quote Share this post Link to post Share on other sites More sharing options...
Шаманъ 0 October 6, 2017 Posted October 6, 2017 · Report post Скажите, в своём проекте Вы RGB565 режим используете? Я разные режимы использую, но фреймбуфер в RGB565. Пытался делать заливку цветом в формате ARGB8888, как оказалось для режима RGB565 он выкидывает alpha канал в функции DMA2D_SetConfig. Что такое SetConfig я не знаю - STMовскими либами не пользуюсь. Чтобы сделать то, что Вы хотите Вам нужно сконфигурировать DMA2D для полной обработки (режим Memory-to-memory with blending, см. описание регистра DMA2D->CR). Далее в качестве переднего плана указать формат цвета А8, с заменой альфа канала на указанное Вами значение, установить регистр DMA2D->FGCOLR в требуемый цвет, в качестве заднего плана нужно использовать тот же кусок фреймбуфера куда будете рисовать. Тогда у Вас будет прочитано исходное изображение произведен блендинг с указанным Вами цветом переднего плана и прозрачностью, и результат записан обратно. В Reference Manual DMA2D блок достаточно хорошо описан - там нет ничего сложного. Надеюсь Вы поняли меня :) а dma2d может работать со статической памятью и с отключенным ltdc ? Да, это независимый блок. Может и с внутренней и со статической, читать из флеша может и т.д. Quote Share this post Link to post Share on other sites More sharing options...
Sanya_kv 0 October 6, 2017 Posted October 6, 2017 · Report post Надеюсь Вы поняли меня :) Спасибо за развернутый ответ. Честно говоря уже и не рассчитывал. :) Quote Share this post Link to post Share on other sites More sharing options...
Sanya_kv 0 October 9, 2017 Posted October 9, 2017 · Report post Чтобы сделать то, что Вы хотите Вам нужно сконфигурировать DMA2D для полной обработки (режим Memory-to-memory with blending, см. описание регистра DMA2D->CR). Далее в качестве переднего плана указать формат цвета А8, с заменой альфа канала на указанное Вами значение, установить регистр DMA2D->FGCOLR в требуемый цвет, в качестве заднего плана нужно использовать тот же кусок фреймбуфера куда будете рисовать. Тогда у Вас будет прочитано исходное изображение произведен блендинг с указанным Вами цветом переднего плана и прозрачностью, и результат записан обратно. В Reference Manual DMA2D блок достаточно хорошо описан - там нет ничего сложного. Сделал как вы рекомендовали, все завилось с пол пинка. Попутно избавился от СТМовских библиотек в LTDC и DMA2D, лишнего там ... . Ещё раз благодарю "Шаманъ" за помощь . Неизвестно сколько мне одному пришлось разбираться. По началу банально не был уверен в позитивном результате. На будущие, может кому пригодится, примерный набросок рабочей функции заливки области цветом с прозрачностью. //=============== Заполнить буфер цветом с коэффициентом прозрачности ======== 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; } Quote Share this post Link to post Share on other sites More sharing options...
VCucumber 0 October 23, 2017 Posted October 23, 2017 · Report post ещё вопрос: есть мысли как подключить к stm второй дисплей ? с разными картинками, конечно Quote Share this post Link to post Share on other sites More sharing options...