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

Странное поведение дисплея

Господа, пытаюсь запустить дисплей на самодельной плате с  STM32F746 и LTDC

Дисплей 7 дюймов с RGB интерфейсом, вот такой  https://www.buydisplay.com/download/manual/ER-TFT070-6_Datasheet.pdf

Контроллер его вот такой https://www.buydisplay.com/download/ic/EK79001.pdf

Сгенерировал проект, для проверки что он работает - поставил в настройках заполнение экрана серым цветом.

Пока что дисплей не реагирует, я на данном этапе списываю это на возможные ошибки настройки, возможные дефекты монтажа, ковыряюсь, проверяю

Но все же спустя примерно 5 секунд после включения наблюдается странный эффект вот он на видео

https://cloud.mail.ru/public/2wEd/3coCzE9

Этот эффект не проявляется, если LTDC не инициализирован.

Что это может быть? Такое ощущение, что это какой-то глюк в самом дисплее...

PixelCLock 25MHz

HS,VS PCLK Polarity - в соответствии с даташитом на контроллер дисплея.

Код инициализации дисплея

static void MX_LTDC_Init(void)
{

  /* USER CODE BEGIN LTDC_Init 0 */

  /* USER CODE END LTDC_Init 0 */

  LTDC_LayerCfgTypeDef pLayerCfg = {0};

  /* USER CODE BEGIN LTDC_Init 1 */

  /* USER CODE END LTDC_Init 1 */
  hltdc.Instance = LTDC;
  hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL;
  hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL;
  hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AH;
  hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC;
  hltdc.Init.HorizontalSync = 7;
  hltdc.Init.VerticalSync = 3;
  hltdc.Init.AccumulatedHBP = 14;
  hltdc.Init.AccumulatedVBP = 5;
  hltdc.Init.AccumulatedActiveW = 1038;
  hltdc.Init.AccumulatedActiveH = 605;
  hltdc.Init.TotalWidth = 1044;
  hltdc.Init.TotalHeigh = 607;
  hltdc.Init.Backcolor.Blue = 200;
  hltdc.Init.Backcolor.Green = 200;
  hltdc.Init.Backcolor.Red = 200;
  if (HAL_LTDC_Init(&hltdc) != HAL_OK)
  {
    Error_Handler();
  }
  pLayerCfg.WindowX0 = 0;
  pLayerCfg.WindowX1 = 1024;
  pLayerCfg.WindowY0 = 0;
  pLayerCfg.WindowY1 = 600;
  pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB888;
  pLayerCfg.Alpha = 0;
  pLayerCfg.Alpha0 = 0;
  pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_CA;
  pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_CA;
  pLayerCfg.FBStartAdress = 0;
  pLayerCfg.ImageWidth = 1024;
  pLayerCfg.ImageHeight = 600;
  pLayerCfg.Backcolor.Blue = 200;
  pLayerCfg.Backcolor.Green = 200;
  pLayerCfg.Backcolor.Red = 200;
  if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN LTDC_Init 2 */

  /* USER CODE END LTDC_Init 2 */

}

 

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


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

1 час назад, MementoMori сказал:

Но все же спустя примерно 5 секунд после включения наблюдается странный эффект вот он на видео

https://cloud.mail.ru/public/CMYp/4G9cxAC2X

PixelCLock 25MHz

1. вместо видео открывается картинка

2. откуда 25МГц, если в доке 51.2 - см аттач

fiti.jpg

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


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

Надо же,  я думал нижнего предела нет. Снизил частоту, чтобы посмотреть осциллографом есть ли сигналы на линиях.

Исправил на 50 МГц. Ура, дисплей стал показывать вот такое кино

https://cloud.mail.ru/public/35hx/2HvGy9PrN

Опять таки, что-то с дисплеем, а не с контроллером LTDC - если я в цикле переинициализирую LTDC - движение полос замирает на время, но полосы не исчезают.

 

По ходу вопрос - vertical synchronisation height, vertical block porch, vertical fron porch и прочие параметры - в даташите их нет, я так понимаю их нужно подбирать экспертиментально. Но если они неправильно подобраны - изображение должно просто съехать куда-то или же возможны артефакты, как на видео?

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


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

11 minutes ago, MementoMori said:

По ходу вопрос - vertical synchronisation height, vertical block porch, vertical fron porch и прочие параметры - в даташите их нет, я так понимаю их нужно подбирать экспертиментально. Но если они неправильно подобраны - изображение должно просто съехать куда-то или же возможны артефакты, как на видео?

