Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 05.01.2017, 19:34  
anton_1000
Прописка
 
Регистрация: 31.08.2008
Сообщений: 117
Сказал спасибо: 4
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
anton_1000 на пути к лучшему
По умолчанию > STM32F429 + LCD без HSYNC VSYNC, только DE

Помогите настроить периферийный модуль LTDC в stm32f429 для дисплея MI0430HT (даташит в приложении).
Дисплей 480 * 272 точки.
Плата от Стартеркита :
http://starterkit.ru/html/index.php?......view&id=128
Настройки взял из примера на плату, но в оригинальном примере работает а под HAL нет. Прошу помощи.
Код:
    LtdcHandler.Init.HorizontalSync = 40;
    LtdcHandler.Init.VerticalSync = 9;
    LtdcHandler.Init.AccumulatedHBP = 42;
    LtdcHandler.Init.AccumulatedVBP = 11;
    LtdcHandler.Init.AccumulatedActiveW = 52;
    LtdcHandler.Init.AccumulatedActiveH = 283;
    LtdcHandler.Init.TotalWidth = 525;
    LtdcHandler.Init.TotalHeigh = 288;
    LtdcHandler.Init.Backcolor.Red= 0;
    LtdcHandler.Init.Backcolor.Blue= 0;
    LtdcHandler.Init.Backcolor.Green= 0;
    /* PLLSAI_VCO Input = HSE_VALUE/PLL_M = 25/15 =1,667 Mhz */
    /* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAIN = 180 Mhz */
    /* PLLLCDCLK = PLLSAI_VCO Output/PLLSAIR = 180/5 = 36 Mhz */
    /* LTDC clock frequency = PLLLCDCLK / LTDC_PLLSAI_DIVR_8 = 36/4 = 9 Mhz */
    PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_LTDC;
    PeriphClkInitStruct.PLLSAI.PLLSAIN = 108;
    PeriphClkInitStruct.PLLSAI.PLLSAIR = 5;
    PeriphClkInitStruct.PLLSAIDivR = RCC_PLLSAIDIVR_4;
    HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct);
    LtdcHandler.Init.HSPolarity = LTDC_HSPOLARITY_AL;
    LtdcHandler.Init.VSPolarity = LTDC_VSPOLARITY_AL;
    LtdcHandler.Init.DEPolarity = LTDC_DEPOLARITY_AL;
    LtdcHandler.Init.PCPolarity = LTDC_PCPOLARITY_IPC;
    HAL_LTDC_Init(&LtdcHandler);

  Layercfg.WindowX0 = 43;
  Layercfg.WindowX1 = (480 + 43 - 1);
  Layercfg.WindowY0 = 12;
  Layercfg.WindowY1 = (272 + 12 - 1);

  Layercfg.PixelFormat = LTDC_PIXEL_FORMAT_ARGB8888;
  Layercfg.FBStartAdress = FB_Address;
  Layercfg.Alpha = 255;
  Layercfg.Alpha0 = 0;
  Layercfg.Backcolor.Blue = 0;
  Layercfg.Backcolor.Green = 0;
  Layercfg.Backcolor.Red = 0;
  Layercfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA;
  Layercfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA;
  Layercfg.ImageWidth = ((480 * 4) + 3);//524;//480;
  Layercfg.ImageHeight = 272;
  
  HAL_LTDC_ConfigLayer(&LtdcHandler, &Layercfg, LayerIndex);

  DrawProp[LayerIndex].BackColor = LCD_COLOR_WHITE;
  DrawProp[LayerIndex].pFont     = &Font24;
  DrawProp[LayerIndex].TextColor = LCD_COLOR_BLACK;

  HAL_LTDC_EnableDither(&LtdcHandler);
Вложения:
Тип файла: pdf MI0430HT V1.0 withTP.PDF (1.32 Мб, 0 просмотров)
Реклама:
anton_1000 вне форума  
Непрочитано 06.01.2017, 16:27  
anton_1000
Прописка
 
Регистрация: 31.08.2008
Сообщений: 117
Сказал спасибо: 4
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
anton_1000 на пути к лучшему
По умолчанию Re: > STM32F429 + LCD без HSYNC VSYNC, только DE

После разбора даташита на дисплей создал код
Код:
  LtdcHandler.Init.HorizontalSync = 0;
    LtdcHandler.Init.VerticalSync = 0;
    LtdcHandler.Init.AccumulatedHBP = 44;              //HBP+HSYNC-1;
    LtdcHandler.Init.AccumulatedVBP = 15;              //VSYNC+VBP-1;
    LtdcHandler.Init.AccumulatedActiveW = 524;
    LtdcHandler.Init.AccumulatedActiveH = 287;      
    LtdcHandler.Init.TotalWidth = 525;
    LtdcHandler.Init.TotalHeigh = 288;
    LtdcHandler.Init.Backcolor.Red= 0;
    LtdcHandler.Init.Backcolor.Blue= 0;
    LtdcHandler.Init.Backcolor.Green= 0;
    
    /* LCD clock configuration */
    /* PLLSAI_VCO Input = HSE_VALUE/PLL_M = 25/15 = 1,6667Mhz */
    /* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAIN = 180 Mhz */
    /* PLLLCDCLK = PLLSAI_VCO Output/PLLSAIR = 180/5 = 36 Mhz */
    /* LTDC clock frequency = PLLLCDCLK / LTDC_PLLSAI_DIVR_8 = 36/4 = 9 Mhz */
    PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_LTDC;
    PeriphClkInitStruct.PLLSAI.PLLSAIN = 108;
    PeriphClkInitStruct.PLLSAI.PLLSAIR = 5;//
    PeriphClkInitStruct.PLLSAIDivR = RCC_PLLSAIDIVR_4;
    HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct);
    
    /* Polarity */
    LtdcHandler.Init.HSPolarity = LTDC_HSPOLARITY_AL;
    LtdcHandler.Init.VSPolarity = LTDC_VSPOLARITY_AL;
    LtdcHandler.Init.DEPolarity = LTDC_DEPOLARITY_AL;
    LtdcHandler.Init.PCPolarity = LTDC_PCPOLARITY_IPC;

    HAL_LTDC_Init(&LtdcHandler);

  Layercfg.WindowX0 = 0;
  Layercfg.WindowX1 = 480;
  Layercfg.WindowY0 = 0;
  Layercfg.WindowY1 = 272;

  Layercfg.PixelFormat = LTDC_PIXEL_FORMAT_ARGB8888;
  Layercfg.FBStartAdress = FB_Address;
  Layercfg.Alpha = 255;
  Layercfg.Alpha0 = 0;
  Layercfg.Backcolor.Blue = 0;
  Layercfg.Backcolor.Green = 0;
  Layercfg.Backcolor.Red = 0;
  Layercfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA;
  Layercfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA;
  Layercfg.ImageWidth = 480;
  Layercfg.ImageHeight = 272;
  HAL_LTDC_ConfigLayer(&LtdcHandler, &Layercfg, LayerIndex);
  DrawProp[LayerIndex].BackColor = LCD_COLOR_WHITE;
  DrawProp[LayerIndex].pFont     = &Font24;
  DrawProp[LayerIndex].TextColor = LCD_COLOR_BLACK;
  HAL_LTDC_EnableDither(&LtdcHandler);

изображение выводится, но через секунду или меньше ... или больше начинают мерцать точки в буквах и изображениях. Где может быть косяк.
Ау, пожалуйста, отзовитесь специалисты по ТФТ.

Непонятки в настройке области. Почему
Код:
 Layercfg.WindowX0 = 0;
  Layercfg.WindowX1 = 480;
  Layercfg.WindowY0 = 0;
  Layercfg.WindowY1 = 272;
....
  Layercfg.ImageWidth = 480;
а не
Код:
Layercfg.WindowX0 = 44;     //HBP+HSYNC;;
  Layercfg.WindowX1 = 524;   //(LCD_PIXEL_WIDTH + HBP+HSYNC - 1);
  Layercfg.WindowY0 = 15;     //VSYNC + VBP;
  Layercfg.WindowY1 = 287    //(LCD_PIXEL_HEIGHT + VSYNC+VBP - 1);
.....
  Layercfg.ImageWidth = (480*4)+3;  // the length of one line of pixels in bytes + 3 then :
