Конвертер из HDMI/DP++ в MIPI DSI

Неоднократно мне тут задавали вопросы по конвертеру из HDMI в MIPI DSI. Так сказать, по просьбам трудящихся, выкладываю что у меня получилось. В статье затрону аппаратную сторону реализации устройства и изложу основные проблемы, с которыми столкнулся. Приятного прочтения.
Постановка задачи
Идея реализации родилась уже давно, но тут появилась необходимость разработать конвертер в определенном форм-факторе (небольшие габариты, в том числе, по высоте), со специфичным разъемом (вместо HDMI), с поддержкой одного канала MIPI DSI (забегая вперед скажу, что схемотехника изделия позволяет использование двух каналов, но один канал пришлось отрезать).
Основные требования
- вход HDMI/DP++;
- один канал MIPI DSI;
- подключение матрицы G080UAN02.1 (8”, 1200*1920);
- регулировка уровня яркости подсветки;
- рабочее напряжение конвертера 12В.
Требования к конструктиву
- геометрия платы 60*60мм с наименьшей высотой;
- возможность смены EDID из программы для ПК;
- микроконтроллер для управления и конфигурации STM32F103.
Поиск решения
На момент написания статьи (февраль 2022) на рынке электронных компонентов все еще есть проблемы. Из доступного, за приемлемые сроки, удалось найти пару SN75DP139RSBR (TI) + TC358870XBG (Toshiba). Первая микросхема – DisplayPort to TMDS Level-Shifting Re-Driver, предназначена для согласования интерфейса DP++ с входом HDMI второй микросхемы. TC358870XBG позволяет из HDMI получить два канала MIPI DSI.
Ниже (Рис.1.) приведена схема включения SN75DP139RSBR. Похожие микросхемы я уже использовал и тут все стандартно. Главное не забыть конфигурационные резисторы (они подписаны на схеме), в том числе, I2C_EN. У TI, как обычно, отличные даташиты и проблем с включением не возникает. Микросхема питается от одного напряжения 3,3В. Дифференциальные пары на схеме определены и объединены в соответствующие классы.

Рис.1. Схема включения SN75DP139RSBR
С Toshiba все несколько сложнее. Во-первых, она в корпусе P-VFBGA80, во-вторых, для ее питания необходимо несколько напряжений, в-третьих, ей нужен внешний тактовый генератор на 48МГц, и, напоследок, даташит оставляет желать лучшего.

Рис.2. Схема включения TC358870XBG
Итак, обо всем, по порядку. С корпусом все понятно. Шаг между боллами 0,65мм – это позволит выводить проводники 0,125мм, что по меркам Резонита теперь стандарт. В даташите указано что необходимо подавать четыре напряжения – 1,2В, 1,8В, 3,3В и 5В (там указан разброс всех параметров (указаны на схеме) и есть несколько вариантов включения). Как выяснилось позже, 5В нужны только для проброса сигнала HDMI_HP, а 1,8В – это VDDIO, которые можно использовать на 3,3В. Генератор из имеющихся в свободной продаже 7W-48.000MBB-T. К куцему даташиту вернусь позже.
По схеме включения вроде тоже ничего особенного. Микросхема имеет два I2C интерфейса. Один подключаем к микроконтроллеру, второй пробрасываем через SN75DP139RSBR на порт HDMI ПК. Звук задействовать не буду, поэтому на PCM поставил только конденсаторы (на всякий случай). Сигналом сброса (болл К8 — RESETN) тоже буду управлять с микроконтроллера.
Теперь немного о EDID и его хранении. Toshiba имеет EDID_SRAM, куда можно записать параметры матрицы. Для одного из прошлых проектов, у меня была реализована небольшая схема для записи EDID на внешнюю EEPROM. Схема ниже (Рис.3.).

Рис.3. Схема включения EEPROM для EDID
Тут нет ничего особенного. EEPROM подключена по I2C параллельно Toshiba (у последней имеется регистр для отключения использования EDID_SRAM). По событию, например, нажатию кнопки (S1), микроконтроллер меняет адрес EEPROM (чтобы не произошло коллизий при подключенном устройстве к ПК), записывает EDID в микросхему, восстанавливает адрес на тот, который ждет ПК по HDMI и, собственно, все. Как только выставится сигнал HPD_SOURCE и на шине I2C появится EEPROM, видеокарта вычитает параметры и дисплей отобразится в системе.
Это было сделано, как говорится, на всякий пожарный случай. С пробросом параметров EDID проблем не возникло и было решено оставить это Тошибе. Специальным софтом для ПК заливаем по UART EDID во flash контроллера и отдаем его в TC358870XBG (либо храним во внешней EEPROM и когда понадобится – прошиваем по кнопке, например (все зависит от потребности и реализации в софте)).
Для управления подсветкой дисплея использую драйвер TPS61161DRV от TI. Уже неоднократно его ставил в различные проекты, очень хорошее решение. Из особенностей – это маленький корпус (2*2мм), высокая эффективность (до 90%), хороший диапазон напряжений (2,7-18В) и возможность подключения от 6 до 10 светодиодов (партномера отличаются, а корпус и схема включения — нет). Драйвер имеет два режима управления. CONTROL MODE – режим, позволяющий выставлять значения яркости по One-Wire, отлично подходит для моментов, когда нет возможности постоянно выдавать ШИМ на драйвер. PWM MODE – обычный режим ШИМ (на той же ноге, что и One-Wire), который я и использую. PWM 5-100кГц, регулировка яркости скважностью. Ниже привел схему (Рис.4.).

Рис.4. Схема драйвера подсветки матрицы TPS61161DRV
Питание 5В и 3,3В сделал на двух DC/DC: ST1S10PHR (возможна замена на ST1S41PHR) и AP3418KTR, соответственно. Взял с большим запасом по току, но, опять-таки, они есть у нас на складе и их можно относительно просто купить.
Печатная плата
Со схемой закончили, теперь трассировка. Плату делал на 4-х слоях. Второй GND, третий POWER. Думаю, что можно было постараться и развести на 2-х слоях, но не вижу смысла в такой экономии, так как можно потерять в качестве.

Рис.5. Трассировка MIPI DSI
Пришлось немного постараться с трассировкой DSI к разъему матрицы. Уж очень неудобное оказалось расположение сигналов на дисплее, а очень хотелось сделать по стандартному классу с переходными отверстиями 0,3/0,6. Контроль длин решил не делать, так как расстояние минимальное, а разность между длинами проводников не велика. Хотя можно было и сделать – место позволяет.
Трассировка SN75DP139RSBR без переходных отверстий. Для корректной разводки конденсаторы по питанию обеих микросхем были установлены на bottom.

Рис.6. Трассировка SN75DP139RSBR
Хотел (для тестов) вывести оба MIPI DSI с TC358870XBG, но, к сожалению, не хватило места на плате, чтобы корректно все сделать. Получалось громоздко и второй DSI разъем на bottom.
Теперь немного о документации. Первое что насторожило, это отсутствие информации о режиме Single link DSI в Тошибе. Он заявлен, но о том, как его использовать и какой канал для этого задействуется в явном виде нигде не сказано (понятно, что, скорее всего, можно выбрать либо любой, либо нулевой, но все-таки, а вдруг только первый…). Методом проб и ошибок, а также копанием документации, удалось найти регистр, который устанавливает данную конфигурацию, но это было совсем не очевидно.
В даташите на матрицу AUO отсутствует описание регистров для конфигурации MIPI DSI. Чтобы дисплей включился, его нужно проинициализировать по MIPI, записав с десяток команд. Делать это нужно каждый раз после подачи питания на матрицу. Запросили расширенную документацию на дисплей и дело пошло быстрее. Изначально дисплей имеет портретную ориентацию (1200*1920), но в настройках монитора на ПК его можно перевести в альбомный режим работы.

Рис.7. Изображение на матрице G080UAN02.1
Спасибо за внимание!
- Производство и разработка электроники
- Электроника для начинающих
IPS TFT дисплей с интерфейсом MIPI 5 дюйм
WF50DTYA3MNN0 – это 5.0” дюймовый IPS TFT модуль c разрешением 720 x1280 пикселей и MIPI DSI интерфейсом. Дисплей имеет широкие углы обзора: Левый угол: 80°/ Правый угол: 80°/ Верх: 80°/ Низ: 80°. Так же преимуществум данного TFT дисплея является высокий контраст (800:1) и HD разрешение. Имеет рабочую температуру с -20°C до +70°C; температуру хранения -30°C до +80°C. Размер модуля составляет 66.10 x 120.4 mm, с активной Областью 62.1 x 110.4 mm и работает на базе драйвера IC ILI9881C. Напряжение питания VDD для WF50DTYA3MNN0 — 2.5V ~ 3.6V. Дисплей имеет портретный режим отображения; для использования в ландшафтном режиме, свяжитесь с нами для получения дополнительной технической поддержки.
Чертеж

Технические характеристики
Функции контроллера контактного интерфейса
LCM PIN Definition
| Pin | Символы | Функции |
|---|---|---|
| 1 | NC/TP_GND | No connection |
| 2 | NC/TP_SDA | No connection |
| 3 | NC/TP_SCL | No connection |
| 4 | NC/TP_INT | No connection |
| 5 | NC/TP_RST | No connection |
| 6 | NC/YU | No connection |
| 7 | NC/XL | No connection |
| 8 | NC/YD | No connection |
| 9 | NC/XR | No connection |
| 10-11 | VCI | Power supply for analog circuits. Connect to an external power supply of 2.5V to 3.6V |
| 12-13 | NC | No connection |
| 14 | RESET | The external reset input Initializes the chip with a low input. Be sure to execute a power-on reset after supplying power. Fix to VDDI level when not in use. |
| 15 | TE | Tearing effect output pin. Leave the pin open when not in use. |
| 16 | NC | No connection |
| 17-18 | GND | Power ground |
| 19-20 | IOVCC | Power supply for analog circuits. Connect to an external power supply of 1.65V to 3.6V |
| 21 | GND | Power ground |
| 22 | D3P | MIPI DSI differential data pair. (Data lane 3) |
| 23 | D3N | |
| 24 | GND | Power ground |
| 25 | D2P | MIPI DSI differential data pair. (Data lane 2) |
| 26 | D2N | |
| 27 | GND | Power ground |
| 28 | CLKP | MIPI DSI differential clock pair |
| 29 | CLKN | |
| 30 | GND | Power ground |
| 31 | D1P | MIPI DSI differential data pair. (Data lane 1) |
| 32 | D1N | |
| 33 | GND | Power ground |
| 34 | D0P | MIPI DSI differential data pair. (Data lane 0) |
| 35 | D0N | |
| 36-37 | GND | Power ground |
| 38 | LED+ | Power for LED backlight anode |
| 39 | LED1- | Power for LED1 backlight cathode |
| 40 | LED2- | Power for LED2 backlight cathode |
Основные характеристики
| Наименование | размер | Единица |
|---|---|---|
| Диагональ | 5.0 | дюйма |
| Разрешение | 720× 3(RGB) ×1280 | точек |
| Габариты | 66.10 (W) × 120.4 (H) ×1.85 | mm |
| Активная область | 62.1 (W) × 110.4 (H) | mm |
| Шаг пикселя | 0.08625(W) ×0.08625(H) | mm |
| LCD Тип | TFT, Черный, Трансмиссивный | |
| Viewing angle | 80/80/80/80 | |
| соотношение сторон | 16:9 | |
| TFT Драйвер IC | ILI9881C или эквивалентный | |
| TFT Интерфейс | MIPI | |
| Тип подсветки | LED,Белый | |
| Сенсорный экран | Без сенсорной панели | |
| Поверхность | Глянцевая | |
Абсолютные максимальные значения
| Наименование | Символы | Минимальный | Типичный | Максимальный | Единица |
|---|---|---|---|---|---|
| Диапазон рабочих температур | TOP | -20 | - | +70 | ℃ |
| Температура хранения | TST | -30 | - | +80 | ℃ |
Электронные характеристики
1. Типичные условия эксплуатации
| Наименование | Символы | Стандартное значение | Единица | ||
|---|---|---|---|---|---|
| Минимальный | Типичный | Максимальный | |||
| Источник питания для аналоговой схемы | VCI | 2.5 | 3.3 | 3.6 | V |
| Источник питания для логической схемы | IOVCC | 1.65 | 1.8 | 3.6 | V |
| Напряжение тока в драйвере | IDD | — | 44 | mA | |
2. Условия эксплуатации подсветки
| Параметр | Символы | Минимальный | Типичный | Максимальный | Единица |
|---|---|---|---|---|---|
| LED ток | ILED | — | 40 | — | mA |
| LED напряжение | VLED+ | 19.6 | — | 23.8 | V |
| LED (Срок эксплуатации) | 30,000 | — | — | Hr |
Цветной дисплей для Raspberry Pi 4,3” / 800×480 / IPS / DSI: инструкция по подключению и настройке
Цветной дисплей с диагональю 4,3 дюйма превратит вашу Raspberry Pi в настоящий планшет, на котором можно выводить полноценное цветное изображение, просматривать динамические видео ролики и играть в игры.

Подключение и настройка
Дисплей выполнен специально для компьютеров Raspberry Pi. В качестве примера приведем настройку экрана на малинке Pi 4 Model B.
Весь процесс разбит на два этапа:
Подключение электроники

Что понадобится
1× Raspberry Pi 4 Model B (в комплект не входит)
1× Цветной дисплей DSI 4,3”
1× Шлейф DSI (FPC / 15 контактов / 50 мм)
1× Комплект крепежа
Инструкция
Установите плату Raspberry Pi на металлические стойки и закрепите конструкцию винтами M2.5×4.

Соедините её с дисплеем с помощью шлейфа FPC на 15 контактов.
Электроника подключена, переходим к программной настройке.
Программная настройка

Никаких дополнительных драйверов ставить не нужно, вы должны сразу увидеть загрузку рабочего стола RPi OS .
Это значит, всё получилось, и дисплей готов к работе.
Регулировка яркости
Дисплей поддерживает программное управление подсветкой. Если вы впервые включили дисплей, выполните следующий ряд действий.
Откройте терминал на Raspberry Pi или подключитесь по SSH.
Скачайте архив со скриптом для регулировки яркости:
wget https://www.waveshare.net/w/upload/3/39/Brightness.tar.gz
Распакуйте архив:
tar -xzf Brightness.tar.gz
Перейдите в распакованную директорию:
cd brightness
Запустите скрипт:
./install.sh
Зайдите в пункт меню: Menu Accessories Brightness . Должно открыться окно с бегунком регулировкой яркости дисплея.
Элементы дисплейного модуля

Экран
В модуле установлен TFT IPS-дисплей диагональю 4,3 дюйма и разрешением 800×480 пикселей. Технология IPS даёт дисплею углы обзора до 160°, высокую контрастность и широкую палитру цветов.

Матрица дисплея подключена к контролеру ICN6211, который является мостом между экраном и внешним интерфейсом DSI. Сверху на матрице расположен ёмкостный сенсор экрана с распознаванием до 5 касаний.
Разъём DSI
Дисплей общается с Raspberry Pi по интерфейсу MIPI DSI. Для коммуникации соедините между собой DSI-разъём на дисплейном модуле с DSI-разъёмом на одноплатнике с помощью FPC-шлейфа.
Display Serial Interface
Разъем Display Serial Interface на одноплатном компьютере Raspberry Pi. 15-контактный разъем для гибкого плоского шлейфа, 2 lane для передачи данных, 1 lane тактовых сигналов, линии 3.3 вольта и земли.
Display Serial Interface (DSI) — спецификация Mobile Industry Processor Interface (MIPI) Alliance [1] , направленная на снижение затрат на дисплейную подсистему в мобильных устройствах. В основном она ориентирована на LCD и тому подобные технологии дисплея. Спецификация определяет последовательную шину и протокол связи между хостом (источник изображения) и устройством (получателем изображения).
Описание [ править | править код ]
На физическом уровне, DSI определяет высокоскоростную дифференциальную передачу сигналов точка-точка по последовательной шине. Эта шина включает в себя одну линию высокой тактовой частоты и одну или несколько линий данных. Каждая линия состоит из двух проводов (для дифференциальной передачи сигналов). По всем линиям сигналы передаются от хоста DSI к устройству DSI, за исключением первой линии данных (линия 0), которая поддерживает функцию разворота шины (bus turnaround, BTA), то есть может менять направление передачи. Если используется более одной линии, они работают параллельно, передавая каждый следующий байт на следующей линии. То есть, если используются 4 линии, то 4 бита передаются одновременно, по одному на каждую линию. Связь работает либо в режиме низкого энергопотребления (low power, LP), либо в режиме высокой скорости (high speed, HS). В режиме низкого энергопотребления, сигнал высокой тактовой частоты отключен, и сигнал синхронизации встроен в данные. В этом режиме скорости передачи данных недостаточно, чтобы управлять дисплеем, но он может использоваться для передачи команд и информации о конфигурации. Высокоскоростной режим разрешает сигнал высокой тактовой частоты (в диапазоне частот от десятков мегагерц до более одного гигагерца), который действует как синхронизация для линий данных. Тактовые частоты варьируются в зависимости от требований дисплея. В высокоскоростном режиме также достигается низкое энергопотребление благодаря низкому напряжению сигналов и возможности параллельной передачи.
Коммуникационный протокол описывает два набора инструкций. Набор Device Command Set (DCS) определяет общие команды для управления дисплеем, и их формат определяется стандартом DSI. Стандарт определяет регистры, к которым можно обратиться и за что они отвечают. Стандарт включает в себя основные команды, такие как сон, включение и инверсия дисплея. Набор инструкций Manufacturer Command Set (MCS) определяет пространство команд, специализированных для устройства, которые определяются производителем устройства. Это могут быть команды, необходимые для управления энергонезависимой памятью, установка конкретных регистров устройства (например, гамма-коррекция), или для выполнения других действий, не описанных в стандарте DSI. Формат пакета обоих наборов определяется стандартом DSI. Есть длинные и короткие пакеты, длина короткого пакета составляет 4 байта, длинный пакет может быть любой длины до 2^16. Пакеты включают следующие поля: DataID, количество слов, код коррекции ошибки (ECC), данные и контрольная сумма (CRC). Команды, которые требуют чтения данных от устройства, вызывают событие BTA, которое позволяет устройству ответить с запрашиваемыми данными. Устройство не может инициировать передачу, оно может ответить только для размещения запросов. Изображение передается на шине, чередуясь с сигналами для интервалов горизонтальной и вертикальной развертки. Данные отображаются на дисплее в режиме реального времени, и не хранятся на устройстве. Это позволяет изготавливать простые устройства отображения без буферной памяти кадра. Однако, это также означает, что дисплей должен постоянно обновляться (с частотой, например, 30 или 60 кадров в секунду) или он потеряет изображение. Изображение передается только в режиме HS. При работе в режиме HS, команды передаются в интервале кадровой развертки.
Использование [ править | править код ]
- Raspberry Pi — на устройстве имеется слот DSI [2]
- LattePanda, Alpha, Delta — на устройстве имеется слот DSI
Примечания [ править | править код ]
- ↑(неопр.) . Дата обращения: 20 октября 2012.Архивировано 19 августа 2012 года.
- ↑(неопр.) . Дата обращения: 20 октября 2012.Архивировано 10 октября 2012 года.