Такие разные дисплеи: какие виды матриц распространены в DIY-электронике?

в 12:41, , рубрики: bodyawm_ништячки, dbi, DSI, lvds, mipi, дисплеи

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

Предисловие

Начать пожалуй стоит с того, какой тип информации вам необходимо выводить на дисплей вашего устройства. Помимо графических ЖК и OLED-матриц существуют также узкоспециализированные знакогенераторные и сегментные дисплеи. В знакогенераторных дисплеях все символы и псевдографика уже заранее зашиты в ПЗУ контроллера и микроконтроллеру обычно ничего не нужно делать помимо управления регистрами позиции курсора и записи в видеопамять желаемых знаков, что значительно разгружает МК для другой работы.

Такие разные дисплеи: какие виды матриц распространены в DIY-электронике? - 1

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

Такие разные дисплеи: какие виды матриц распространены в DIY-электронике? - 2

Однако в этой статье речь пойдет именно о графических дисплеях, поскольку в последние 10 лет TFT-матрицы очень сильно подешевели и стали доступными благодаря различным shield'ам. Добавьте к этому то, что в утиле можно бесплатно раздобыть дисплей от портативного навигатора или планшета - которые также можно использовать в своём проекте!

TTL RGB

Начнём пожалуй с самых легкодоступных и распространенных "бесплатных" дисплеев с последовательным RGB-протоколом. Такие матрицы можно встретить в самой разной электронике нулевых и десятых годов: автомобильные мультимедийные системы (40/50pin), GPS-навигаторы (40pin), планшеты и ультра-дешевые ноутбуки (50pin) и т.д. Несколько типов подобных дисплеев были унифицированы и поэтому свободно взаимозаменяемы: точно взаимозаменяемы матрицы 4" с разрешением 480x232 и 7" с разрешением 800x480.

AT070TN94

AT070TN94

Особенностью таких дисплеев является то, что у них нет собственной памяти (или фреймбуфера) - иными словами, хост-процессор должен формировать и отправлять картинку в реальном времени самостоятельно. Протокол для общения с такими дисплеями простой и напоминает VGA, только цифровой:

  • Включаем режим передачи данных устанавливая пин Data Enable в низкий уровень.

  • Устанавливаем биты цветовых компонент следующего пикселя (пины R0..8, G0..8, B0..8, допускается использовать не все биты каждой компоненты - например RGB565 или RGB332).

  • "Выводим" пиксель в текущем столбце на экран дёргая строб DCLK. Тайминги строба всегда указаны в даташите. По факту это просто запись цвета пикселя в "сдвиговый регистр" контроллера, фактически пиксель пока не выводится!

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

  • Когда столбцы заполнены - дёргаем строб VSYNC, который наконец-то выведет картинку на дисплей

Такие разные дисплеи: какие виды матриц распространены в DIY-электронике? - 4

Основная проблема таких дисплеев в том, что с микроконтроллеров ими "рулить" довольно сложно из-за большого количества пинов, отсутствия собственной памяти и необходимости точного соблюдения таймингов стробов. Если упустить тайминг - получим белый дисплей или тиринг.

Однако такие дисплеи можно легко использовать с внешними скалерами с поддержкой TTL-матриц:

Такие разные дисплеи: какие виды матриц распространены в DIY-электронике? - 5

А также с одноплатниками, где в SoC обычно сразу есть поддержка подобных дисплеев. Например, Broadcom'ы в Raspberry Pi "из коробки" поддерживают такие дисплеи (можно взять с GPIO-гребенки необходимые пины), а в некоторых одноплатниках на AllWinner разъем сразу распаян на плате:

У меня есть такой одноплатник и я заявляю что подключил дисплей от навигатора к нему без каких либо проблем!

У меня есть такой одноплатник и я заявляю что подключил дисплей от навигатора к нему без каких либо проблем!

Бонусом можно считать то, что с такими дисплеями часто идет резистивный тачскрин :)

LVDS

Со вторым типом дисплеев некоторые читатели возможно знакомы не понаслышке - LVDS-матрицы и родственные им eDP. Такие дисплеи имеют дифференциальную шину, что "не позволяет" управлять ими с обычных микроконтроллеров, а найти их можно в большинстве ноутбуков, телевизоров и некоторых планшетах. У LVDS-матриц есть своя собственная видеопамять и набор регистров для управления различными параметрами изображения, а ещё они сами формируют подсветку!

Такие разные дисплеи: какие виды матриц распространены в DIY-электронике? - 7

LVDS-матрицы отличаются относительной стандартизированностью и совместимостью: если устройство не зависит от EDID-дисплея и в нём столько же дифференциальных линий, сколько и в дисплее - матрица скорее всего заработает в штатном режиме. Управлять LVDS-дисплеями "ручками" нецелесообразно поскольку эта задача обычно возложена на сопроцессоры в SoC или на GPU. В некоторых современных одноплатниках есть поддержка таких матриц (хотя-бы на уровне чипсета), однако чаще всего подключает HDMI к LVDS-скалеру:

Такие разные дисплеи: какие виды матриц распространены в DIY-электронике? - 8

MIPI DSI

Почти всё, что было сказано о LVDS справедливо и о MIPI DSI - похожем дифференциальном интерфейсе, который используется в современных планшетах и смартфонах. Однако у него есть главное отличие - каждый дисплей требует свою собственную инициализацию или иными словами - init sequence, без которого мы увидим лишь белый экран. Регистры DSI частично стандартизированы, но для включения дисплея требуется сконфигурировать вендорские регистры которые отличаются от производителя к производителю.

Пример DSI-дисплея

Пример DSI-дисплея

Аппаратная поддержка DSI есть почти во всех современных SoC и одноплатниках, в Raspberry Pi для этого даже отдельный коннектор есть. Если вам хочется подключить DSI-дисплей к своему одноплатнику, то init-sequence можно поискать в драйвере дисплея в коде ядра устройства с которого вы берете дисплей. Например, вот для дисплея Galaxy S4.

Учтите что DSI-дисплеи не стандартизируют способ формирования напряжения подсветки, им требуется внешнее BIAS-напряжение и более того, OLED-матрицы запитываются совсем иным способом, поэтому использовать их в своих проектах скорее всего не выйдет.

MIPI DBI

А вот дисплеи с протоколом DBI - совершенно другой вопрос! Большинство дисплеев-shield'ов для Arduino, ESP32 и других микроконтроллеров представляют из себя именно матрицы с DBI-контроллерами. Дисплеи с таким протоколом могут работать на нескольких шинах: 8080 8-битная, 8080 16-битная и SPI.

Такие разные дисплеи: какие виды матриц распространены в DIY-электронике? - 10

DBI берёт корни от дисплеев для мобильных телефонов и MP3-плееров из нулевых. В начале 2000х-годов, когда цветные дисплеи только-только появились, для управления матрицами было множество разных вендорских протоколов: чего стоят только дисплеи от Сименсов или от Motorola C350 которые часто использовали в самоделках. DBI был призван чтобы частично стандартизировать их - однако проблема характерная для DSI сохранилась: каждому дисплею нужен свой собственный init sequence!

Такие разные дисплеи: какие виды матриц распространены в DIY-электронике? - 11

В зависимости от используемой шины, управлять DBI-дисплеями легко: устанавливаем пин D/C (Данные/Команда) в высокий уровень дабы выбрать регистр для записи, записываем номер регистра (например, 0x29 включит дисплей), переводим D/C обратно в низкий уровень и записываем нужные нам данные. Если нам нужно вывести картинку - мы просто непрерывно её пишем в видеопамять выбирая регистр 0x22 - контроллер сам позаботится о инкрементах.

Заключение

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

Автор: bodyawm

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js