|
|
  |
32F769IDISCOVERY + MIPI DSI 720p (1280x720)?, Не получается подключить разрешение 720p |
|
|
|
Oct 5 2017, 04:28
|
Участник

Группа: Участник
Сообщений: 66
Регистрация: 15-04-10
Из: Kiev
Пользователь №: 56 654

|
Цитата(Огурцов @ Oct 4 2017, 21:59)  просто топик про stm, а к stm гораздо проще добавить внешний контроллер lcd или контроллер с линуксом, нежели переползать на очередной недокамень нет инета - тогда sd-карта какой то оксюморон сами говорите, что тема о STM32, и сами же предлагаете другие контроллеры
|
|
|
|
|
Oct 5 2017, 05:57
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(golf2109 @ Oct 5 2017, 04:28)  какой то оксюморон сами говорите, что тема о STM32, и сами же предлагаете другие контроллеры не знаю, что у вас за юморон, но я предлагаю, как не уходить на другие мк, но расширить возможности stm я например хочу 1080p, как это сделать на stm без дополнительного расширения ? и вообще, странно, что такого ещё никто не сделал
|
|
|
|
|
Oct 6 2017, 00:24
|
Участник

Группа: Участник
Сообщений: 66
Регистрация: 15-04-10
Из: Kiev
Пользователь №: 56 654

|
Цитата(Огурцов @ Oct 5 2017, 07:57)  не знаю, что у вас за юморон, но я предлагаю, как не уходить на другие мк, но расширить возможности stm я например хочу 1080p, как это сделать на stm без дополнительного расширения ? и вообще, странно, что такого ещё никто не сделал оксюморон - сочетание противоречащих друг другу понятий подробнее в вики... а насчет 1080 читаем первоисточники http://www.st.com/content/ccc/resource/tec....DM00287603.pdfстр. 39 а "не сделал" - значит нет потребности и кроме того, попробуйте найти дисплей 1080 с RGB интерфейсом
|
|
|
|
|
Oct 6 2017, 07:01
|

Частый гость
 
Группа: Свой
Сообщений: 185
Регистрация: 25-02-09
Из: Россия
Пользователь №: 45 369

|
Цитата(golf2109 @ Oct 6 2017, 04:24)  и кроме того, попробуйте найти дисплей 1080 с RGB интерфейсом Там есть MIPI DSI интерфейс. К нему уже найти дисплей без особых проблем. Ни кто не баловался с DMA2D. Не получается залить картинку цветом с прозрачностью в режиме RGB565. Пытаюсь сделать эффект затемнения за диалоговым окном на одном слое. С двумя слоями работает без проблем при разрешении 1024x768. Но мне нужно в разрешении 1280х800, а там тянет только 1 слой.
|
|
|
|
|
Oct 6 2017, 07:50
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(golf2109 @ Oct 6 2017, 00:24)  оксюморон - сочетание противоречащих друг другу понятий вы не поняли один юморон, и я не удивлён, что вы не поняли и другой Цитата(golf2109 @ Oct 6 2017, 00:24)  а насчет 1080 читаем первоисточники что именно в первоисточнике ? 30 кадров 8 бит ? Цитата(golf2109 @ Oct 6 2017, 00:24)  а "не сделал" - значит нет потребности действительно, кому такая порнуха нужна мой коллега сделал примерно такое, хоть скорее и не по его вине, но тоже, через одно место поэтому реального практического смысла у него тоже не получилось Цитата(golf2109 @ Oct 6 2017, 00:24)  и кроме того, попробуйте найти дисплей 1080 с RGB интерфейсом в том вам и вопрос, а зачем ?
|
|
|
|
|
Oct 6 2017, 08:16
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(Огурцов @ Oct 5 2017, 08:57)  я например хочу 1080p, как это сделать на stm без дополнительного расширения ? и вообще, странно, что такого ещё никто не сделал В таблице ясно написано, что такое разрешение только на 1 слое и в 16битах, при 32х битной сдрам, что тут может быть непонятного, если достаточно таких параметров - должно работать... Почему не делают, по себе скажу, что кроме собственно отрисовки картинки с таким разрешением, ее еще нужно как-то подготовить, а в случае анимированных - еще и обеспечить скорость распаковки-обновления, а с этим такие МК не справляются однозначно..
|
|
|
|
|
Oct 6 2017, 09:19
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(mantech @ Oct 6 2017, 08:16)  В таблице ясно написано, что такое разрешение только на 1 слое и в 16битах, при 32х битной сдрам, что тут может быть непонятного, если достаточно таких параметров - должно работать...
Почему не делают, по себе скажу, что кроме собственно отрисовки картинки с таким разрешением, ее еще нужно как-то подготовить, а в случае анимированных - еще и обеспечить скорость распаковки-обновления, а с этим такие МК не справляются однозначно.. недостаточно, нужно 24 бита, или 32 - для удобства вот пусть stm (да хоть avr) и занимается подготовкой и распаковкой и что совсем прекрасно - в асинхронном режиме а отрисовкой пусть занимается внешний, по отношению к stm, контроллер lcd - не понятно, что тут непонятно
|
|
|
|
|
Oct 6 2017, 10:28
|

Частый гость
 
Группа: Свой
Сообщений: 185
Регистрация: 25-02-09
Из: Россия
Пользователь №: 45 369

|
Цитата(Шаманъ @ Oct 6 2017, 13:59)  В чем именно проблема, напишите подробнее? У меня такой вариант работает без проблем. Да и почти вся графика работает через DMA2D. Скажите, в своём проекте Вы RGB565 режим используете? Пытался делать заливку цветом в формате ARGB8888, как оказалось для режима RGB565 он выкидывает alpha канал в функции DMA2D_SetConfig. Понял что не так делал. Сейчас пытаюсь разобраться как это сделать правильно.
|
|
|
|
|
Oct 6 2017, 13:40
|
Знающий
   
Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839

|
Цитата(Sanya_kv @ Oct 6 2017, 13:28)  Скажите, в своём проекте Вы RGB565 режим используете? Я разные режимы использую, но фреймбуфер в RGB565. Цитата Пытался делать заливку цветом в формате ARGB8888, как оказалось для режима RGB565 он выкидывает alpha канал в функции DMA2D_SetConfig. Что такое SetConfig я не знаю - STMовскими либами не пользуюсь. Чтобы сделать то, что Вы хотите Вам нужно сконфигурировать DMA2D для полной обработки (режим Memory-to-memory with blending, см. описание регистра DMA2D->CR). Далее в качестве переднего плана указать формат цвета А8, с заменой альфа канала на указанное Вами значение, установить регистр DMA2D->FGCOLR в требуемый цвет, в качестве заднего плана нужно использовать тот же кусок фреймбуфера куда будете рисовать. Тогда у Вас будет прочитано исходное изображение произведен блендинг с указанным Вами цветом переднего плана и прозрачностью, и результат записан обратно. В Reference Manual DMA2D блок достаточно хорошо описан - там нет ничего сложного. Надеюсь Вы поняли меня  Цитата(Огурцов @ Oct 6 2017, 15:05)  а dma2d может работать со статической памятью и с отключенным ltdc ? Да, это независимый блок. Может и с внутренней и со статической, читать из флеша может и т.д.
|
|
|
|
|
Oct 9 2017, 14:52
|

Частый гость
 
Группа: Свой
Сообщений: 185
Регистрация: 25-02-09
Из: Россия
Пользователь №: 45 369

|
Цитата(Шаманъ @ Oct 6 2017, 17:40)  Чтобы сделать то, что Вы хотите Вам нужно сконфигурировать DMA2D для полной обработки (режим Memory-to-memory with blending, см. описание регистра DMA2D->CR). Далее в качестве переднего плана указать формат цвета А8, с заменой альфа канала на указанное Вами значение, установить регистр DMA2D->FGCOLR в требуемый цвет, в качестве заднего плана нужно использовать тот же кусок фреймбуфера куда будете рисовать.
Тогда у Вас будет прочитано исходное изображение произведен блендинг с указанным Вами цветом переднего плана и прозрачностью, и результат записан обратно. В Reference Manual DMA2D блок достаточно хорошо описан - там нет ничего сложного. Сделал как вы рекомендовали, все завилось с пол пинка. Попутно избавился от СТМовских библиотек в LTDC и DMA2D, лишнего там ... . Ещё раз благодарю "Шаманъ" за помощь . Неизвестно сколько мне одному пришлось разбираться. По началу банально не был уверен в позитивном результате. На будущие, может кому пригодится, примерный набросок рабочей функции заливки области цветом с прозрачностью. CODE //=============== Заполнить буфер цветом с коэффициентом прозрачности ======== 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; }
|
|
|
|
|
  |
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0
|
|
|