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

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

Так и есть

Функция

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 МГц)

 

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


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

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

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

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

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

 

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

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


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

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

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

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

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

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


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

1 hour ago, MementoMori said:

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

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

 

48 minutes ago, MementoMori said:

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

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

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


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

Вообще-то частота кадров под 60 герц и строк15..18 кгц нормальное дело. 30 герц как-то аовсем не то ...

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


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

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

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

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

x_8be247ce.jpg

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


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

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

Запустил 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, чтобы линковщик это проглотил?

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


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

И еще проблема с 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

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

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


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

5 minutes ago, MementoMori said:

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

В цикле перебрать.

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


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

Да я думал, но там таймаут несколько секунд... ну ничего подожду, 128 адресов - не так уж много.

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


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

5 minutes ago, MementoMori said:

Да я думал, но там таймаут несколько секунд...

Так то там. Ну, можно и подождать, конечно.

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


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

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

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


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

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 - все потроха.

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

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


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

Спасибо, почитаю. Ну а еще один вопрос, тот что выше по тексту был? Про нехватку памяти для картинок...

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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