Jump to content

    

Настройка TouchGFX и LTDC в CubeMX

Знаю, что столь нелюбимый всеми КалоКуб нужно выкинуть.

Но все же..

Настраиваю  TouchGFX.

Вот настройки LTDC

gsvZM6jl.png

 

 

 

Настройки слоев

 

VQP1flnK.png

 

 

 

И вот как ругается на все это панель настроек TouchGFX

 

ydQsOnoV.png

 

 

Ошибка в FrameBuffer исчезает, если формат ARGB8888 заменить на RGB888

Ошибка в Number of Layers исчезает, если поставить 1 слой.

Под буфер у меня память SDRAM 1 meg x 32 бит x 4 банка. Вот ее настройки

mWYlJkBj.png

 

 

Что у меня не так с настройками? Или (подозреваю самый худший вариант) мне нужно две микросхемы SDRAM?

Share this post


Link to post
Share on other sites

4 * 1024 * 600 * 2 = 4915200 /1024 /1024 = 4MB

2^12 * 4 * 4 ?

 

Калькулятор !

Share this post


Link to post
Share on other sites
3 minutes ago, x893 said:

4 * 1024 * 600 * 2 = 4915200 /1024 /1024 = 4MB

2^12 * 4 * 4 ?

 

Калькулятор !

Можно еще чуточку внятнее?

Share this post


Link to post
Share on other sites

За вас посчитали требующийся объём памяти. мегабиты и мегабайты они связаны, но не одно и то же...

Share this post


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

За вас посчитали требующийся объём памяти. мегабиты и мегабайты они связаны, но не одно и то же...

Я это понял.

А что ознчачает 2 в 12 степени дважды умноженная на 4? Это 65535. И?

У меня 32 мегабит, то есть 4 мегабайт. Там запас что ли нужен?

Share this post


Link to post
Share on other sites

Слой и буфер это разные вещи?

Те есть, если мне нужны и 2 слоя и двойной буфер, мне требуется 1024х600 точек х 4 байта на пиксель х 2 слоя х 2 видеостраницы = 9 830 400 байт. Или 78 643 200 бит.  А у меня память 128 мегабит.

Чисто арифметически получается.

А по какой причине может не хватать памяти? Из за того, что 32 бита как то раскдадываются и преобразуются в rgb?

 

Share this post


Link to post
Share on other sites

Сделайте проверку реального размера SDRAM программно.

Share this post


Link to post
Share on other sites

Устройства пока нет.

Закончена разработка платы, идет рутинная проверка всего и вся, в том числе и назначения пинов.

Полез с этой целью в куб и обратил внимание, что из возможных 13 бит адресной шины я указал 12, так как именно столько их задействовано в выбранной микросхеме.

13-й адресный пин у меня за ненадобностью задействован для других задач (задейстованы все пины контроллера и перекинуть некуда, только, скрепя сердце, освобождать его, если не пройдет с памятью)

И вот я не знаю, что делать, зародилось подозрение, что нужна микросхема со, скажем так, более разрядным адресным управлением и если это так, то пин придется освобождать.

Хотелось бы понять это до заказа и монтажа.

Помогите...

Если адресная шина 12  бит, то, по идее, я могу управлять микросхемой имеющей 4096х4096 = 16М х 32 бит ячеек в одном банке. Я правильно понимаю, или раскатал губу?

Share this post


Link to post
Share on other sites

Хоть ты схему приложили - телепаты все уехали.

Share this post


Link to post
Share on other sites

Если надо, то я приложу, вечерком.

Но, как мне думалось, это понятно и без схемы. Знающим понятно, я незнающий - мне непонятно.

Да и вопрос то о внутреннем устройстве контроллера, а не о моей схеме. 

Давайте рассудим:

Объем одного кадра в режиме ARGB888 = 1024x600х4 байта= 2 457 600

Для двухслойного кадра 2 457 600 х 2 слоя = 4 915 200

А если хочется  использовать двойной буфер, то 4 915 200 х 2 буфера = 9 830 400 байт.

То есть в принципе должно хватить микросхемы с организацией памяти типа 4M x 8 х 4 банка.

Но, для большей скорости выбрана 32 битная память. То есть 1 пиксель в формате ARGB8888 умещается в одной ячейке.

А значит памяти требуется 1024х600 х 2 слоя х 2 буфера = 2 457 600 х32 бит.

У меня память 1 meg x 32 x 4 banks.  То есть 4 194 304 слов по 32 бита. Адресная шина - row -11 bit, column - 7 bit

 

Будет работать?

 

P.S. почему в кубе в настройках указан только один банк памяти - второй? И его, типа, можно менять, но он не меняется.

Share this post


Link to post
Share on other sites

Тааааак...

Потихоньку разбираюсь.

Оказывается Layer1 должен быть только RGB888, так как альфа канал ему, понятное дело, не нужен. А вот верхний слой - ARGB8888. Если сделать наоборот или оба ARGB8888 - выдает ошибку.

А вот с количеством слоев пока неясно. Понятно только, что дело не в количестве памяти - я загрузил проект от ST, в нем небольшое разрешение и 1 слой по умолчанию. Ставлю второй - загорается противно-розовый крестик.....

Буду копать дальше

Share this post


Link to post
Share on other sites

Так и не докопался.

Ну неужто никто не знает? Дело ведь не в кубе как таковом. Настройки они и  в Африке настройки - что у меня не так со слоями? Почему куб ругается на их количество, равное двум?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this