Часть 1. HDMI-LVDS — это просто

в 9:37, , рубрики: Без рубрики

image
Добрый день Хабр!
Появилась новая задача, нужно срочно ее решить. Представляю конвертер HDMI-LVDS почти на коленке.
Хочу сразу оговориться, что не имею опыта разработки данных устройств, но задача уже поставлена, так что прошу под кат…

Перелопатив огромное количество сайтов со схемами готовых устройств литературы по LVDS конвертерам, я пришел к выводу, что нужно разрабатывать самому, так как готового решения с узким кругом задач в низкой ценовой категории найдено не было. Себестоимость устройства должна была быть минимальна, в конвертере не должно было быть ничего лишнего: согласование HDMI-LVDS, управление подсветкой инвертора панели и хранение данных EDID.
Обо всем по порядку.
Конвертер решил ваять наугад TI (не буду рекламировать данную компанию, но очень уж мне нравится их поддержка, документация, а так же то, что MT-System под проект предлагает семплы). Как оказалось прямого конвертера не бывает (ПЛИС не рассматриваю), только через RGB, а именно TFP401A, SN75LVDS83B и DS90C387A. Отличие SN75LVDS83B от DS90C387A в основном в том, что последний имеет два канала LVDS. Чтобы не облажаться перед заказчиком время не пропало даром, сделал сразу два варианта и с одноканальным и с двухканальным. Структурно все это выглядит так
image
Как я уже говорил, документация по схемотехнике довольно обширная и не составило труда перенести схемы из шитов в Altium. Рекомендации по разводке платы пришлось искать несколько дольше, так как сигналы TMDS (HDMI) и LVDS (панель) идут дифпарами, а на двух слоях (чем черт не шутит, а вдруг заработает это было еще одним условием для данного проекта) согласовать импедансы штука серьезная (при отсутствии полноценных полигонов на нижнем слое и резонитовскими условиями на допуски).
image
Второй этап — это включение/выключение/регулировка уровня яркости подсветки панели. Если не учитывать тот факт, что девайс должен работать от 12 или от 24 вольт, то тут все просто, компания «ON Semiconductor» делает DC/DC преобразователи отличного качества и стоимости. Два DC/DC NCP3170, один для питания панели, второй, как раз для подсветки (все панели идут в комплекте с инвертором, поэтому тут городить огород не нужно). Регулировка осуществляется 3,3В и 5В (зависит от конкретной панели) ШИМом. Тут как нельзя кстати приелся STM32F100, который так же зажигает, гасит светодиоды и управляет EEPROM для EDID данных.
image
Код программы для контроллера не привожу, так как программа состоит буквально из нескольких строк.
Основная проблема оказалась скрывается в слове EDID. До этого времени я такого буквенного сочетания вообще не встречал. «Extended Display Identification Data (EDID) — стандарт формата данных VESA, который содержит базовую информацию о мониторе» и так далее — это выдержка из википедии, кому интересно, тот углубится сам в изучение материала по данной теме. Оказалось что в каждом мониторе есть микросхема EEPROM, которая прямо висит на контактах I2C HDMI и как только монитор подключается к ПК (или другому девайсу), микросхема начинает слать данные об устройстве. Структура полей данных в EDID регламентирована, и было решено эмулировать их самим контроллером STM32. После недолгих размышлений от этого отказался и добавил в проект EEPROM AT24C02, в которую с помощью простенького программного обеспечения можно заливать данные EDID (все это, естесственно через UART STM32). Сказано — сделано. Сгенерил бинарник в программе «Deltacast E-EDID Editor»
image
Для облегчения себе задачи, готовый бинарник предварительно был сперт слит с какого-то монитора, а потом подправлен.
Этап настройки прост, зашиваем STM, заливаем через нее EDID в EEPROM, подтыкаем панель и HDMI.
Три варианта плат в итоге. Как и планировалось, будет еще третья итерация, конечная.
image
Во второй части (если кого-то заинтересует статья), планирую подробнее остановиться на схемотехнике, разводке и подводных камнях, которые встретились за время разработки.
PS Основное отличие данной разработки от уже имеющихся — это отсутствие ресайзера изображения, а следовательно и, почти полное отсутствие кода (обычно есть какая-либо ось, с графическим меню и настройками изображения).
Творите! Все в ваших руках!

Автор: the_bat

Источник

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


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