Или так обозначают от 11 до 15 бит?
Всё равно не понятно, какой смысл это имеет в коде 15:11?
Как устанавливать интенсивность цвета?
Чтоб получить например фиолетовый цвет надо в одном пикселе смешать несколько цветов?
То есть настроить RGB цвета одного пикселя на разную интенсивность?
Как эта интенсивность цвета настраивается?
Или так обозначают от 11 до 15 бит?
Да
Как эта интенсивность цвета настраивается?
5 битов на красный, 0b00000 - нет красного, 0b00001 - мало красного, 0b11111 - много красного.
Фиолетовый = красный + синий. Биты - 00001 000000 00001 - неяркий фиолетовый, 11111 000000 11111 - яркий фиолетовый.
Ок, вижу.
На изображении
под красными битами написано 0-31
под синими битами написано 0-31
под зелёными битами написано 0-63
Это интенсивность цвета.
У красного и синего цвета по 5 бит, это 2^5==32
У зелёного цвета 6 бит, это 2^6==64
Соответственно интенсивность цветов у красного и синего от 0 до 31
А у зелёного от 0 до 63
Чтоб заполнить весь дисплей цветами надо отправить
240*320==76800 байт?
Получается надо создать массив из 76800 байт.
У меня в МК 196 Килобайт Flash Memory всего.
А если мне надо несколько разных изображений посылать.
На дисплее я заметил есть разъём для карты памяти.
Хорошо, картинки может можно будет с карты памяти брать, а на кастомные, свои изображения из массива, места на Flash Memory не хватит.
Ок, наверное при использовании повторяющихся цветов не надо столько места.
Но если создавать массив с цифрами для кодирования картинок, то нужно будет много места.
Но всё же с распределением памяти не совсем понятно.
Цветов ведь тоже не мало есть, для этого дисплея 262144 цветов.
262144 байт получается.
Хорошо, цвета можно хранить дефайнами)
#define TFT_HOTPINK 0xFB56
Но допустим есть ситуации, когда надо заносить в массив для хранения изображения.
@stm Да. Вопросов много. Это несколько статей.
- Работа с дисплеем на уровне регистров
- Цвета
- Теория вывода картинок и текста.
Мне казалось что матрица 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, но у меня с ним тоже не получилось экран цветом заполнить.
Надо найти инструкцию для применения драйвера.
Но интереснее мне самому написать драйвер.
У кого есть такой же дисплей, можете этот код проверить на нём?
https://onlinegdb.com/mFwPnl5N9
Не могу разобраться что там не так.
Возможно что то в функции TFT_Init.
Но я проверял всё в этой функции, это стандартные настройки.
Код, который выше неправильный был.
Вот правильный https://onlinegdb.com/_hLub2-sbo
Ну то есть скорее всего и этот код неправильный, но в коде выше были ошибки.
Да, круто. Переделал под себя драйвер и заработало.
Теперь надо разбираться где ошибка у меня в коде была))
Полностью драйвер не скопируешь, там на Си++ написано, я на Си пишу.
Ошибка где то в инициализации дисплея у меня была.