7 tft lcd monitor как подключить?

STM32 LTDC и 7-дюймовый дисплей: часть 1

Доброго времени суток.

Речь пойдёт о подключении дисплея AT070TN94 с параллельным интерфейсом к контроллеру STM32H743. И хотя в интернете достаточно много информации по данной теме, при создании своего устройства у меня периодически возникали те или иные вопросы, ответов на которых найти не удавалось. Пишу в первую очередь для новичков, а профи приглашаю почитать ради советов и аргументированной критики (первая статья как-никак).

В первой части статьи затрону частично выбор ЭКБ и настройку LTDC. Если сообщество написанное одобрит, выйдет вторая часть по интеграции с небезызвестным TouchGFX, значительно упрощающим создание графического интерфейса.

У нас было:

Задача по созданию некоторого устройства, содержащего среди прочего цветной дисплей достаточно большой диагонали, построенное на базе STM32.

Собственно, сам дисплей AT070TN90/92/94. Лично мне при беглом сравнении документации не удалось выявить различий между этими тремя моделями. Дисплей был выбран исходя из доступности к приобретению в известном китайском магазине (по цене около 1000-1500 рублей за штуку).

Для работы с данным типом экранов, не содержащим собственной видеопамяти, необходимо где-то хранить отображаемую картинку. ОЗУ микроконтроллера слишком мала для такой задачи, поэтому приходится использовать внешнюю SDRAM память, у нас это была W9812G6KH.

Драйвер питания LCD панели. Исходя из документации на дисплей, становится жутко понятно, что ему требуются 4 нестандартных напряжения, это не считая всем знакомых 3.3 В и напряжения питания подсветки. Выбрана микросхема TPS65100.

Драйвер подсветки дисплея. Преобразовывает 5В -> 9В для питания подсветки, задает ток светодиодов. Поддерживает регулировку яркости путем подачи ШИМ-сигнала. Использовали TPS61040DBVR.

Разъем для подключения шлейфа дисплея к печатной плате. Имеет 50 контактов с шагом 0.5 мм. Ищется по запросу «FFC FPC 50 pin» .

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

Так выглядит сам экран и разъем для подключения к плате

Немного теории про дисплей

Как я озвучил ранее, дисплей данного типа не имеет на борту собственной видеопамяти. Данные о цвете пикселей непрерывно переносятся непосредственно из параллельного интерфейса, используя в качестве синхронизации сигналы HSYNC, VSYNC, CLK и DE. В параллельную же шину они передаются микроконтроллером прямиком из видеобуфера. Давайте взглянем на картинку ниже, взятого из замечательного Application note AN4861 :

Что нам тут пытаются показать?

Получив сигнал VSYNC, дисплей понимает, что начат новый кадр, и готовится принять первый пиксель. Далее следует задержка в несколько тактов CLK, называемая VBP. После чего, получив сигнал HSYNC, выждав опять же некоторую задержку, экран начинает попиксельно заполнять первую строку (1 такт CLK = 1 пиксель). Заполнив строку и выждав задержку (её можно мыслить как некоторая невидимая часть ширины дисплея), снова приходит сигнал HSYNC, начинается заполнение новой строки, и так до конца дисплея + некоторой задержки VFP, которую также можно мыслить как невидимую область под экраном. Заполнив таким образом кадр, следует сигнал VSYNC, и история повторяется.

А что DE? Он сигнализирует о том, что на шине сейчас валидные RGB данные о пикселе (как видно на картинке выше). Вообще, некоторые дисплеи, в том числе и использованный мной, могут работать только от двух сигналов, DE и CLK, вычисляя сигналы горизонтальной и вертикальной синхронизаций самостоятельно. Соответствующий режим выбирается подачей 1 или 0 на вход MODE экрана. Для конфигурирования LTDC нам в принципе будет все равно, какой режим выбрать: контроллер будет формировать и сигналы H-Vsync, и DE.

Организация схемы питания дисплея

Все необходимые дисплею напряжения будут формировать специально обученные микросхемы TPS61040DBVR и TPS65100, драйверы подсветки и питания LCD матрицы соответственно. В их даташитах хорошо описаны схемы включения и даже даны рекомендации по трассировке печатной платы, поэтому на этих моментах я останавливаться не буду. Все, что необходимо будет сделать — это рассчитать обвязку из резисторов под требуемые напряжения питания по формулам. Ещё у каждой из микросхем есть вход ENABLE, который можно подключить прямо к МК и получить возможно программно управлять питанием экрана. Кроме того, на вход ENABLE драйвера подсветки можно подать ШИМ сигнал и таким образам управлять яркостью. Удобно, не правда ли?

Настраиваем LTDC

Тут мы будем пользоваться CubeMX. Для желающих настроить на регистрах была вот эта статейка, + в Application note AN4861 все подробно расписано и сложностей возникнуть не должно. Сначала тайминги сигналов. Разберу подробно на примере HSYNC.

Для начала сравним 2 картинки.

Таблица с числовыми значениями таймингов экрана

Обратим внимание на H blanking (картинка 1) и HBP (картинка 2). Видим, что тайминги в понимании ST и производителя дисплея немного разные, соответственно, просто переписать значения таблицы в куб не выйдет, придется открывать калькулятор.

Включим LTDC, выберем режим (у нас это RGB888), и заглянем в настройки.

Начнём. Ширину импульса синхронизации (HS pulse width, таблица 1) даташит нам разрешает выбрать самостоятельно из некоторого диапазона. Пусть будет 18. Далее следите за картинками. HBP = H blanking — HS pulse width. Active width = ширина нашего дисплея. HFP = H front porch (таблица 1).

Аналогично поступаем и с вертикальными таймингами. Что ещё? Полярности сигналов синхронизации либо берем из даташита, либо подбираем экспериментально.

Background color можно установить любой, кроме черного. Этим цветом дисплей радостно встретит нас, если в итоге заработает.

Устанавливаем частоту тактирования блока LTDC равной 33,3 МГц (как указано в таблице 1) путем настройки соответствующей PLL из окна тактирования куба.

Идём на вкладку Layer settings.

Ставим 1 слой (пока делаем все на минималках, лишь бы работало). Horizontal start = HSYNC width + HBP из предыдущих настроек куба. Это расположение нашего слоя в пространстве дисплея. Если поставить в данном месте 0, начало слоя окажется в невидимой области. С Vertical start аналогично. Формат цвета выберем попроще (RGB88). Frame Buffer Start Address — адрес расположения нашего видеобуфера. В моем (и в вашем, скорее всего, тоже) случае это адрес FMC, в котором живёт внешняя ОЗУ. Либо адрес внешней SPI flash, куда прошита какая-то картинка. Ну и в очередной раз укажем размер активной области дисплея в настройках буфера ниже.

Зайдем на вкладку GPIO settings и вручную укажем максимально возможную скорость использующимся пинам. Это важно, но куб не делает это автоматически.

Уже в самом коде после генерации подадим разрешающие сигналы на включения питающих драйверов, отпустим сигнал RESET дисплея.

И что теперь?

А теперь всё должно заработать. Если нет — диагностику начинать как всегда с питания. Важно, хотя микросхемы-драйверы и имеют встроенную защиту от КЗ, при случайном замыкании выходов питания на землю сгорают моментально. Также возможно, что следует поменять полярность сигналов синхронизации. А может, вы забыли инициализировать микросхему ОЗУ какой-нибудь SDRAM_Initialization_Sequence? И вообще, она у вас точно работает?

Снят ли с дисплея RESET? Посмотреть осциллографом, что там действительно творится на выходах LTDC, посчитать периоды и частоту. Если плата самодельная — проверьте целостность линий.

Если заработало, можно поиграться с Background color, или же залить экран каким-нибудь цветом с помощью memset:

Либо включить DMA2D (в настройках выбрать формат цвета такой же, как в LTDC)

И попробовать залить экран цветом при помощи него:

Заключительное слово автора

Надеюсь, написанное кому-нибудь пригодится и покажет, что в подключении подобного рода экранов ничего сложного нет (кроме, пожалуй, трассировки печатной платы). Какие-то малозначительные на мой взгляд моменты были выкинуты — спрашивайте в комментариях. В любом случае, спасибо за внимание.

Репозиторий с минимальным проектом тут. Там же живёт pdf со схемой.

TFT дисплей

Давно прошли времена, когда все разнообразие мониторов ограничивалось электронно-лучевыми трубками. Пользователи могут выбирать мониторы, которые строят изображение с помощью самых разных технологий. Они дают возможность создавать как универсальные, так и узкоспециализированные модели. В этой статье речь пойдет о технологии, без которой невозможен вывод изображения ни в одном из производящихся ныне мониторов. Это – TFT дисплей.

Принцип работы TFT LCD дисплея

Прежде чем углубиться в тонкости работы экрана TFT, отметим, что дисплеи составляются из двух основных технологий. Первая – это LCD, а вторая – непосредственно матрица. Два элемента соединяются вместе, выполняя общую функцию – вывод изображения. Два значения не должны быть связаны одно с другим. Так, матрица TFT может иметь какую угодно подсветку – LCD, LED и их вариации. Точно так же один вид подсветки может быть соединен с разными матрицами. Как на подсветку, так и на матрицу возлагается свой список технических характеристик, за которые они отвечают. Однако главным параметром в определении предназначения монитора служит именно матрица.

Читайте также  Как подключить два динамика на один канал?

Чтобы не путать LCD с TFT, расшифруем, что означает каждая аббревиатура. Кроме того, нелишним будет разобраться, как работают эти технологии.

Что такое LCD

LCD – это технология изготовления мониторов, знакомая нам по аббревиатуре ЖК (жидкокристаллический). Жидкие кристаллы – это особое вещество, способное изменять свои свойства при воздействии электричества. Если точнее, то изменения в них вызывают электромагнитные волны. От типа этой поверхности зависит качество подсветки и другие функции. Экраны называются жидкокристаллическими, поскольку во включенном состоянии вещество проявляет свойства кристаллов (в плане воздействия на изображение).

Что такое TFT дисплей

Вторая часть монитора – матрица. В нашем случае речь идет о TFT. Расшифровывается название как Thin Film Transistor. Матрица состоит из транзисторов в виде тонкой пленки. Применимость ее широка – калькуляторы, дисплеи ардуино, старые и не очень телефоны, а также мониторы для ноутбуков и ПК.

В то время, когда ЖК мониторы только начали поступать в продажу, они оснащались так называемыми пассивными матрицами. Эти элементы были довольно медлительными, поскольку для смены значения пикселя на нем должно было измениться напряжение. Из-за физических характеристик пикселей это происходило медленно. Следовательно, те мониторы имели низкую частоту обновления и нередко раздражали мерцающим экраном.

Все мониторы, производимые теперь, оснащаются активными матрицами. За значение ячеек отвечает специальный транзистор, хранящий значение в двоичном коде (0/1). Это позволяет сохранить значения пикселя вплоть до смены сигнала. Такой подход увеличил скорость обновления экрана и позволил избавиться от мерцания. Новые активные матрицы как раз и получили название TFT.

Виды матриц TFT

Если разобраться, то получается, что тип матрицы TFT встречается абсолютно во всех жидкокристаллических мониторах. Как объяснялось раньше, основой технологии служат тонкопленочные транзисторы. Такая технология считается наиболее прогрессивной, и доступной альтернативы ей не найдено. Схема работы такого механизма заключается в следующем.

В современных мониторах построение цвета идет по схеме RGB. Это означает, что каждый отдельно взятый пиксель может отображать красный, зеленый или синий цвет. А уже из этих базовых цветов составляются все остальные. Получается, в каждом пикселе находятся ячейки цвета. Их три, и к каждой подключен свой транзистор, который и сообщает, какие цвета должны быть отображены в данный момент. Такая схема понятна, но сложна в изготовлении, особенно если учитывать то, насколько тонкие эти схемы. Поэтому качественные матрицы и стоят больших денег.

Когда разнообразие технологий было не так велико, мониторы так и назывались – TFT. Однако тип экрана TFT не раскрывает всех технических характеристик, заложенных в нем. Поэтому с течением времени от такой подписи отказались. Сейчас различают три основных подвида матрицы, каждая из которых имеет свои отличительные черты. О них и пойдет речь в следующих подразделах.

Тип матрицы TFT TN

Первой в списке будет рассмотрена TFT матрица, именуемая TN. Она сохранила основные черты первых тонкопленочных конструкций. Чаще всего такие матрицы недорогие в создании, а потому стоят на многих бюджетных мониторах. Их родная стихия – это офисы, домашние ПК и т.п., а также игровые модели. Почему это так, станет ясно, когда разберемся в основных отличительных чертах TN.

Основной плюс технологии TN – это низкое время отклика монитора. Речь идет о показателе, который характеризует способность пикселя быстро изменять свое свечение. У TN этот показатель на высоте ввиду особенностей конструкции. Низкий отклик очень хорош для геймеров. Это позволяет им моментально реагировать на малейшие изменения в игровом процессе, а также повысить плавность картинки (это снизит утомляемость).

Однако есть у TN и «фирменный» минус – углы обзора. Наиболее заметен этот недостаток на ноутбуках. Малейшего изменения угла зрения достаточно, чтобы цвета поменяли свою яркость до неузнаваемости. Разумеется, такой экран не подойдет для дизайнеров, художников и других профессионалов. Однако тип TN+Film заслуживает внимания профессиональных геймеров и киноманов, так как в нем этот параметр приведен в более-менее приличное состояние.

IPS матрицы

Второй тип, который мы рассмотрим – это IPS матрица. Ее можно считать противоположностью TN. Отличительные черты – это насыщенность и точность передачи цвета, которые абсолютно не меняются с изменением угла зрения. В то же время достичь этого удалось ценой снижения времени отклика. Однако этот параметр может быть компенсирован увеличенной частотой обновления экрана. Кроме того, в отдельных игровых моделях этот параметр может быть улучшен. Впрочем, стоимость IPS матриц довольно высока, и это также можно считать одним из минусов.

Лучше всего матрица IPS подойдет для профессионалов, работающих с цветом, изображением и 3D моделями. Именно для таких пользователей важнее всего цветопередача. В сочетании с Super LCD подсветкой такой инструмент может стать серьезным подспорьем в работе. Однако и геймеры заинтересуются устройствами, в которых был ускорен отклик монитора.

VA, MVA, PVA

«На закуску» оставим матрицы, которые соединили в себе лучшие стороны предыдущих. Конечно, они не дотягивают до них в полном смысле этого слова, однако предоставляют неплохой баланс характеристик. Существуют разновидности VA, имеющие перевес в ту или иную сторону, поэтому стоит обратить на это внимание.

Обычный VA, а также MVA – это те подвиды, за которыми большое будущее. Их часто используют в экранах с большой диагональю, изогнутыми моделями и т.д. Охват цвета и его насыщенность здесь приближена к IPS, а скорость отклика редко превышает 4 мс. На них стоит обратить внимание тем, кого интересует как игровая задержка, так и глубокая цветность, и все это при разумной цене.

Мониторы SVA, WVA и подобные имеют баланс, смещенный в сторону TN. Да, у них низкий отклик, однако цветность в них ненамного лучше, чем у бюджетного варианта. Из улучшений выделяются разве что увеличенные углы обзора.

Что лучше Super LCD или TFT

Пытаясь выбрать TFT дисплей, можно прибегнуть к методу сравнения. Он хорош, когда нужно выбрать одну модель из нескольких похожих, или же понять, какая технология подойдет в конкретной ситуации. Однако склонность сравнивать может стать ловушкой. Это все равно что сравнивать Windows с Linux. У них разные сферы успешного применения, и то, что хорошо для одного пользователя, будет лишним для другого. Поэтому прежде чем прибегнуть к инструменту сравнения, нужно убедиться, что это будет целесообразно. В противном случае сравнение окажется пустой тратой времени.

Попытка выяснить, что же лучше – LCD или TFT как раз из этой области. Те, кто внимательно прочитал предыдущие разделы, поняли, что LCD подсветка и TFT дисплей – это не конкуренты, а два компонента, состоящие в неразрывном симбиозе. Одна технология без другой будет бесполезной, превращая монитор в кусок пластика.

Что же касается Super LCD, то это неофициальное название экрана, снабженного качественной ЖК подсветкой и матрицей IPS. Такое название закрепилось из-за того, что выбранная комбинация технологий обеспечивает яркое изображение с правильной цветопередачей. Если выбирать между IPS (Super LCD) и TFT (ее классической вариацией, TN), то более технологичным будет первый вариант.

Какой тип матрицы подходит именно вам

Чтобы выбрать подходящий TFT дисплей, сперва нужно определиться с задачами, которые предстоит решать пользователю ПК. Используя знание о характерных преимуществах той или иной технологии, можно выбрать тип матрицы TFT, который будет оптимальным по соотношению цена-качество и по техническим характеристикам.

Для геймеров предпочтительны следующие типы: бюджетный – TN TFT дисплей, или же игровые модификации IPS. Фотографы, дизайнеры и архитекторы нуждаются во флагманском IPS. А для киноманов и владельцев домашних ПК IPS или PLS не обязательны, хотя и остаются лидерами с точки зрения цвета. В этом случае можно остановиться на VA или MVA матрицах.

Итак, TFT дисплей является основой для всех производящихся мониторов. Универсальность технологии позволяет использовать ее в устройствах самых разных классов. Пока наука не совершила новый прорыв, TFT дисплей останется безальтернативной опцией производства.

Заведи экран: свой TFT–дисплей

Начался новый семестр. В качестве курсовой работы в институте решил замутить такой вот девайс для вывода графики на дисплей от NOKIA.

Ты конечно понимаешь, мой друг, как можно использовать этот девайс в своих хакерских (и не только) целях. Если выбрать все детальки SMD-шные, то можно получить реально небольшое устройство для вывода на экран с портом RS232. Дисплей использовал: Nokia 6100/6610/7200/7250/3100 в рамке с коннектором.

Такой экран несложно найти в Интернет-магазинах, например www.siruist.ru, www.sparkfun.com или в палатках, где продают запчасти для мобильных телефонов ( стоит он 150-200 руб ) . Либо просто выдрать дисплей из старого телефона. Но если такой не нашёл — не беда. Изучив эту статью и исходные коды и поразмыслив головой, ты можешь завести дисплеи от Nokia N95 или Sony PSP.

Читайте также  Как подключить парктроник на 8 датчиков?

Почему я выбрал такой дисплей – он удобен в пайке. Смотри на скриншоте распиновку.

Как видно, существует коннектор на дисплее к которому тяжело подпаяться (шаг 0.5мм). Поэтому лучше ищите дисплеи с такой распиновкой как здесь.

На рисунке вы можете видеть 3 дисплея:

На крайнем левом отсутствуют контакты для удобной пайки (только коннектор). На остальных контакты и коннектор присутствуют. Также важно, что встроенный контроллер у каждого экрана разный. Для этого дисплея существует 2 вида контроллеров:

У каждого контроллера своя система команд и, соответственно, софт для одного из них не будет работать для другого. Народ научился различать эти контроллеры по цвету коннектора: коричневый — Epson S1D15G10, зелёный — PCF8833.

Но это не факт. Я советую прошить микроконтроллер для 2 видов дисплеев и посмотреть результат. К примеру на скриншоте все дисплеи с контроллером PCF8833. Я писал исходный код микроконтроллера для PCF8833, но совершенно не сложно изменить его и для Epson`a!

Ну вроде с трудностями закончили, переходим к нашей схемке:

А остальное всё есть на схеме.

6.5В нам нужно на подсветку (от 6В до 7В = max). Регулируется подстроечным R8. Также ВАЖНО – разделить землю у дисплея (т.е. землю (выводы 8,9 коннектора) напрямую присоединить к входу 2 разъёма источника питания) – это нужно для защиты от помех. Желательно поставить 2 различных преобразователя из 5В в 3.3В – один для питания контроллера и периферии дисплея, второй – для непосредственно дисплея (выходы 1,6 – соответственно коннектора дисплея).

После разбора с железкой и пайкой приступаем к программированию для Atmega.

Открываем WinAVR, создаём проект, будем писать на С. Я отказался от assembler`a потому что код стал реально громоздким.

void sendCMD(byte cmd); // послать команду на PFC8833
void sendData(byte cmd); // послать байт данных
void InitLCD(void); // инициализация дисплея
void shiftBits(byte b); // перестановкой выводов портов эмулируем SPI
void setPixel(byte r,byte g,byte b);
// пишет в видеопамять дисплея 3 байта (r,g,b) с заданным цветом
…..
void PointXY(int x,int y,byte r,byte g,byte b)
// рисует точку на экране с координатами x,y и цветом r,g,b
<
sendCMD(CASET); // column set (po x)
sendData(x);
// команда CASET – задаёт область рисования по x, от byte1 до byte2
sendData(x); // у нас byte1=byte2 , так как рисуем точку
sendCMD(PASET); // page set (po y)
sendData(y); // аналогично для y
sendData(y);
sendCMD(RAMWR);
setPixel(r,g,b); //пишем в память
>

Я привёл только часть кода. Все исходники можно найти в архиве. У данного дисплея – 4096 цветов, следовательно 12 бит на пиксел RRRRGGGGBBBB.

Так же я написал консольную прожку для компа для рисования (исходники также есть в архиве).

Делаем монитор и телевизор из старого планшета при помощи скалера LVDS

Доброго времени суток! Сегодня я вам расскажу как при помощи одной посылочки из Китая и хлама который валяется у вас дома сделать телевизор, ну или по крайней мере монитор. Дело в том, что у многих, наверное, валяются еще древние ноутбуки, какие-то испорченные мониторы, нерабочие планшеты и все это можно пустить в ход. Ну да отдельно матрицу подключить нельзя, но с помощью нехитрого устройства, а именно универсального скалера, можно подключить любую матрицу к HDMI, VGA или даже сделать телевизор.

И так, что мы имеем.

Я заказал себе довольно такой продвинутый скалер.

И попался под руку вот такой планшет, он еще живой хотя уже и битый сенсор, батарея не так хорошо держит, весь поцарапанный, но матрицу из него можно позаимствовать.

Разбираем планшет, чтоб получить доступ к матрице.

Отключаем все шлейфы и отбрасываем в сторону все, кроме матрицы.

Матрицы имеют довольно стандартное подключение, в них интерфейс LVDS и стандартизированный ряд разъёмов. Какой разъем у вашей матрицы можете посмотреть по внешнему виду либо же по даташиту. На каждый тип матрицы существует отдельный шлейф. Например у меня есть несколько шлейфов.

Более старый стандарт, от матриц с ламповой подсветкой

Более новый стандарт, от матриц с светодиодной подсветкой

Шлейф для более мелких планшетов

1 – это более старый стандарт, там где матрицы еще были с ламповой подсветкой.

2 – более новый стандарт, там где LED-матрицы идут.

3 – эти разъёмы встречаются в 7 дюймовых планшетах и разных небольших.

С другой стороны разъёмы более-менее стандартизированы и подходят в практически любой универсальный скалер.

Таким скалером я еще ни разу не пользовался в этом гораздо больше функций по сравнению с теми, что я использовал, даже пульт в комплекте.

Прежде чем подключать матрицу необходимо правильно сконфигурировать плату (скалер), чтоб не испортить матрицу. Обязательно рекомендую сначала скачать даташит к матрице, чтоб вы знали, какое разрешение матрицы, какое питание логики и подсветки.

Первое с чего стоит начать, будем смотреть слева на право. На скелере есть ряд перемычек, левая верхняя конфигурирует напряжение логики, его необходимо выбрать исходя из вашей матрицы. Как правило, матрицы ноутбуков имеют питание 3.3 вольта, в обычных мониторах 5 вольт, но здесь еще есть перемычка на 12 вольт, честно говоря, я не знаю, где такое напряжение используется. Сразу меняем эту перемычку, чтобы не спалить нашу матрицу, в моем случае логика 3.3 вольта.

Дольше идет следующий набор перемычек, это выставляется разрешение экрана. Хочу заметить, что помимо разрешения экрана еще меняется битность. На обратной стороне скалера есть шпаргалка, в которой написано разрешение и битность. Битность бывает 6-bit и 8-bit, визуально разъёмы 6-ти и 8-ми битные различаются по количеству контактов. Информацию какой битности ваша матрица опять же читаем в даташите.

6 и 8 битные шлейфы

Шпаргалка по переключению перемычек

Прежде чем переходить к матрице необходимо изучить даташит, его очень легко найти по наклейке, которая находится сзади матрицы. В моем случае это «LP101WX1». В даташите на матрицу нас интересуют 3 или 4 пункта, в зависимости от того это LED-матрица или это матрица с лампой с холодным катодом. Прежде всего, определим какое разрешение матрицы, просто листаем даташит и ищем эту запись. Здесь у нас в таблице указан формат пикселей (Pixel Fotmat) то есть это 1280×800, соответственно перемычками на сайлере необходимо выбрать это разрешение. Ширина интерфейса соответствует количеству цветов, в данном случае это 6-bit или 262 144 цветов. Этих двух параметров нам достаточно чтоб выбрать правильный режим работы матрицы.

Но для того чтобы матрица выжила нам еще нужно выставить правильное напряжение, листаем дальше. И вот у нас сводная таблица электрических характеристик. Logic, то есть питание логики, напряжение питания логики (Power Supply Input Voltage) от 3,0 до 3,6 вольт, типичное 3,3 вольта, соответственно перемычку питания матрицы выставляем на 3.3 вольта.

И на всякий случай смотрим подсветку, этот пункт нужно смотреть только в том случает если матрица с LED подсветкой. Как написано на плате, плата питается от 12 вольт, а наша подсветка работает от 5 до 21 вольта, 12 как раз будет в самый раз. Я других матриц не встречал у которых напряжение питания 5 вольт, но предполагаю, что такое может быть, если будете использовать матрицу из какого ни будь маленького планшета. Поэтому вот этот параметр обязательно смотрите, иначе можете просто испортить подсветку матрицы. Если же питание будет отличное от 12 вольт, то напрямую подключать разъем питание подсветки нельзя, нужно будет обеспечить нужное напряжение питания.

И так, настраиваем скалер в соответствии с данными из даташита. Меня интересует разрешение 1280×800 и 6-bit, для этого ставлю перемычки F и G

Перемычки сконфигурировали, теперь давайте пройдемся по элементам на плате.

1 — первые два разъема это питание

2 – последовательный порт

3 – DC-DC преобразователь

4 – линейный стабилизатор

5 – разъемы (VGA, HDMI, RCA, звук и высокочастотное подключение антенны)

6 – управление подсветкой

7 – кнопки и всякое управление

8 – разъем LVDS, куда подключается матрица

11 – усилитель мощности

13 – USB-разъем, фильмы он читать не умеет, он здесь для обновления прошивки

Подробнее о разъёмах

Разъем управления подсветкой.

Если у вас LED-матрица, то есть светодиодная, то заморачиваться не стоит, у вас прямо в матрице установлен контролер управления подсветкой и этот разъем входит прямо в шлейф. Т.е. Просто подключаете матрицу и больше не над чем заморачиваться не нужно.

Если же матрица древняя на CCFL-лампах, определить это можно по дополнительным проводам выходящим из матрицы.

В матрице могут быть установлены такие лампы и из нее выходят провода. В ноутбуках обычно выходит 1 провод, в матрице монитора 2 или 4. Для того чтобы подключить такую матрицу можно использовать универсальный инвертор для подсветки. Он бывает на 1, 2 и 4 выхода, т.е. каждый выход это подключение одной лампы. Инвертор нужно подбирать по количеству ламп в вашей матрице, то есть нельзя подключить в инвертор с 4-мя выходами только 2 лампы, так как инвертер уйдет в защиту, потому что все выходы должны быть равномерно нагружены. Поэтому если матрица на 2 лампы, покупаем инвертор на 2 выхода, если на 1 лампу, покупаем на 1 выход. Разъемы унифицированы поэтому подходят сразу 1 в 1, просто вот так втыкаются и все.

Читайте также  Как подключить сабвуфер в автомобиле с усилителем?

Подключение инвертора подсветки к скалеру

Подключение инвертора подсветки к лампам

Приступим к подключению

Для этого нам нужен шлейф, он легко втыкается, перемычки на плате уже сконфигурированы. LVDS выравниваем по первой ножке, на шлейфе это маркировка в виде пятна краски, а на плате треугольник — это первая ножка.

На всякий случай проверяем, подходит ли подсветка. Красный – плюс, черный – минус и единственный провод это включение подсветки. Переворачиваем плату на обратную сторону и сравниваем надписи возле контактов с проводами, если все сходится подключаем.

Еще нам нужно какое ни будь управление. Кстати подробнее об управлении, колодка, куда я подключил ИК-приемник это управление. Сюда идут кнопки, они все подписаны, кнопки можно приобрести отдельно или подключить свои.

В принципе это все, все что нужно подключили.

Переворачиваем матрицу и подключаем питание. Если вы собираетесь подключаться к компьютеру, то можно взять питание с БП компьютера. Включаем…

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

Ну что, попробуем подключить камеру через HDMI. В общем подключив камеру получилось, что полутона цветов отображались неправильно.

Я сначала подумал что сгорел буфер опорных напряжений в матрице, но подключив матрицу к планшету понял, что с матрицей все в порядке, она не сгорела. Покопавшись на просторах интернета, нашел сервисное меню. Оказывается нужно в сервисном меню изменить способ работы скалера с матрицей. Для этого заходим в меню и набираем код 8896, и нам открывается сервисное меню. В меню находим системные настройки (System setting) -> Настройки панели (Panel setting) -> и просто изменяем цветовую схему (Color set). Перебирая все варианты находим самый оптимальный, для меня это был 3. В других моделях скалеров может быть другой код доступа в сервисное меню и немного другой путь к настройкам цветовой схемы.

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

Таким же способом можно подключить матрицу от почти любого планшета или монитора.

AVR Урок 34. Дисплей TFT 240×320 8bit. Часть 1

Урок 34

Дисплей TFT 240×320 8bit

Сегодня мы вернёмся к Atmega8, так как что-то у меня случилось с моей Atmega328. Но для наших задач нам вполне подойдёт и восьмая серия.

Сегодня мы попробуем подключить к нашему контроллеру дисплей уже графический цветной разрешением 320 на 240 точек, управляемый по восьмибитному параллельному интерфейсу, Дисплей выполнен с помощью модуля и управляется контроллером ILI9341.

Вообще, у данного контроллера дисплея существует несколько режимов подключения к управляющему микроконтроллеру, в том числе есть и SPI, но мне попался дисплей именно с прараллельным способом подключения, о чём я нисколько не жалею. С таким интерфейсом также немало дисплеев, но что обидно, очень мало информации по реализации кода для дисплеев именно с таким интерфейсом. Поэтому наша задача – данный информационный пробел устранить на корню.

Вот перечень режимов подключения

Включить тот или иной режим удаётся благодаря упралению уровнем на ножках IM3:IM0.

Наш режим, которым мы будем пользоваться – самый первый. Чтобы его включить, нужно на всех данных ножках инициировать низкоуровневой сигнал.

Судя по технической документации, контроллер ILI9341 может управлять 262000 разновидностями цветов.

Вот схема подключения дисплея к контроллеру

А вот так схема выглядит на практике

Мы видим также простенький стабилизатор, висящий на проводках, состоящий из микросхемы и конденсатора. Данный стабилизатор служит для подачи питания 3,3 вольта на модуль дисплея, так как такое напряжение для него также требуется. Некоторую информацию, возвращённую из контроллера дисплея мы будем отслеживать с помощью символьного дисплея 20х4, подключенного по интерфейсу i2c, который также мы видим на картинке.

А вот так выглядит модуль дисплея снизу

Мы видим ещё на борту данного модуля картоприёмник для карты Micro SD, которая подключается по интерфейсу SPI.

Также мы видим, что все контакты у дисплея подписаны, поэтому с подключением, я думаю сложностей не возникнет.

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

LCD_RST – ножка для перезагрузки дисплея;

LCD_CS – Chip Select (выбор), активный уровень низкий;

LCD_RS – данные/команда, для передачи данных высокий уровень, для передачи команды – низкий;

LCD_WR – включение режима записи, активный уровень низкий;

LCD_RD – включение режима чтения, активный уровень низкий;

GND – общий провод;

5V – питание 5 вольт;

3V3 – питание 3,3 вольта;

LCD_D0:LCD_D7 – параллельная 8-разрядная шина данных.

Управление контроллером дисплея происходит посредством команд или другими словами отправкой в определённый регистр определённых величин. В технической документации очень подробно расписаны все регистры, причём есть и краткий перечень команд регистров, а есть и подробный для каждой команды. Техническая документация на контроллер ILI9341 прикреплена внизу данной страницы. Сначала мы отправляем адрес регистра, а затем шлём параметры команды. Причём количество параметров в различных командах также различается, что накладывает некоторые трудности для создания универсальной функции отправки команды. Но ничего, что-нибудь придумаем.

У нас создан проект TFT9341. Проект вполне стандартный, подключены к нему наши библиотек, написанные на прошлых занятиях – это twi и lcdtwi.

Также мы создадим и подключим к проекту ещё 2 файла для библиотеки уже непосредственно нашего нового дисплея – это файлы ili9341.h и ili9341.c.

Вот так выглядит главный заголовочный файл main.h

#ifndef MAIN_H_

#define MAIN_H_

#define F_CPU 16000000UL

#include

#include

#include

#include

#include «twi.h»

#include «lcdtwi.h»

#include «ili9341.h»

#endif /* MAIN_H_ */

В файле ili9341.h подключим

#include «main.h»

#include «twi.h»

#include «lcdtwi.h»

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

В файле ili9341.c подключим заголовочный файл и напишем каркас для функции инициализации дисплея

#include «ili9341.h»

void TFT9341_ini ( void )

Не забываем на данную функцию добавить прототип в хедер-файле, а также напишем некоторые макроподстановки, которые нам потребуются в процессе работы с дисплеем

#define DATA_DDR DDRD

#define DATA_PORT PORTD

#define DATA_PIN PIND

#define COMMAND_DDR DDRB

#define COMMAND_PORT PORTB

#define LCD_CS 2 //Chip Select

#define LCD_CD 1 //Command/Data

#define LCD_WR 3 //LCD Write

#define LCD_RD 4 //LCD Read

#define LCD_RESET 0 //LCD Reset

#define RESET_IDLE COMMAND_PORT |=(1 LCD_RESET )

#define CS_IDLE COMMAND_PORT |=(1 LCD_CS )

#define WR_IDLE COMMAND_PORT |=(1 LCD_WR )

#define RD_IDLE COMMAND_PORT |=(1 LCD_RD )

#define RESET_ACTIVE COMMAND_PORT &=

#define CS_ACTIVE COMMAND_PORT &=

#define WR_ACTIVE COMMAND_PORT &=

#define RD_ACTIVE COMMAND_PORT &=

#define CD_COMMAND COMMAND_PORT &=

#define CD_DATA COMMAND_PORT |=(1 LCD_CD )

#define BLACK 0x0000

#define BLUE 0x001F

#define RED 0x0F800

#define GREEN 0x07E0

#define CYAN 0x07FF

#define MAGENTA 0xF81F

#define YELLOW 0xFFE0

#define WHITE 0xFFFF

#define setReadDir () DATA_DDR =0x00

#define setWriteDir () DATA_DDR =0xFF

#define WR_STROBE

void TFT9341_ini ( void );

Я думаю, назначение каждого макроса объяснять нет смысла, так как всё ясно из наименований. Но если вдруг кому-то что-то непонятно, то посмотрите видеоурок, кликнув по картинке внизу страницы, там объяснение более подробное.

В следующей части нашего занятия мы попытаемся написать ещё некоторые важные функции для работы с контроллером дисплея, а также считать его идентификатор, что позволит нам убедиться, что мы работаем именно с таким контроллером.

Программатор и символьный дисплей LCD 20×4 можно приобрести здесь:

Смотреть ВИДЕОУРОК (нажмите на картинку)

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: