
Как-то мне захотелось поэкспериментировать с MIPI DSI экранами. Встал вопрос: к чему их подключить? Позже я выбрал решение и спроектировал плату, о чём начал писать статью. Но есть и множество других вариантов. Решил вынести эти данные в отдельную часть.
Информация постепенно собиралась по крупицам из разных источников, а после успешного запуска экранов была осмыслена с учётом полученного опыта, систематизирована и представлена в удобной форме.
Какие решения доступны? Как рассчитать скорость передачи данных?
Варианты:
- Одноплатные компьютеры (готовые или спроектировать свою плату с процессором).
- Микроконтроллеры с MIPI DSI интерфейсом.
- Микроконтроллеры кроссоверы с MIPI DSI интерфейсом.
- ПЛИС (некоторые поддерживают напрямую, схема на резисторах или спец. микросхемы).
- Микросхемы преобразования интерфейсов (RGB/HDMI/DP/LVDS… –> МIPI DSI).
❯ 1. Одноплатные компьютеры (готовые или спроектировать свою плату с процессором)
Малина.
У версий Zero Малины нет DSI, только CSI для камеры.
У версий 1А+, 1В+, 2, 3, А+, В+, 4 есть DSI выход (2 пары данных и одна тактовая).
Схема.

У Малины 5 и Compute Module 5 2 × 4-lane MIPI camera/display transceivers.
Есть два разъёма. Можно настроить по одному на камеру/экран, либо сделать 2 разъёма одного вида (камера или экран).

У Compute Module 3+, CM4
1x 4-lane DSI Display Interface (up to 1Gbps per lane)
1x 2-lane DSI Display Interface (up to 1Gbps per lane)
Кроме Малины есть множество других одноплатников. У каждого свой набор интерфейсов.
Интересный вариант – плата на RK3566 (RK3566-2G-16G). Кроме MIPI DSI и HDMI на ней есть EDP.



Для варианта платы с процессором нужно разбираться с Линуксом и писать драйвер экрана.
ESP32-P4.
ESP32-P4 – это высокопроизводительный микроконтроллер (или, скорее, гибрид), который поддерживает большой объем встроенной памяти и обладает хорошими возможностями обработки изображений и голоса. Cостоит из высокопроизводительной системы (High Performance) и системы с низким энергопотреблением (Low Power). Система HP содержит двухъядерный процессор RISC-V и множество периферийных устройств, в то время как система LP содержит маломощный одноядерный процессор RISC-V и различные периферийные устройства, оптимизированные для приложений с низким энергопотреблением.

ESP32-P4 поддерживает MIPI-CSI и MIPI-DSI (2 пары данных, до 1,5 Гбит/с/полоса), что облегчает интеграцию экранов и камер с высоким разрешением (до 1080p). Для обеспечения широкой совместимости ESP32-P4 оснащен параллельными интерфейсами дисплея (до 24 бит/цвет) и камеры.
Кроме того, он оснащен емкостным сенсорным вводом и функциями распознавания речи, что делает его удобным для приложений с человеко-машинным интерфейсом. ESP32-P4 объединяет аппаратные ускорители для различных протоколов кодирования и сжатия мультимедиа, включая поддержку кодирования H.264 с максимальной производительностью 1080p при 30 кадрах в секунду. SoC также включает в себя встроенный аппаратный ускоритель обработки пикселей (PPA) и 2D-DMA, которые идеально подходят для разработки графического интерфейса пользователя.
Есть и плата малиновой формы:

❯ 2.Микроконтроллеры с MIPI DSI интерфейсом
Прежде всего вспоминаются микросхемы STM. Есть апнота про DSI host в микросхемах STM32.
DSI Host – это специализированное периферийное устройство для взаимодействия с дисплеями, MIPI DSI. Оно включает в себя специальный видеоинтерфейс, подключенный к LTDC, и универсальный интерфейс APB, который может использоваться для передачи информации на дисплей.
Контроллер LCD-TFT дисплея (LTDC) обеспечивает 24-разрядный параллельный цифровой режим RGB (24 бит/пиксель) и может управлять экранами с разрешением до XGA (1024x768).
Но максимальное разрешение ограничено доступной пропускной способностью физического канала DSI (lane rate) – 0,5 или 1 Гбит/с:

DSI хост STM32 поддерживает все режимы работы, определенные в спецификации MIPI DSI: командный режим и все варианты видеорежима (пакетный, не пакетный с синхроимпульсами и не пакетный с событиями синхронизации). Поддерживает скорость соединения до 1 Гбит/с или 2 Гбит/с в зависимости от модели.
Вероятно, есть ещё какие-то микроконтроллеры с MIPI DSI других производителей.
❯ 3. Микроконтроллеры кроссоверы с MIPI DSI интерфейсом
IMXRT1170, i.MX-RT1160 и другие.
На Хабре была статья про такие мк.
Имеют 2 пары данных с частотами до 1,5 ГГц на пару (bit rate clock).
Поддерживают командный и видео режимы.

❯ 4. ПЛИС
Интерфейс MIPI довольно специфичен. В режиме Low Power уровень сигнала 1,2 В LVCMOS, в режиме HS уровни согласно стандарту SLVS-400.

Варианты подключения MIPI экрана/камеры к ПЛИС:
- Напрямую.
- Через резисторную схему (< 800 Мбит/с на полосу).
- Через специальную микросхему (> 800 Мбит/с на полосу).
ПЛИС, которые напрямую поддерживают MIPI DPHY, в основном включают серии Xilinx UltraScale+ (макс. 1,5 Гбит/с на полосу), Lattice Crosslink (макс. 1,5 Гбит/с/полоса) и Lattice Crosslink NX (макс. 2,5 Гбит/с/полоса). Другие типы FPGA требуют добавления дополнительных схем преобразования уровней для преобразования сигналов в LVDS.
Для скоростей < 800 Мбит/с на линию достаточно резисторной схемы. Резисторы используются для подключения, изоляции, терминации и сдвига уровня, чтобы создать D-PHY из имеющихся в ПЛИС стандартов ввода/вывода (LVCMOS или HSTL для LP режима, LVDS для HS).
Есть апноты от Xillinx (D-PHY Solutions XAPP894) и от ALTERA (AN 754: MIPI D-PHY Solution with Passive Resistor Networks in Intel® Low-Cost FPGAs), в которых описано это решение.
FPGA Compatible D-PHY Transmitter:


Для скоростей > 800 Мбит/с на линию требуется специальная микросхема преобразования уровней, такая как MC20002, MC20901, LT89101L и т. д.;
Application Example MC20001/MC20002:

D-PHY на резисторах используется, например, в проекте MIPI DSI Display Shield/HDMI Adapter.
❯ 5. Микросхемы преобразования интерфейсов (RGB/HDMI/DP/LVDS… <–> МIPI DSI)
Есть довольно много разных микросхем. На какие-то есть полный даташит и разные руководства, примеры проектов и другие полезности; для каких-то доступен только краткий документ на пару страниц.
SSD2828.
RGB, SPI –> МIPI DSI
Поддерживает до 4 пар данных, 1 Гбит/с/пару.
Максимум 1920 пикселей на строку экрана (60 кадров/с) или 2560 при частоте 30 кадров/с.
Есть полный даташит, руководства (один, два), примеры проектов, готовые платы и т. д.

SSD2805.
Если нужно запустить экран с командным режимом, то подойдёт эта микросхема.
Остальные перечисленные микросхемы обычно работают с экранами в видеорежиме.
Преобразует RGB + SPI\MCU –> MIPI DSI.
Поддерживает до 700Mбит/с, 2 полосы данных (350Мбит/с/полосу).
Пример работы в связке с ESP32.
Есть и другие микросхемы этого производителя.
Toshiba TC358870XBG.
HDMI –> 2 порта MIPI DSI.
TC358870XBG может передать 7,2 Гбит/с видео с HDMI по двойному каналу DSI (1 Гбит/с на дифф. пару).
До 4K×2K (3840×2160) 30 кадров/с, 24 бит цвет.
По одному каналу DSI максимум 2558 пикселей на строку (24 бит на пиксель) или 3411 пикселей (16 бит на пиксель).
Есть примеры проектов (в том числе на Хабре), готовые платы и т. д.

Микросхемы Lontium.
Есть разные преобразователи интерфейсов MIPI, HDMI, Display Port, LVDS и другие в разные стороны и с разным кол-вом портов, интерфейсов и т. д. (зависит от микросхемы).

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

Список вариантов не претендует на полноту.
Попадаются и другие платы преобразования интерфейсов, непонятно на основе каких микросхем.


❯ Как рассчитать скорость передачи данных?
Например, нужно запустить экран COM48H4N22ULC. Хотим узнать, какую максимальную скорость передачи данных на пару должна обеспечить микросхема/решение в видеорежиме, чтобы выбрать подходящие.
16,777,216-color, 4.8" TFT display with 720 x RGB(H) x 1280(V) dots
16,777,216 = 2^24 => экран может 24 бита/пиксель.

Из этой таблички берём временнЫе параметры.
Ориентируясь на картинку,

Рассчитаем пиксельную частоту:
PixelClock = (Высота + VSync + VFP + VBP) * (Ширина + HSync + HFP + HBP)*FPS = (1280 + 3 + 6 + 3)*(720 + 15 + 91 + 70) = 69,46 МГц.
Если бы картинка передавалась по RGB интерфейсу, то мы тактировали бы его как раз с такой частотой.
Требуемая скорость передачи данных:
Скорость = PixelClock*24 бита/пиксель = 1,667 Гбит/с.
Такая скорость была бы нужна, если бы мы передавали данные по одной полосе (дифф. паре) данных.
В данном случае 4 пары данных:

Поэтому на одну дифф. пару получаем:
Скорость/4 = 416,7 Мбит/с.
В интерфейсе MIPI DSI данные считываются по фронту и по спаду тактового сигнала (Double Data Rate), поэтому частота сигнала CLKp,n будет в два раза ниже:
416,7 Мбит/с /2 = 208,4 МГц.
❯ Коротко о главном
Существуют разные решения. У каждого свои плюсы и минусы.
У одноплатных компьютеров обычно есть DSI интерфейс 2 или 4 полосы. Нужно писать драйвер для Линукс.
У некоторых микроконтроллеров есть DSI. Обычно 2 полосы.
Можно использовать ПЛИС. Некоторые могут работать с DSI напрямую, какие-то через специальную схему на резисторах или через специальные микросхемы.
Существуют и микросхемы преобразования интерфейсов.
Чтобы верно выбрать решение, стоит оценить скорость передачи данных на полосу.
Пройдите, пожалуйста, опрос. Нам важно ваше мнение! Спасибо!
Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале ↩

Комментарии (3)
pvvv
18.06.2025 08:51Хватает сенсоров изображений с jpeg энкодером на борту, да и на дисплеях далеко не всегда надо обязательно 140fps отображать. И для первого и для второго с некоторой натяжкой хватило бы и lowpower режима с его 10МБит/с и любого дохлого МК без гигабитных интерфейсов. Но вот некая огороженность и отсутсвие человеческой документации раздражает.
the_bat
18.06.2025 08:51Хороший обзор получился. Для коммерческих проектов постоянно использую DSI и CSI (ну и, конечно, LVDS). Дисплеи дороговаты, но тонкие и качество картинки хорошее. Камеры, в основном, использую OV5640, ну и распберри.
MinimumLaw
Для "домашней автоматизации" MIPI был бы интересен, но... Производители матриц так норовят сделать свой уникальный разъем. С тем же LVDS проще. А чтоб по минимуму зависеть лучше распространенные стандарты (желательно с DDC) типа (e)HDMI или (e)DP.
По камерам - ну в принципе та же история. Там, правда еще и зоопарк форматов (включая упакованные) в данных. Как мне кажется более или менее универсального решения нет. Опять же - дабы иметь минимум проблем, я бы настоятельно рекомендовал USB камеру. Там тоже зоопарк, но интерфейс не в пример проще.