🛠 Piloter un écran parallèle 24 bits en DPI sur le CM3
Objetivos
Sacar la visualización por el bus DPI (RGB paralelo de 24 bits) del SODIMM en lugar de por HDMI: es la interfaz nativa de las pantallas industriales sin controlador HDMI, y una de las E/S que distinguen el CM3 de un Pi 3 clásico (hoja de datos RP-008161-DS §2.2). El DPI se mapea sobre funciones alternativas de los GPIO del banco 0, por lo que consume una gran parte de este banco. Este tutorial configura el controlador de visualización mediante config.txt y el modo servicio, y luego verifica el cableado.
Material
- CM3 en una placa base que disponga de un conector adecuado para la pantalla DPI (la CMIO3 no expone el DPI en un conector estándar: prever una placa personalizada o un adaptador tipo CM3-PANEL de Acme)
- Pantalla RGB paralelo de 24 bits (R0-R7, G0-G7, B0-B5, PCLK, DE, HSYNC, VSYNC), retroiluminación alimentada por separado
- Anotar la tensión VREF del banco 0: el DPI sale a la tensión del riel VREF del banco (1,8-3,3 V) — adaptarla al nivel lógico de la pantalla
Código completo
# 1. Réserver le DPI via config.txt. Exemple pour une dalle 800x480 7" classique :
sudo tee -a /boot/firmware/config.txt <<'EOF'
# mode vidéo personnalisé 800x480 @ 60 Hz routé vers le DPI
hdmi_cvt=800 480 60 6 0 0 0
hdmi_group=2
hdmi_mode=87
EOF
sudo reboot
# 2. Vérifier la sortie vidéo côté firmware
/opt/vc/bin/tvservice -s # affiche le mode actif résolu
# 3. Tester un affichage
sudo apt install -y fbv
ls /dev/fb* # /dev/fb0 doit exister
fbv test.png
Verificación esperada
tvservice -s indica un modo activo 800x480 y la imagen de prueba aparece en la pantalla. ls /dev/fb* muestra /dev/fb0. En las imágenes recientes con KMS, modetest (paquete libdrm-tests) lista el codificador DPI y permite enviar colores sólidos para verificar el cableado R/G/B pin por pin.
Errores frecuentes
- Usar GPIO ya utilizados por otros periféricos: el DPI de 24 bits ocupa una veintena larga de pines del banco 0 — cruzar con la tabla de funciones alternativas de la hoja de datos §6 antes de cualquier cableado.
- Tensión VREF incorrecta del banco 0: una pantalla con lógica de 1,8 V atacada por un banco 0 a 3,3 V recibe una sobretensión; el DPI sigue el riel VREF, es una decisión de diseño de la placa base.
- Olvidar la alimentación propia de la retroiluminación (a menudo un driver LED separado): la imagen está presente pero la pantalla permanece negra.
- Confundir DPI y SMI: SMI es el bus NAND/bus Intel modo 80 para memorias y visualizadores, no un bus de vídeo RGB.
- Esperar una detección de presencia: el pin HDMI_HPD_N_1V8 está reservado para el firmware y no existe en DPI — se asume que la pantalla está siempre conectada.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash