Jump to content

    

Sanya_kv

Свой
  • Content Count

    185
  • Joined

  • Last visited

Everything posted by Sanya_kv


  1. Keil V5.28 и кириллица CP1251

    Предлагаю присоединиться и достать поддержку Keil подобно этому посту на форуме: http://www.keil.com/forum/64345/ Особенно действенно если у Вас платная лицензия. Мой знакомый уже пару месяцев ведёт переписку по этому поводу со службой поддержки. Из последних новостей, поддержка 1251 в ближайшем будущем пока не планируется.
  2. Аналогичная тема по датчику температуры только проц другой. Плату использую STM32F4DISCOVERY (питание == 3.0 V; процессор STM32F407VGT6). По поводу формулы расчета в R.M. сказано: В D.S на STM32F407xx Rev 3. Подставляем в формулу: VSENSE = (ADC16*3.0)/4095; Temperature (in °C) = ((VSENSE – 0.76) / 2.5) + 25; С АЦП значения идут реальные, и адекватно реагирую на температуру. При комнатной температуре АЦП == 0х044А. В итоге не зависимо от того грею я плату паяльником, или кладу в холодильник температура равна 25 или 24 градусам. Если кто имеет рабочие решение по формуле расчета, отзовитесь. Спасибо.
  3. Вопросы по редактору кода в Keil 5

    Отлично разобрали тему по кирпичикам!!! Хотел это добавить, но Вы меня опередили ))
  4. Вопросы по редактору кода в Keil 5

    Да, но цвет у " uint32_t " будет отличным от "void" или "int". На мой взгляд проще добавить строчку "int8_t uint8_t int16_t uint16_t int32_t uint32_t int64_t uint64_t s8 S8 u8 U8 s16 S16 u16 U16 s32 S32 u32 U32 s64 S64 u64 U64 " нежели добавлять все по отдельности.
  5. Вопросы по редактору кода в Keil 5

    Добавь в файле Keil_v5\UV4\global.prop.def в разделе keywordclass.cpp дополнительные строковые константы Будут выделяться тем же цветом что и "void". У меня получилось что-то вроде: # Keywords for C/C++ keywordclass.cpp=alignas alignof and and_eq asm auto bitand bitor bool break case catch char char16_t char32_t class compl \ const constexpr const_cast continue decltype default delete do double dynamic_cast else enum explicit export extern false \ float for friend goto if inline int long mutable namespace new noexcept not not_eq nullptr operator or or_eq private protected \ public register reinterpret_cast return short signed sizeof static static_assert static_cast struct switch template this thread_local \ throw true try typedef typeid typename union unsigned using virtual void volatile wchar_t while xor xor_eq\ int8_t uint8_t int16_t uint16_t int32_t uint32_t int64_t uint64_t s8 S8 u8 U8 s16 S16 u16 U16 s32 S32 u32 U32 s64 S64 u64 U64
  6. Не у кого нет опыта реализации разрешения 720p (1280x720) на плате 32f769 Discovery через MIPI DSI. В описании упоминается что МК в состоянии вывести 720p через DSI, но по факту ни чего не выходит. Для тестирования разрешений использую переходник DSI to HDMI от ST. Ситуация ещё омрачается тем что нет полного описания на чип adv7533 используемый в переходнике. В Общем буду благодарен за любую помощь.
  7. Keil 4.50

    Для себя решил проблему с Русской кодировкой путём замены UvEdit.dll из версии 5.23. UvEdit.rar
  8. Как вариант помимо RMII/MII интерфейса, использовать LAN9220, к микроконтроллеру подключается как sram.
  9. 32F769IDISCOVERY + MIPI DSI 720p (1280x720)?

    Цитата(mantech @ Oct 30 2017, 11:18) т.к. в контроллере МК скорее всего нет выборочной загрузки измененных фрагментов. Делать это программно есть и в STM32F7 эта аппаратно. Цитата(mantech @ Oct 30 2017, 11:18) что когда его снимут с пр-ва, вы найдете аналог... На разрешение 800х480 достаточно много вариантов. В моем случае, микроконтроллер без проблем поддерживает нужное разрешение в видео режиме. По этому дальнейшие поиски прекратил.
  10. 32F769IDISCOVERY + MIPI DSI 720p (1280x720)?

    Цитата(uriy @ Oct 28 2017, 18:08) Подскажите MIPI DSI дисплеи имеют в себе контроллер и встроенный framebuffer как например ILI9341, SSD1351 или же они тупые и в них нужно только гнать поток данных как в дисплеях с RGB интерфейсом? Есть два базовых режима интерфейса MIPI DSI: "Video mode" и "Command mode". В видео режиме они, как Вы выразились "тупые", в командный режим подразумевает что для хранения картинки в дисплее используется своя GRAM, т.е. встроенный framebuffer. К сожалению далеко не все контроллеры с MIPI DSI поддерживают командный режим. Мне так и не удалось найти дисплей с поддержкой командного режима и разрешения хотя бы 1280х800.
  11. 32F769IDISCOVERY + MIPI DSI 720p (1280x720)?

    Цитата(Огурцов @ Oct 23 2017, 06:40) ещё вопрос: есть мысли как подключить к stm второй дисплей ? с разными картинками, конечно Побаловался с MIPI DSI в командном режиме. Идея его в том, что на индикаторе используется графический контроллер со своей GRAM памятью (например OTM8009A), передача данных происходит при необходимости изменения картинки. Соответственно к DSI шине вполне возможно подключить несколько индикаторов. "Шаманъ" Случайно не проверяли, что быстрее копирует DMA2D или просто DMA. Имеется в виду режим MemToMem
  12. 32F769IDISCOVERY + MIPI DSI 720p (1280x720)?

    Цитата(Obam @ Oct 26 2017, 17:46) Кино - 24 fps и ничего, никно не жужжит… или это не те fps? В кино каждый кадр в отдельности смазан. Тема эта достаточно обширна, описана боле менее здесь https://habrahabr.ru/post/338796/ (раскрывается в комментариях). На хабаре так же есть статья, как сделать нормальную анимацию с низким FPS. Найти сейчас не смог. Читал пару лет назад.
  13. 32F769IDISCOVERY + MIPI DSI 720p (1280x720)?

    Цитата(Огурцов @ Oct 26 2017, 15:19) да, в одном, а какая разница, где я её рисую ? если бы она просто мерцала, я бы даже не спрашивал, но она куда-то улетает - каков механизм этого ? Попробуйте понизить частоту вывода.
  14. 32F769IDISCOVERY + MIPI DSI 720p (1280x720)?

    Цитата(Огурцов @ Oct 26 2017, 13:16) олл, почему дисплей подёргивается, когда dma2d работает ? т.е. картинка как бы сдвигается в сторону это синхра слетает или что, или это нормально, куда копать ? Причин может быть 2: Либо у Вас высокая частота вывода, медленная память, 16 бит память. Или Вы выводите картинку и рисуете её в одном буфере. На 32 битной памяти (в 32F769IDISCOVERY) без проблем выводится разрешение 1280х800 RGB565 1 слой 42 гц. С помощью DMA2d вывожу анимацию частотой 42 гц. После того как разобрался с DMA2d, во втором слое не вижу необходимости.
  15. 32F769IDISCOVERY + MIPI DSI 720p (1280x720)?

    Цитата(Шаманъ @ Oct 25 2017, 16:28) Например, можно нарисовать горизонтальную линию, но не прямоугольник. Прямоугольник рисовать можно, Пример: Цитата(Sanya_kv @ Oct 9 2017, 18:52) CODE void LCD_DRV_DrawFillRectAlpha(uint32_t LayerAddr, uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint32_t ColorRGB888, uint8_t Alpha) { if (y0 > y1) { uint16_t bak; bak = y1; y1 = y0; y0 = bak; } if (x0 > x1) { uint16_t bak; bak = x1; x1 = x0; x0 = bak; } uint16_t Width = x1 - x0; uint16_t Height = y1 - y0; #if (LCD_PIXEL_BYTES == 2) uint32_t Xaddress = LayerAddr + 2*(LCD_DRV_GetXSize()*y0 + x0); #else uint32_t Xaddress = LayerAddr + 4*(LCD_DRV_GetXSize()*y0 + x0); #endif LCD_DRV_LL_DMA2D_FillBufferAlphaColor(Xaddress, Width, Height, (LCD_DRV_GetXSize() - Width), DMA2D_OUTPUT_RGB565, ColorRGB888, Alpha, true); } //=============== Заполнить область цветом с коэффициентом прозрачности ======== void LCD_DRV_LL_DMA2D_FillBufferAlphaColor(uint32_t BufferAddr, uint32_t xSize, uint32_t ySize, uint32_t OffLine, uint32_t OutputColorMode, uint32_t ColorRGB888, uint8_t Alpha, uint8_t wait) { LCD_DRV_DMA2D_WaitEND();//Дождаться конца выполнения предыдущего вывода // Замешивание 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(wait)LCD_DRV_DMA2D_WaitEND(); }
  16. 32F769IDISCOVERY + MIPI DSI 720p (1280x720)?

    Цитата(Огурцов @ Oct 23 2017, 06:40) ещё вопрос: есть мысли как подключить к stm второй дисплей ? с разными картинками, конечно Можно. Только если у второго дисплея будет свой графический контроллер.
  17. 32F769IDISCOVERY + MIPI DSI 720p (1280x720)?

    Цитата(Шаманъ @ 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; }
  18. 32F769IDISCOVERY + MIPI DSI 720p (1280x720)?

    Цитата(Шаманъ @ Oct 6 2017, 17:40) Надеюсь Вы поняли меня Спасибо за развернутый ответ. Честно говоря уже и не рассчитывал.
  19. 32F769IDISCOVERY + MIPI DSI 720p (1280x720)?

    Цитата(Шаманъ @ Oct 6 2017, 13:59) В чем именно проблема, напишите подробнее? У меня такой вариант работает без проблем. Да и почти вся графика работает через DMA2D. Скажите, в своём проекте Вы RGB565 режим используете? Пытался делать заливку цветом в формате ARGB8888, как оказалось для режима RGB565 он выкидывает alpha канал в функции DMA2D_SetConfig. Понял что не так делал. Сейчас пытаюсь разобраться как это сделать правильно.
  20. 32F769IDISCOVERY + MIPI DSI 720p (1280x720)?

    Цитата(golf2109 @ Oct 6 2017, 04:24) и кроме того, попробуйте найти дисплей 1080 с RGB интерфейсом Там есть MIPI DSI интерфейс. К нему уже найти дисплей без особых проблем. Ни кто не баловался с DMA2D. Не получается залить картинку цветом с прозрачностью в режиме RGB565. Пытаюсь сделать эффект затемнения за диалоговым окном на одном слое. С двумя слоями работает без проблем при разрешении 1024x768. Но мне нужно в разрешении 1280х800, а там тянет только 1 слой.
  21. 32F769IDISCOVERY + MIPI DSI 720p (1280x720)?

    Цитата(Огурцов @ Oct 2 2017, 15:16) даже если индексный 8 бит Кстати, отличное решение, можно существенно сэкономить ресурсы. СПАСИБО за подсказку!!!. Обязательно опробую этот вариант.
  22. 32F769IDISCOVERY + MIPI DSI 720p (1280x720)?

    Цитата(mantech @ Sep 30 2017, 19:21) Дык, как бы очевидно, 16бит на пиксель против 32х. Только на стм 24бита цвет плюс альфа-канал прокатит макс. на 640х480... В исходниках к плате 32F769IDISCOVERY, есть пример использования платы в разрешении 800x480 в режиме ARGB8888 (24 бита с альфа каналом). Уверен что плата также заработает в этом режиме с разрешением 1024х768. Согласен с вами что для вывода качественной графики имеет смысл использовать что-нибудь посущественнее и с разрешением хотя бы Full HD. Хотя и с STM при использовании "командного режима" можно добиться этих характеристик. К сожалению найти дисплей с поддержкой этого режима мне пока не удалось.
  23. 32F769IDISCOVERY + MIPI DSI 720p (1280x720)?

    Цитата(golf2109 @ Sep 30 2017, 07:41) кстати RGB565 очень некачественно воспроизводит цвета по сравнению с ARGB888 Цвета воспроизводятся одинаково, только в случае RGB565 их меньше, 64к против 16м. Для вывода графики может это и критично. Для вывода пользовательского интерфейса, абсолютно нет. Можете потестить это на своем мониторе [attachment=109056:______.PNG] (Скриншот сделан в режиме 16бит. )
  24. 32F769IDISCOVERY + MIPI DSI 720p (1280x720)?

    Кому интересно, о результатах тестирования графики связки 32F769IDISCOVERY + B-LCDAD-HDMI1 + монитор по HDMI (до этого использовал переходник на с HDMI на DVI который подглючивал ). Выполнял отрисовку различных элементов с использованием DMA2D на двух слоях + использование прозрачности слоёв , все в режиме RGB565. Дополнительно копировал MemToMem из внутренней во внешнюю 300 кб. Получил следующие результаты: В режиме 2-х слоёв максимальное разрешение 1024х768 на 42Гц работает нормально на 45Гц картинка начинает поддергиваться. В режиме 1-го слоя максимальное разрешение 1280х800 на 45Гц работает нормально на 50Гц картинка начинает поддергиваться. Дополнительно пришлось сделать схему тройного буфера, для исключения "кракозябр". Один выводится, второй на очереди, в третьем рисуется. В принципе результатами я доволен. Для работы будет достаточно одного слоя +DMA2D, более чем. Осталось дождаться платы конвертера MIPI DSI в LVDS и проверить все там.
  25. 32F769IDISCOVERY + MIPI DSI 720p (1280x720)?

    Цитата(Огурцов @ Sep 26 2017, 00:43) поставить второй чип sdram, не ? Шина то одна. Цитата(mantech @ Sep 25 2017, 21:55) Как найдете, киньте сюда посмотреть, я год назад искал, и ничего, кроме мелких экранциков для телефона не нашел. Как вариант innolux В разрешении WXGA на 7", 8" и 10". Либо что-нибудь от сюда или отсюда