во втором случае бред на дисплее.
anton_1000 вне форума  
Непрочитано 23.02.2017, 00:22  
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: > STM32F429 + LCD без HSYNC VSYNC, только DE

Натолкнулся на этот дисплей. Пока еще не покупал. Скажите, как он по цветопередаче и по углам обзора? При отклонении вниз градусов на 45, как там картинка, сильно ли выцветает?

А по коду, если еще актуально...
относительно Layercfg.WindowX0 = 0;
Layercfg.WindowX1 = 480;

потому как в этом случае количество точек от 0 до 480 получается фактически 481. Точка "0" тоже считается ведь. А активная область дисплея - ровно 480 точек по горизонтали. Так же и с линиями. Как раз замечал, что если размер слоя превышает размер активной области дисплея или слой вылезает за ее границы, то изображение начинает дрожать. Если чуть-чуть ошибся в геометрии и расчетных цифрах слоя - получишь полную хрень на выходе.

Как распознать ошибки и настроить картинку?
Окей, запускаем LCD-TFT без слоев с каким-нибудь цветом бэкграунда, например, синим. Дисплей запустился и показывает цвет фона? Отлично, у вас что-то уже работает. Если не работает, значит вы либо не включили сам дисплей сигналом на его ножке, либо забыли включить PLL, от которого запитан домен тактирования пиксельного клока. Ошибки в таймингах синхронизации дисплея, даже довольно грубые, шибко не влияют. Их потом можно подстроить по положению слоя, чтобы он целиком помещался. По крайней мере, так в дисплеях с HV-синхрой. Без этой синхры нужно точно выдерживать пропорции кадра.

Окей, далее рисуем программно координатную сетку размером в полную активную область, с линиями через каждые например 50 пикс., плюс линии по границам, запускаем слой в цветовой модели L8 и видеобуфером размером в полный кадр (480х272, это 127,5 кБайт).
Получили дикое месиво или наклонные линии? Окей, вы жестко (или немного) накосячили в размерах слоя и/или длине и смещении начала строк в буфере. Линии еще и подергиваются, дрожат? Вы вылезли за границы активной области.
Функция HAL спрятала от конечного пользователя вычисления длины строк значений регистров позиции окна, поэтому тут проще. Главное, чтобы размер окна слоя был равен размеру активной области. Включая значение "0", о котором часто забывают!
Ладно, допустим, либо через HAL, либо обкурившись мануала, вы получили-таки ровные линии координатной сетки. Окей, теперь смотрим, точно ли сетка вписалась в видимую область, полностью ли она видна, не скрылись ли граничные линии?
Позиция активной области подстраивается таймингами развертки так, чтобы активная область попала целиком в видимую область дисплея. Кароч, чтобы все было видно.
Рулится, в основном, регистром BPCR. А регистр TWCR в небольших пределах влияет на частоту кадров дисплея.
В сумме, все неотображаемые области используются для подготовки порции данных изображения. Дело в том, что в отличие от дисплеев типа ILI9341 на SPI, у этого дисплея на интерфейсе RGBHV нет своей видеопамяти и приостановка вывода привет к исчезновению всего изображения на всем дисплее.

Сообщение от anton_1000 Посмотреть сообщение
Непонятки в настройке области. Почему ... а не ...
Опять же, это надо смотреть, как прописана функция HAL. Вот она то стопудово прописана так, что уже внутри суммируются величины.
Я все функции писал сам, без HAL-а, поэтому не знаю, как там в ХАЛе то...
NewWriter вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ностальжи по школе... Ar-Gen-Tum Отвлекитесь, эмбеддеры! 141 27.02.2015 16:10
Чем можно прошить AT89C51? Только без всяких AT90S4414 ARM7TDMI Микроконтроллеры, АЦП, память и т.д 4 20.01.2008 18:14
[Решено] Сборник перлов любителей кабельщины mikesmith Отвлекитесь, эмбеддеры! 135 14.08.2007 15:49
[Решено] Всем эмбеддерам посвящается... Decan Отвлекитесь, эмбеддеры! 0 24.10.2005 14:43


Часовой пояс GMT +4, время: 18:18.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot