Pull to refresh

Разработка скалера LVDS с двумя интерфейсами DisplayPort

Reading time6 min
Views19K


Доброго времени суток, Хабр!

Описание проекта платы скалера, разработанного на чипе компании Realtek – RTD2662, для двухканальной матрицы. Кому тема интересна, добро пожаловать под кат.

Меня всегда привлекала тематика вывода изображения на матрицы. Ранее мной была разработана плата скалера на чипе TSUMV59 (совместима с TSUMV29), очень интересный экземпляр от компании MStar. Думаю, что я напишу отдельную статью на эту тему. Казалось бы, все хорошо в этом чипе, но чего-то не хватало, а именно возможности писать свой софт для вывода экранного меню и обработки GPIO. Все прошивки распространяются в бинарном виде и прошиваются через USB, а исходников найти не удалось (если кто-то что-то знает/слышал, прошу написать, так как тема очень интересна). До определенного времени для каких-то своих нужд этого вполне хватало. Были моменты, когда было не подобрать прошивку для какой-то конкретной матрицы, например с нестандартным соотношением сторон, но это все мелочи, пока не появился заказ на разработку устройства, в котором должно было быть строго определенное меню, логотип, и логика работы устройства в целом. Тогда мы начали думать как быть и в какую сторону идти. Основной проблемой было отсутствие времени, нужно было в кротчайшие сроки получить первую партию устройств – 100шт. Второе – это наличие двух интерфейсов DisplayPort на борту. Третье – малое количество устройств, что не позволяет работать/получать документацию и семплы от производителей/дистрибьютеров чипов.

Перечислю основные программные/аппаратные моменты, которые требовалось поддержать:

— DisplayPort – 2 шт;
— Ethernet 10/100 – 1 шт;
— Двухканальный LVDS для 32” матрицы – 1 шт;
— Поддержка емкостной клавиатуры из 4-х кнопок – 1 шт;
— Датчик температуры на плате – 1 шт;
— WEB-интрефейс;
— OS Linux;
— Внешнее питание 24В.

Теперь немного обо всем и по порядку.

DisplayPort


Тут казалось все относительно просто, нужно выбрать чип с входным HDMI, ставить переключатель и преобразователи из DisplayPort в HDMI. Этот же чип должен иметь выход двухканального LVDS на матрицу и поддерживать FullHD. Также, желательно, чтобы он имел на борту RMII (Ethernet) и возможность отрисовки меню поверх изображения. И тут начались проблемы. Ничего похожего, чтобы можно было быстро купить, отмакетировать и запустить партию, найти не удалось.

В качестве хобби, я занимаюсь ремонтом техники и дело тут не в доходе, а в приобретаемых навыках, очень полезных при разработке своих проектов и черпании идей и технологий. Кто разбирал оригинальную технику Sony и Panasonic, тот поймет. Особенном меня привлекают аудио/видео/автомобильные устройства. Качество прокладки полигонов (даже на верхних слоях), аналоговые земли и питания, взаимное расположение питателей на плате, трассировка оперативки, ВЧ … голова кругом от того, как красиво и продуманно все сделано (конечно, так бывает не всегда).

Ладно, о чем это я? Так вот, если вспомнить что обычно ставят в бюджетные телевизоры, первое что пришло на ум – это TSUMV29/TSUMV59, но как помним они нам не подходят. На чем еще делают телевизоры и мониторы, но что можно штучно купить? Коллега предложил Realtek, что вроде даже к нему есть исходники, что очень упростит задачу. Оказалось, что исходники действительно есть для Keil, для чипа RTD2662. Чип не самый новый, но имеет два HDMI входа и поддержку FullHD.


Рис.1. RTD2662

Схема включения как во всех шасси для ТВ. Чип питается двумя напряжениями – 3,3В и 1,8В. Полноценного даташита найти так и не удалось, да и не нужно было. Добавить нужно было только конвертеры из DisplayPort. После непродолжительных поисков был выбран преобразователь от Texas Instruments – SN75DP139. Рекомендую в разработках, хороший чип. Микросхемы расположены на bottom платы (сделать так пришлось, чтобы избежать перекрестия линий данных, возможно буду пробовать переразводить на одной стороне).


Рис.2. Схема включения SN75DP139

Схема включения получилась такая. С интерфейсом DisplayPort связался впервые и для меня стало неким откровением что вход и выход данного интерфейса имеют разную распиновку, то есть на разъеме ПК она одна, на мониторе – другая. Хотя какая-то логика в этом и есть.
Прошивка Realtek хранится в отдельной SPIFlash.

Ethernet 10/100


Ethernet нужен для нескольких вещей: мониторинг устройства, конфигурирование и обновление; поэтому физики 10/100 вполне достаточно. Ставил LAN8742AI от Microchip, использовал ее впервые, а выбрал именно ее, так как заказчику нужна была некая функция “Wake on LAN”, до этого такой надобности не было. Если в двух словах, то поддержка WoL позволяет пробуждать устройство по сети Ethernet.


Рис.3. Ethernet 10/100

Физика почти не требует обвязки и проста в трассировке. Работает стабильно, ни одного отваливания сети не было.

LVDS


Два канала необходимы для подключения матрицы AUO 32”. Разъем и распиновку использовал стандартные. Напряжение питания 12В, делал на DC/DC TPS54560DDAR – это отличный питатель на 5А от TI. Подсветка матрицы 24В, брал от входного напряжения. Матрица имеет встроенный драйвер подсветки с возможностью регулировки и выключения. Плата сделана на 4-х слоях, так что проблем с трассировкой LVSD, HDMI и DisplayPort не было.


Рис.4. Трассировка LVDS

Как видно тут все напрямую, небольшое расхождение длин совершенно не влияет на качество изображения.

KEY


Кнопки реализованы на микросхеме SX8634 от Semtech Corporation – это несколько неоднозначный по своей работе чип. Программистам пришлось перепиливать весь драйвер чтобы получить ожидаемый результат. Получилось как-то так: есть 4 кнопки для перехода по меню, они сенсорные (емкостные через стекло) с подсветкой RGB светодиодами изнутри через отверстия в плате. Постоянно светится только нижняя кнопка, она же переход в спящий режим и обратно (со сменой свечения). При поднесении руки на 5см подсвечиваются остальные кнопки и выскакивает меню напротив них. Убираем руку, через 3с меню пропадает, кнопки гаснут. Выглядит интересно.


Рис.5. Плата сенсорных кнопок

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

TEMP


Температура внутри корпуса измеряется с помощью термодатчика LM75AD от NXP по шине I2C. Поставлен был так как легко доставаемый и лежит на складах в больших объемах.

WEB


Web-интерфейс и сам проект реализованы на основе молодого движка рожденного независимой командой 11-parts — это наш партнер по разработке ПО для систем на базе Linux.
Платформа имеет множество блоков, обеспеченные технической поддержкой и гарантией с возможностью доработок и обновления.

Если еще проще – это рамочный проект, с продвинутым функционалом, который постоянно улучшается и наращивает функционал. Из основных блоков можно отметить сетевой менеджер, динамический WEB интерфейс, обновление и сборщик проектов. На базе движка, можно реализовать различные устройства начиная от mp3 плеера, заканчивая многопортовым 10Gbit SIP сервером. а это как раз то, что нам было необходимо в данном проекте.

Из web-интерфейса можно не только контролировать параметры панели, но и изменять настройки, например, яркость, контрастность, четкость изображения, отслеживать к какому из портов подключен ПК и какой в данный момент из них активен, переключаться между ними.

Также в данном проекте реализована поддержка SNMP 1,2 и 3 версии с поддержкой SET, GET команд и отправкой трапов по интервалу или по событию. Т.е. информацию о любом параметре, например яркость/контрастность можно передавать на сервер по протоколу SNMP, при нажатии на кнопку изменения параметра или, например, раз в 10 сек. Выключить дисплей или поменять параметр можно удаленно с помощью SNMP SET команды. SNMP так же входит в состав движка.

iMX6ULL


Так как чип Realtek не имеет на борту Ethernet, в данном проекте установлен процессор iMX6ULL от NXP, на котором крутится OS Linux и выполняется основная логика работы. iMX и Realtek связаны между собой по UART и обмениваются между собой командами. Для быстрых событий есть несколько GPIO.


Рис.6. iMX6ULL

Вся информация хранится в NAND, u-boot загружается из SPIFlash. Одна микросхема оперативной памяти и ничего лишнего. SD карта выведена для обновления ПО (это помимо возможности это делать из web).

POWER


Вторичное питание 5В реализовано на таком же DC/DC как и для питания матрицы – TPS54560DDAR. Питания 1,8В и 1,35В на AP3418 от Diodes, а 3,3В на ST1S10PHR от ST.


Рис.7. DC/DC

Микросхемы DC/DC были выбраны с большим запасом, так как у матрицы большие пиковые токи по питанию и по подсветке, а так как была только одна итерация, рисковать очень не хотелось.
Все питания разведены полигонами в отдельном слое, за исключением питания матрицы, так как очень не хотелось резать основные питания этим проводником. Скрины трассировки приводить бесполезно, разве что кому-то будет интересен какой-либо интерфейс. По полигонам питания и земель хочу также уделить отдельную статью, например, в этом проекте суммарно 27 полигонов, в моем новом проекте на iMX7 из будет порядка 100, и в рамках этой статьи это просто не поместится.

Если еще немного углубиться в логику работы платы. iMX работает с Ethernet и кнопками передней панели. Он связан с Realtek, которые забирает изображение с активного DisplayPorta и выдает на матрицу LVDS. Команды от кнопок, SNMP и web летят в Realtek, которые в свою очередь реагирует на них и меняет параметры дисплея, выводит меню и т.д.

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

Спасибо за внимание!
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
+35
Comments61

Articles

Change theme settings