10 junio, 2025

Interfaz DSI en Raspberry

Analizando alternativas para conectar un Display a mí Raspberry PI me encuentro con la interfaz DSI


Por lo general es usual para agregar display con interfaz HDMI , i2c o algún combinación mítica con el GPIO. Pero viendo los puertos disponibles que tiene, me encuentro con el DSI

Que es el DSI?


DSI significa Display Serie Interface (Interfaz Serie de Pantalla) y define una interfaz serie de alta velocidad entre un procesador host y un módulo de pantalla. Se suele denominar MIPI DSI (Interfaz Serie de Procesador de la Industria Móvil) porque MIPI es el estándar

Este estandard lo define la MIPI Alliance (Mobile Industry Processor Interface Alliance) [interfaz de procesador de la industria móvil], es una organización global y de afiliación abierta que desarrolla especificaciones de interfaz técnicas para el ecosistema móvil y las industrias que están influenciadas por este; fundada en 2003.

Esta dirigido a reducir el costo de los controladores de pantalla en un dispositivo móvil. Por lo general, está dirigido a LCD y tecnologías de visualización similares. Define un bus serie y un protocolo de comunicación entre el host (origen de los datos de la imagen) y el dispositivo (destino de los datos de la imagen)



Explicación del término
  • DCS (Conjunto de comandos de pantalla / Display Command Set): Un conjunto estandarizado de comandos para el módulo de pantalla en modo comando.
  • CSI (Interfaz serie de cámara / Camera Serial Interface): Define una interfaz serie de alta velocidad entre el procesador y el módulo de cámara.
  • DSI (Interfaz serie de pantalla / Display Serial Interface): Define una interfaz serie de alta velocidad entre el procesador y el módulo de pantalla.
  • D-PHY: Proporciona definiciones de capa física para DSI y CSI.

Cómo funciona/arquitectura?


Relación de las diferentes capas del DSI

El sistema MIPI DSI se basa en un bus diferencial serie con dos modos de operación principales:

  1. Modo de baja velocidad (LP - Low Power)

    • Usado para comandos de control y configuración.

    • Funciona con señales en single-ended (un solo cable por señal).

    • Velocidades de hasta 10 Mbps.

  2. Modo de alta velocidad (HS - High Speed)

    • Se usa para transmisión de datos gráficos a la pantalla.

    • Usa un bus diferencial (LVDS - Low Voltage Differential Signaling).

    • Velocidades de hasta 6 Gbps en versiones modernas.


El bus MIPI DSI se compone de tres bloques principales:

1 - DSI Host (Procesador/SoC)

Es el generador de señales, ubicado en el procesador o controlador gráfico del sistema.

  • Funciones:

    • Generar datos gráficos en formato RGB o YUV.

    • Convertirlos en paquetes DSI (con información de sincronización y píxeles).

    • Manejar la transmisión en modo LP o HS.


2 - Canales de transmisión (Lane Pairs - Diferenciales)

La comunicación se hace mediante cables diferenciales para reducir ruido electromagnético.

  • Lane 0: Se usa para comandos en modo LP y datos en modo HS.

  • Lane 1 a N: Canales adicionales para transmisión de datos en paralelo.

  • Puede haber 1, 2, 3 o 4 lanes, aumentando el ancho de banda disponible.


📌 Ejemplo de configuración de Lanes:

Cantidad de LanesVelocidad Total (aprox.)
1 Lane1.5 Gbps
2 Lanes3.0 Gbps
4 Lanes6.0 Gbps


3 - Pantalla DSI (DSI Display Controller - Target Device)

Es la pantalla receptora del flujo de datos.

  • Funciones:

    • Recibir los paquetes de datos DSI.

    • Convertirlos en señales para matrices LCD o OLED.

    • Manejar sincronización vertical y horizontal.


Formatos de transmisión

MIPI DSI puede operar en dos modos principales:

1️⃣ Modo Video

  • La pantalla recibe datos de forma continua.

  • Se sincroniza mediante señales VSYNC y HSYNC.

  • Usado en pantallas que no tienen memoria de imagen (buffer interno).

2️⃣ Modo Comando

  • Envío de datos en paquetes discretos.

  • La pantalla almacena la imagen en su memoria interna.

  • Se usa en OLEDs y algunas LCDs con buffer.


🔹 Ventajas del MIPI DSI

Alta velocidad: Permite resoluciones 4K y más con múltiples lanes.
Bajo consumo: Usa menos pines y menos potencia que LVDS o HDMI.
Menos interferencias: Gracias a la transmisión diferencial.
Compatibilidad con pantallas OLED y LCD.


Ejemplo de uso: Pantallas de teléfonos Samsung, Apple, Raspberry Pi DSI Display, smart watch y otros dispositivos móviles.


🔹 Comparación con otras interfaces

InterfazUsado enVelocidadCableado
MIPI DSIMóviles, embebidosHasta 6 GbpsDiferencial LVDS
LVDSLaptops, monitoresHasta 3 GbpsDiferencial
HDMITVs, consolasHasta 48 Gbps (HDMI 2.1)Single-ended
eDPLaptops, tabletsHasta 8.1 GbpsDiferencial




DSI Display para RaspberryPI


Cómo se habilita en Raspberry Pi?

Algunas definiciones primero:

  • dtoverlay
    La opción dtoverlay solicita al firmware que cargue una superposición (overlay) del Device-Tree (un archivo de configuración que permite la compatibilidad del kernel con hardware integrado y externo). Por ejemplo, dtoverlay=vc4-kms-v3d carga una superposición que habilita el controlador gráfico del kernel.
  • vc4-kms-dsi 
    significa  controlador gráfico VC4 para mostrar la salida de la pantalla a través de un conector DSI
  • kms
    significa Kernel Mode Setting. Es un componente del sistema operativo que gestiona la configuración y el manejo de los gráficos en el kernel, en lugar de dejarlo a las aplicaciones individuales.




La magia para habilitarlo radica en la edición del config.txt

nano /boot/config.txt

Va depender de cada fabricante el parámetro a colocar en dtoverlay 
consultar bien el que corresponde
dtoverlay=vc4-fkms-v3d

dtoverlay=vc4-kms-dsi-7inch
#Alternativas a dtoverlay (fabricante waveshare)
#dtoverlay=vc4-kms-dsi-waveshare-panel,7_0_inchC,i2c1
#dtoverlay=vc4-kms-dsi-waveshare-panel,8_8_inch
#dtoverlay=vc4-kms-dsi-waveshare-panel,8_8_inch,dsi0

max_framebuffers=2
También varia según la versión de la Raspberry, lo cual es muuy conveniente verificar compatibilidad con la Raspy que se quiere conectar.


Brillo

Para controlar el brillo desde línea de comando:

echo X | sudo tee /sys/class/backlight/*/brightness
Donde X representa cualquier numero desde 0 a 255. 0 significa el backligth apagado, y 255 su brillo máximo.

Rotación

sudo nano /boot/cmdline.txt
video=DSI-1:800x480M@60,rotate=90
sudo reboot

Para sistemas antiguos que no soportan driver modes como vc4-kms-v3dvc4-fkms-v3d (Stretch/Jessie)

nano /boot/config.txt
display_rotate=1 #1:90;2: 180; 3: 270

Puede funcionar en conjunto con HDMI ?

En principio si, permitiría video simultaneo en ambas salidas. Todavía no lo probé experimentalmente.


Recursos

  • https://en.wikipedia.org/wiki/Display_Serial_Interface
  • https://www.orientdisplay.com/es/knowledge-base/lcd-basics/lcd-ctp-interface/
  • https://www.mipi.org/specifications/dsi
  • https://focuslcds.com/journals/application-notes/hardware-interfacing-the-mipi-dsi-port-on-raspberry-pi/?srsltid=AfmBOooXYWMKpmhrWrIDwukvKa46tBxmKfNEZQcw3ruaQwTBCB4eAab6
  • https://www.reddit.com/r/embedded/comments/p6rnmx/how_to_educate_myself_on_mipi_display_interface/?tl=es-es
  • https://www.displaymodule.com/blogs/knowledge/what-is-mipi-dsi-display-serial-interface
  • https://newhavendisplay.com/blog/mipi-dsi-interface/
  • https://www.waveshare.com/wiki/4.3inch_DSI_LCD
  • https://pip.raspberrypi.com/categories/685-app-notes-guides-whitepapers/documents/RP-003472-WP/Using-a-DSI-display.pdf
  • https://www.raspberrypi.com/documentation/computers/config_txt.html
  • https://pip.raspberrypi.com/categories/685-app-notes-guides-whitepapers/documents/RP-004341-WP/Troubleshooting-KMS-HDMI-output.pdf
  • https://www.displaymodule.com/blogs/knowledge/overview-of-mipi-dsi-interface

0 comments:

Publicar un comentario