Jump to content

    
Sign in to follow this  
MementoMori

Не могу подружить SDRAM и LTDC

Recommended Posts

Так и есть

Функция

uint32_t HAL_RCC_GetSysClockFreq(void)
{
  uint32_t pllm = 0, pllvco = 0, pllp = 0;
  uint32_t sysclockfreq = 0;

  /* Get SYSCLK source -------------------------------------------------------*/
  switch (RCC->CFGR & RCC_CFGR_SWS)
  {
    case RCC_SYSCLKSOURCE_STATUS_HSI:  /* HSI used as system clock source */
    {
      sysclockfreq = HSI_VALUE;
       break;
    }
    case RCC_SYSCLKSOURCE_STATUS_HSE:  /* HSE used as system clock  source */
    {
      sysclockfreq = HSE_VALUE;
      break;
    }
     ..............................

сообщила мне, что источник тактирования у меня HSI, а SYSCLK=16 МГц)

 

Share this post


Link to post
Share on other sites

Не работал кварц. Думал, плохо припаял - оказалось нет.

Поставил новый - и тактирование и SDRAM все заработало как надо.

Подбираю теперь пока режимы экрана, ибо какие-то глюки проскакивают, но это точно не SDRAM - ее я прогнал тестами полчаса - все нормально.

Черт... неделя убитого времени из-за того, что не догадался проверить тактирование. Никаких серьезных задач контроллер не выполнял, вот я и не заметил, что он работает на 16 Мгц....

 

P.S. С CAS Latency=2 что-то не пошло. Некоторые пиксели стали плавать.

Share this post


Link to post
Share on other sites

Только непонятка странная.... раньше я указывал частоты для Pixelclock 40-65 Мгц. Не узнаю уже, какими они были на самом деле. Сейчас указываю частоты 25-35 МГц - выше не тянет. Ниже мерцает.  Я бы мог списать снижение этих цифр на правильное тактирование, но по даташиту дисплей требует 40-65 Мгц. У меня на 40 даже не заводится. Именно дисплей, именно развертка.

На VSync при частоте пиксельклока, указанной как 30 МГц, ловлю 35 Герц.    А 1024х600*35=21МГц...  Что-то я не пойму этих математических взаимосвязей между разрешением, частотой кадров и пиксельклоком. Точнее принцип ясен, но цифры немного не сходятся.

В общем, если подытожить - удалось получить стабильную картинку (под стабильной картинкой я имею в виду стабильное обновление информации из SDRAM)  с частотой 35 кадров в секунду, разрешением 1024х600 и 24 битным цветом.  Есть слааааабое мерцание.  Кстати, если включать в RGB565, результат не лучше.

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

Share this post


Link to post
Share on other sites
1 hour ago, MementoMori said:

точно не SDRAM - ее я прогнал тестами полчаса - все нормально

Я бы не спешил с выводами: для более-менее внятного тестирования нужно заменить вызовы rand() на локальную реализацию быстрого алгоритма генерации ПСП.

 

48 minutes ago, MementoMori said:

А 1024х600*35=21МГц...  Что-то я не пойму этих математических взаимосвязей между разрешением, частотой кадров и пиксельклоком. Точнее принцип ясен, но цифры немного не сходятся.

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

Share this post


Link to post
Share on other sites

Разберусь потом. НА худой конец поставлю дисплей 800х480.

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

Примерно как здесь.

x_8be247ce.jpg

Share this post


Link to post
Share on other sites

Все отлично, все работает.

Запустил FreeRTOS,запустил TouchGFX.  

Вот беда - если слишком большая картинка (я загрузил фон 1024х600), то линковщик выдает следующее

RUTFT\RUTFT.axf: Error: L6406E: No space in execution regions with .ANY selector matching wall.o(ExtFlashSection).
RUTFT\RUTFT.axf: Error: L6406E: No space in execution regions with .ANY selector matching blue_clocks_backgrounds_clock_classic_background.o(ExtFlashSection).
RUTFT\RUTFT.axf: Error: L6406E: No space in execution regions with .ANY selector matching blue_progressindicators_bg_medium_circle_indicator_bg_full.o(ExtFlashSection).

Видимо TOucgGFX Designer не умеет, перенастраивая проект, адаптировать его под объем необходимой памяти.  А самой памяти у меня предостаточно - 2 QSPI Flash. 128 мбит

Во  внешней флеш картинки и хранятся:


LOCATION_PRAGMA("ExtFlashSection")
KEEP extern const unsigned char _wall[] LOCATION_ATTRIBUTE("ExtFlashSection") =   // 1024x600 RGB888 pixels.
{
    0x67, 0x35, 0x23, 0x69, 0x37, 0x25, 0x69, 0x37, 0x25,

 

Друзья, где и как нужно изменить настройки проекта в Keil 5, чтобы линковщик это проглотил?

Share this post


Link to post
Share on other sites

И еще проблема с touch контроллером.

В пакете от ST есть библиотеки под FT5336   http://www.newhavendisplay.com/appnotes/datasheets/touchpanel/FT5336.pdf

У меня же контроллер FT5316  https://www.newhavendisplay.com/app_notes/FT5x16.pdf

Я существенной разницы не нашел. Единственное, что должно отличаться - это адреса. Ни в одном ни в другом даташите я адресов не нашел.

А вот ST на свой контроллер (FT5336) адрес откуда-то знает - 0x70.  К моему контроллеру адрес не подходит.

ft5336_ts_drv.Init(TS_I2C_ADDRESS);
  if(ft5336_ts_drv.ReadID(TS_I2C_ADDRESS) == FT5336_ID_VALUE)
  { 
    /* Initialize the TS driver structure */
    tsDriver = &ft5336_ts_drv;
    I2cAddress = TS_I2C_ADDRESS;
    tsOrientation = TS_SWAP_XY;

    /* Initialize the TS driver */
    tsDriver->Start(I2cAddress);
  }
  else
  {
    status = TS_DEVICE_NOT_FOUND;
  }

Вышеприведенный код вываливается с ошибкой TS_DEVICE_NOT_FOUND

Есть ли какая-нибудь возможность узнать адрес контроллера?

Share this post


Link to post
Share on other sites

мда.... там еще и регистр, из которого читать, надо знать. В коде для другого контроллера он есть. А в даташите нет.... Может я не так даташит читаю....

Share this post


Link to post
Share on other sites

http://www.pudn.com/Download/item/id/2983834.html в комментариях по-аглицки (This is a touch screen driver FT5316 MTK IC platform driver code, has been debugging OK ) к исходнику. Подойдёт?

PS: хоть гугля последнее время стал протухать как поисковик, но пока ещё: https://www.newhavendisplay.com/appnotes/datasheets/touchpanel/FT5x16_registers.pdf - все потроха.

Edited by Obam

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this