Тут или названия и смысл параметров уяснить, или перейти в DE mode. Второе, пожалуй, даже предпочтительнее.

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


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


	/* AT070TNA2 panel (1024*600) - 7" display HV mode */
	// HX8282-A01.pdf, page 38
	enum
	{
		WIDTH = 1024,			/* LCD PIXEL WIDTH            */
		HEIGHT = 600,			/* LCD PIXEL HEIGHT           */
		/** 
		  * @brief  AT070TN90 Timing  
		  * MODE=0 (DE)
		  * When selected DE mode, VSYNC & HSYNC must pulled HIGH
		  * MODE=1 (SYNC)
		  * When selected sync mode, de must be grounded.
		  */     
		HSYNC = 140,			/* Horizontal synchronization 1..140 */
		HFP = 160,				/* Horizontal front porch  16..216   */

		VSYNC = 20,				/* Vertical synchronization 1..20  */
		VFP = 12,				/* Vertical front porch  1..127     */

		/* Accumulated parameters for this display */
		LEFTMARGIN = 160,		/* horizontal blanking EXACTLY */
		TOPMARGIN = 23,			/* vertical blanking EXACTLY */

		HFULL = LEFTMARGIN + WIDTH + HFP,	/* horizontal full period */
		VFULL = TOPMARGIN + HEIGHT + VFP,	/* vertical full period */

		// MODE: DE/SYNC mode select.
		// DE MODE: MODE="1", VS and HS must pull high.
		// SYNC MODE: MODE="0". DE must be grounded
		VSYNCNEG = 1,			/* Negative polarity required for VSYNC signal */
		HSYNCNEG = 1,			/* Negative polarity required for HSYNC signal */
		DENEG = 0,				/* Negative DE polarity: (normal: DE is 0 while sync) */
		BOARD_DEMODE = 0		/* 0: static signal, 1: DE controlled */
	};

 

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


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

1 minute ago, MementoMori said:

А если я перейду в DE - VSYNC и HSYNC будут не нужны что ли?

Внезапно, да?

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


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

1 minute ago, aaarrr said:

Внезапно, да?

Для меня да) Раздел-то для начинающих. Сейчас попробуем

Перевел в DE режим - на экране  справа заливка с тем цветом, который я и хотел, но с бегущими полосами, слева тоже какие-то полосы.

Скажите, если я перехожу в DE режим, все упомянутые мной выше параметры - что с ними делать? Оставить как есть? Или в нули? 

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


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

Проконтролируйте полярности того что наформировали.
Если что, вот тут работающий и в DE MODE и в SYNC MODE код. На инициализацию синхры не влияет, только на установку в статические состояния (0 и 1 - читайте док) сигналов.

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


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

Чудны дела твои, господи....

Вот что говорит даташит про DE и полярность DE сигнала

ZsZLHRb9.png

 

То есть, я так понял, полярность его положительная.

В коде пишу

Quote

  hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AH;

Заработало только тогда, когда поставил   hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL;

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


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

А LTDC выход de сам по себе добавлякт инверсию. О чем прямо говорят в главе даташита про щвидеоконтроллер. И что я процитировал в комментариях кода, ссылку на который кинул.

Изменено пользователем GenaSPB

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


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

7 minutes ago, GenaSPB said:

А LTDC ввход de сам по себе добавлякт инверсию. О чем прчмо говорят в главе двтвшита про видеоконтроллкр

Век живи, век учись)

Но, боюсь, это не последний вопрос в этой теме).

 

Quote

И что я процитировал в комментариях кода, ссылку на который кинул.

Я видел, но почему-то подумал, что это относится к конкретной модели дисплея, а не к LTDC

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


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

Господа, все же что-то странное с дисплеем....

Сначала я поигрался, заливая его разными цветами, экспериментировал со слоями, альфой и пр... Дисплей производил впечатление рабочего.  Единственное, что смущало - когда в слой попадал мусор (незаписанные области из SDRAM), то мусор мерцал.

Картина стала яснее, когда я попытался нарисовать широкую линию. Начало первой строки этой линии-прямоугольника и конец последней строки постоянно резко дрейфовали на 10-20 пикселей (на видео, если присмотреться, можно увидеть).  А мусор все так же мерцал. 

 

https://cloud.mail.ru/public/4eFT/5wpgB2Xym

Решил что SDRAM (какие-то непонятные у меня были проблемы с ее запуском). Потом выделил очень маленький буфер в RAM и указал его адрес в настройках слоя. 

Проблема не исчезла.

Я грешил на пиксельклок - но тот факт что дрожит не все изображение, а его отдельные, с постоянным координатами, участки с этой версией не вяжется.

 

В чем может быть проблема?

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


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

ЗАбыл сказать - точно такой же код замечательно и без мерцания работает на STM32F746DISCO. У меня и память и контроллер такие же (только не в BGA)

 

Да ... тут мне в личку советуют посмотреть трассы от STM к дисплею на предмет наводок.  Вряд ли это причина.  Когда я настраиваю слой так, что он меньше экрана, а основной фон делаю, скажем зеленым - то появляется зеленая рамка, а в ней окно с мусором. Так вот границы рамки не дрожат. Рамку эту рисует контроллер LDTC и сам дисплей. Так что эта связка работает нормально. А вот с чтением данных из памяти, неважно какой, происходят пропуски.

 

https://cloud.mail.ru/public/2D6c/5PPyr8o98

 

Меня что-то пугает, что глюк одинаков и для RAM и для SDRAM....

 

Скажите, вот этот код точно заставит LTDC работать не со SDRAM, а с RAM ?

 

	volatile uint32_t RGB565[5000] = {0x00000000};
    uint32_t i;
	
   HAL_LTDC_SetAddress(&hltdc,(uint32_t) &RGB565,0);
    for(i=2000;i<4500;i++)
    {
   *(__IO uint16_t*) (hltdc.LayerCfg[0].FBStartAdress + (i*2)) = 0x00ff;
    } 

   while (1);	 

 

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


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

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

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

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

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

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

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

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

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

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