Перейти к содержанию
    

32F769IDISCOVERY + MIPI DSI 720p (1280x720)?

просто топик про stm, а к stm гораздо проще добавить внешний контроллер lcd или контроллер с линуксом, нежели переползать на очередной недокамень

нет инета - тогда sd-карта

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

просто топик про stm, а к stm гораздо проще добавить внешний контроллер lcd или контроллер с линуксом, нежели переползать на очередной недокамень

нет инета - тогда sd-карта

какой то оксюморон сами говорите, что тема о STM32, и сами же предлагаете другие контроллеры

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

какой то оксюморон сами говорите, что тема о STM32, и сами же предлагаете другие контроллеры

не знаю, что у вас за юморон, но я предлагаю, как не уходить на другие мк, но расширить возможности stm

я например хочу 1080p, как это сделать на stm без дополнительного расширения ? и вообще, странно, что такого ещё никто не сделал

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не знаю, что у вас за юморон, но я предлагаю, как не уходить на другие мк, но расширить возможности stm

я например хочу 1080p, как это сделать на stm без дополнительного расширения ? и вообще, странно, что такого ещё никто не сделал

оксюморон - сочетание противоречащих друг другу понятий

подробнее в вики...

а насчет 1080 читаем первоисточники

http://www.st.com/content/ccc/resource/tec....DM00287603.pdf

стр. 39

а "не сделал" - значит нет потребности

и кроме того, попробуйте найти дисплей 1080 с RGB интерфейсом

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

и кроме того, попробуйте найти дисплей 1080 с RGB интерфейсом

Там есть MIPI DSI интерфейс. К нему уже найти дисплей без особых проблем.

 

Ни кто не баловался с DMA2D. Не получается залить картинку цветом с прозрачностью в режиме RGB565. Пытаюсь сделать эффект затемнения за диалоговым окном на одном слое.

С двумя слоями работает без проблем при разрешении 1024x768.

Но мне нужно в разрешении 1280х800, а там тянет только 1 слой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

оксюморон - сочетание противоречащих друг другу понятий

вы не поняли один юморон, и я не удивлён, что вы не поняли и другой

 

а насчет 1080 читаем первоисточники

что именно в первоисточнике ? 30 кадров 8 бит ?

 

а "не сделал" - значит нет потребности

действительно, кому такая порнуха нужна

мой коллега сделал примерно такое, хоть скорее и не по его вине, но тоже, через одно место

поэтому реального практического смысла у него тоже не получилось

 

и кроме того, попробуйте найти дисплей 1080 с RGB интерфейсом

в том вам и вопрос, а зачем ?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я например хочу 1080p, как это сделать на stm без дополнительного расширения ? и вообще, странно, что такого ещё никто не сделал

 

В таблице ясно написано, что такое разрешение только на 1 слое и в 16битах, при 32х битной сдрам, что тут может быть непонятного, если достаточно таких параметров - должно работать...

 

Почему не делают, по себе скажу, что кроме собственно отрисовки картинки с таким разрешением, ее еще нужно как-то подготовить, а в случае анимированных - еще и обеспечить скорость распаковки-обновления, а с этим такие МК не справляются однозначно..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В таблице ясно написано, что такое разрешение только на 1 слое и в 16битах, при 32х битной сдрам, что тут может быть непонятного, если достаточно таких параметров - должно работать...

 

Почему не делают, по себе скажу, что кроме собственно отрисовки картинки с таким разрешением, ее еще нужно как-то подготовить, а в случае анимированных - еще и обеспечить скорость распаковки-обновления, а с этим такие МК не справляются однозначно..

недостаточно, нужно 24 бита, или 32 - для удобства

вот пусть stm (да хоть avr) и занимается подготовкой и распаковкой

и что совсем прекрасно - в асинхронном режиме

а отрисовкой пусть занимается внешний, по отношению к stm, контроллер lcd - не понятно, что тут непонятно

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ни кто не баловался с DMA2D. Не получается залить картинку цветом с прозрачностью в режиме RGB565. Пытаюсь сделать эффект затемнения за диалоговым окном на одном слое.

В чем именно проблема, напишите подробнее? У меня такой вариант работает без проблем. Да и почти вся графика работает через DMA2D.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В чем именно проблема, напишите подробнее? У меня такой вариант работает без проблем. Да и почти вся графика работает через DMA2D.

Скажите, в своём проекте Вы RGB565 режим используете?

 

Пытался делать заливку цветом в формате ARGB8888, как оказалось для режима RGB565 он выкидывает alpha канал в функции DMA2D_SetConfig.

Понял что не так делал.

Сейчас пытаюсь разобраться как это сделать правильно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да и почти вся графика работает через DMA2D

а dma2d может работать со статической памятью и с отключенным ltdc ?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скажите, в своём проекте Вы 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 ?

Да, это независимый блок. Может и с внутренней и со статической, читать из флеша может и т.д.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Надеюсь Вы поняли меня :)

Спасибо за развернутый ответ. Честно говоря уже и не рассчитывал. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чтобы сделать то, что Вы хотите Вам нужно сконфигурировать 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;
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ещё вопрос: есть мысли как подключить к stm второй дисплей ? с разными картинками, конечно

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...