Top.Mail.Ru
Уведомления
Очистить все

[Решено] TFT дисплей ILI9341. SPI

Страница 2 / 6
 stm
(@stm)
Level 4

Или так обозначают от 11 до 15 бит?

lcds   displays colorpack

Всё равно не понятно, какой смысл это имеет в коде 15:11?
Как устанавливать интенсивность цвета?

 

Чтоб получить например фиолетовый цвет надо в одном пикселе смешать несколько цветов?
То есть настроить RGB цвета одного пикселя на разную интенсивность?
Как эта интенсивность цвета настраивается?

ОтветитьЦитата
Создатель темы Размещено : 08.10.2023 18:44
Aveal
(@aveal)
Top level Admin
От: @stm

Или так обозначают от 11 до 15 бит?

Да

Как эта интенсивность цвета настраивается?

5 битов на красный, 0b00000 - нет красного, 0b00001 - мало красного, 0b11111 - много красного.

Фиолетовый = красный + синий. Биты - 00001 000000 00001 - неяркий фиолетовый, 11111 000000 11111 - яркий фиолетовый.

ОтветитьЦитата
Размещено : 08.10.2023 19:44
 stm
(@stm)
Level 4

Ок, вижу.
На изображении
под красными битами написано 0-31
под синими битами написано 0-31
под зелёными битами написано 0-63

Это интенсивность цвета.
У красного и синего цвета по 5 бит, это 2^5==32
У зелёного цвета 6 бит, это 2^6==64

Соответственно интенсивность цветов у красного и синего от 0 до 31
А у зелёного от 0 до 63

ОтветитьЦитата
Создатель темы Размещено : 08.10.2023 20:18
Aveal
(@aveal)
Top level Admin

@stm Да, все верно.

ОтветитьЦитата
Размещено : 08.10.2023 21:18
 stm
(@stm)
Level 4

16 битные координаты

column address set 00ef 1024x826
ОтветитьЦитата
Создатель темы Размещено : 08.10.2023 22:31
 stm
(@stm)
Level 4
От: @stm

 

lcds   displays colorpack

 

https://rgbcolorpicker.com/565

ОтветитьЦитата
Создатель темы Размещено : 08.10.2023 23:05
 stm
(@stm)
Level 4

Чтоб заполнить весь дисплей цветами надо отправить
240*320==76800 байт?
Получается надо создать массив из 76800 байт.
У меня в МК 196 Килобайт Flash Memory всего.
А если мне надо несколько разных изображений посылать.
На дисплее я заметил есть разъём для карты памяти.
Хорошо, картинки может можно будет с карты памяти брать, а на кастомные, свои изображения из массива, места на Flash Memory не хватит.

ОтветитьЦитата
Создатель темы Размещено : 09.10.2023 00:03
 stm
(@stm)
Level 4

Ок, наверное при использовании повторяющихся цветов не надо столько места.
Но если создавать массив с цифрами для кодирования картинок, то нужно будет много места.

Но всё же с распределением памяти не совсем понятно.
Цветов ведь тоже не мало есть, для этого дисплея 262144 цветов.
262144 байт получается.

ОтветитьЦитата
Создатель темы Размещено : 09.10.2023 00:22
 stm
(@stm)
Level 4

Хорошо, цвета можно хранить дефайнами)
#define TFT_HOTPINK 0xFB56
Но допустим есть ситуации, когда надо заносить в массив для хранения изображения.

ОтветитьЦитата
Создатель темы Размещено : 09.10.2023 00:28
(@eduard)
Level 5 Moderator

@stm Да. Вопросов много. Это несколько статей.

- Работа с дисплеем на уровне регистров

- Цвета

- Теория вывода картинок и текста.

ОтветитьЦитата
Размещено : 09.10.2023 06:28
 stm
(@stm)
Level 4

Мне казалось что матрица TFT сделана на основе разноцветных светодиодов.
Оказывается это тоже жидкие кристаллы.
Разные цвета получают благодаря поляризационным фильтрам?
------------------------------------------------

Не получается даже экран цветом заполнить.
Не думаю, что дело в инициализации.
Параметры для инициализации стандартные, отсюда брал:
https://github.com/martnak/STM32-ILI9341/blob/master/Src/ILI9341/ILI9341_STM32_Driver.c#L125
Функции установки курсора и заполнение экрана цветом тоже стандартные.

TFT_Init();
TFT_SetCursorPosition(0,0,239,319);

//200 раз ILI9341_Write_Data(0xbb);
------------------------------------------------
В CubeMX есть драйвер для ILI9341, но у меня с ним тоже не получилось экран цветом заполнить.
Надо найти инструкцию для применения драйвера.
Но интереснее мне самому написать драйвер.

tim
ОтветитьЦитата
Создатель темы Размещено : 10.10.2023 21:26
 stm
(@stm)
Level 4

У кого есть такой же дисплей, можете этот код проверить на нём?
https://onlinegdb.com/mFwPnl5N9
Не могу разобраться что там не так.
Возможно что то в функции TFT_Init.
Но я проверял всё в этой функции, это стандартные настройки.

ОтветитьЦитата
Создатель темы Размещено : 11.10.2023 18:08
 stm
(@stm)
Level 4

Код, который выше неправильный был.
Вот правильный https://onlinegdb.com/_hLub2-sbo

Ну то есть скорее всего и этот код неправильный, но в коде выше были ошибки.

ОтветитьЦитата
Создатель темы Размещено : 11.10.2023 18:45
(@eduard)
Level 5 Moderator

https://disk.yandex.ru/d/ymB60PAjT5rjTw

/STM32Lib/Library/

Там есть драйвера рабочие.

ОтветитьЦитата
Размещено : 11.10.2023 19:17
 stm
(@stm)
Level 4

Да, круто. Переделал под себя драйвер и заработало.
Теперь надо разбираться где ошибка у меня в коде была))
Полностью драйвер не скопируешь, там на Си++ написано, я на Си пишу.
Ошибка где то в инициализации дисплея у меня была.

ОтветитьЦитата
Создатель темы Размещено : 11.10.2023 19:44
Страница 2 / 6
Поделиться: