- PVSM.RU - https://www.pvsm.ru -
Как-то мне захотелось поэкспериментировать с MIPI DSI экранами. Встал вопрос: к чему их подключить? Позже я выбрал решение и спроектировал плату, о чём начал писать статью. Но есть и множество других вариантов. Решил вынести эти данные в отдельную часть.
Информация постепенно собиралась по крупицам из разных источников, а после успешного запуска экранов была осмыслена с учётом полученного опыта, систематизирована и представлена в удобной форме.
Какие решения доступны? Как рассчитать скорость передачи данных?
Варианты:
Малина.
У версий Zero Малины нет DSI, только CSI для камеры.
У версий 1А+, 1В+, 2, 3, А+, В+, 4 есть DSI выход (2 пары данных и одна тактовая).
Схема [1].

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

У Compute Module 3+ [4], CM4 [5]
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 [6] – это высокопроизводительный микроконтроллер (или, скорее, гибрид), который поддерживает большой объем встроенной памяти и обладает хорошими возможностями обработки изображений и голоса. 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, которые идеально подходят для разработки графического интерфейса пользователя.
Есть и плата малиновой формы:

Прежде всего вспоминаются микросхемы STM. Есть апнота про DSI host [7] в микросхемах 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 других производителей.
IMXRT1170 [8], i.MX-RT1160 [9] и другие.
На Хабре была статья [10] про такие мк.
Имеют 2 пары данных с частотами до 1,5 ГГц на пару (bit rate clock).
Поддерживают командный и видео режимы.

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

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


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

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

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

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

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

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


Например, нужно запустить экран COM48H4N22ULC [30]. Хотим узнать, какую максимальную скорость передачи данных на пару должна обеспечить микросхема/решение в видеорежиме, чтобы выбрать подходящие.
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 напрямую, какие-то через специальную схему на резисторах или через специальные микросхемы.
Существуют и микросхемы преобразования интерфейсов.
Чтобы верно выбрать решение, стоит оценить скорость передачи данных на полосу.
Пройдите, пожалуйста, опрос. Нам важно ваше мнение! Спасибо!
Автор: Kopcheniy
Источник [31]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/stm32/422941
Ссылки в тексте:
[1] Схема: https://datasheets.raspberrypi.com/rpi3/raspberry-pi-3-b-plus-reduced-schematics.pdf
[2] Compute Module 5: https://datasheets.raspberrypi.com/cm5/cm5-datasheet.pdf
[3] camera/display transceivers: https://www.raspberrypi.com/products/raspberry-pi-5/
[4] Compute Module 3+: https://datasheets.raspberrypi.com/cm/cm3-plus-datasheet.pdf
[5] CM4: https://datasheets.raspberrypi.com/cm4/cm4-datasheet.pdf
[6] ESP32-P4: https://www.erlendervik.no/ESP32-C5%20Beta_ESP32-P4_ESP8686_ESP32-C3FH4X/ESP32_P4_Chip_Datasheet_V0.1_PRELIMINARY_EN.pdf
[7] апнота про DSI host: https://www.st.com/resource/en/application_note/an4860-introduction-to-dsi-host-on-stm32-mcus-and-mpus-stmicroelectronics.pdf
[8] IMXRT1170: https://www.nxp.com/products/i.MX-RT1170
[9] i.MX-RT1160: https://www.nxp.com/products/i.MX-RT1160
[10] статья: https://habr.com/ru/articles/700864/
[11] Lattice Crosslink: https://www.latticesemi.com/Products/FPGAandCPLD/CrossLink
[12] Lattice Crosslink NX: https://www.latticesemi.com/Products/FPGAandCPLD/CrossLink-NX
[13] XAPP894: https://github.com/chili-chips-ba/openeye-CamSI/blob/main/0.doc/Xilinx/MIPI/xapp894-d-phy-solutions.pdf
[14] AN 754: https://cdrdv2-public.intel.com/666639/an754-683092-666639.pdf
[15] MC20002, MC20901: https://www.meticom.com/Products.html
[16] LT89101L: https://www.lontiumsemi.com/UploadFiles/2021-03/LT89101L_Brief_R1.pdf
[17] в проекте: https://hackaday.io/project/364/logs
[18] даташит: https://www.buydisplay.com/download/ic/SSD2828.pdf
[19] один: https://www.internetsomething.com/lcd/ssd2828/SSD2828%20Getting%20Start%20User%20Guide%20v02.pdf
[20] два: https://www.internetsomething.com/lcd/ssd2828/SSD2828%20Debug%20step%20Guide%20line.pdf
[21] микросхема: https://static6.arrow.com/aropdfconversion/4a928083b4ba2cc3553d5432fd493b90903b2ce2/1811211633_solomon-systech-ssd2805cg39r_c235734.pdf
[22] Пример работы: https://web.archive.org/web/20190220193428/https:/blog.littlevgl.com/2019-02-02/use-ipod-nano6-lcd-for-littlevgl
[23] TC358870XBG: https://toshiba.semicon-storage.com/info/TC358870XBG_datasheet_en_20171025.pdf?did=28743&prodName=TC358870XBG
[24] на Хабре: https://habr.com/ru/post/649605/
[25] Есть разные: https://www.lontiumsemi.com/mipi/
[26] LT8918: http://lcsc.com/datasheet/lcsc_datasheet_2211151030_LONTIUM-SEMICONDUCTOR-LT8918_C5261041.pdf
[27] чуть больше: https://img.iceasy.com/product/product/files/201610/ff80808155e70f700157dbc3dc1b017b.pdf
[28] другие: https://aliexpress.ru/item/1005004276613938.html?spm=a2g2w.detail.rcmdprod.2.7dde2073ZHGFHw&mixer_rcmd_bucket_id=aerabtestalgoRecommendAbV4_controlRu1&ru_algo_pv_id=ebf95a-40a3c7-9fc34d-1b589b&scenario=pcDetailBottomMoreThisSeller&sku_id=12000028847104228&traffic_source=recommendation&type_rcmd=core
[29] платы: https://aliexpress.ru/item/4000093442742.html?sku_id=10000000247475351&spm=a2g2w.productlist.search_results.5.47bc4aa69Hv8zq
[30] COM48H4N22ULC: https://www.panelook.com/upload/201612/COM48H4N22ULC_Ver1.0_20160719_201612147153.pdf
[31] Источник: https://habr.com/ru/companies/timeweb/articles/918874/?utm_campaign=918874&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.