🛠 Piloter un écran parallèle 24 bits en DPI sur le CM3
Objectifs
Sortir l'affichage sur le bus DPI (parallel RGB 24 bits) du SODIMM plutôt qu'en HDMI : c'est l'interface native des dalles industrielles sans contrôleur HDMI, et l'un des I/O qui distinguent le CM3 d'un Pi 3 classique (datasheet RP-008161-DS §2.2). Le DPI est mappé sur des fonctions alternatives de GPIO de bank0 — il consomme donc une grande partie de cette banque. Ce tutoriel configure le contrôleur d'affichage via config.txt et le mode service, puis vérifie le câblage.
Matériel
- CM3 sur une carte porteuse disposant d'un connecteur adapté à la dalle DPI (la CMIO3 ne casse pas le DPI sur header standard : prévoir une carte custom ou un adaptateur type CM3-PANEL Acme)
- Dalle parallèle RGB 24 bits (R0-R7, G0-G7, B0-B5, PCLK, DE, HSYNC, VSYNC), rétroéclairage alimenté séparément
- Noter la tension VREF de bank0 : le DPI sort à la tension du rail VREF de la banque (1,8-3,3 V) — l'adapter au niveau logique de la dalle
Code complet
# 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
Vérification attendue
tvservice -s indique un mode actif 800x480 et l'image de test apparaît sur la dalle. ls /dev/fb* montre /dev/fb0. Sur les images récentes en KMS, modetest (paquet libdrm-tests) liste l'encodeur DPI et permet de pousser des couleurs unies pour vérifier le câblage R/G/B broche par broche.
Erreurs fréquentes
- Piquer des GPIO déjà utilisés par d'autres périphériques : le DPI 24 bits occupe une grosse vingtaine de broches de bank0 — croiser avec le tableau des fonctions alternatives du datasheet §6 avant tout câblage.
- Mauvaise tension VREF de bank0 : une dalle en logique 1,8 V attaquée par un bank0 en 3,3 V reçoit une surtension ; le DPI suit le rail VREF, c'est une décision de carte porteuse.
- Oublier l'alimentation propre du rétroéclairage (souvent un driver LED séparé) : l'image est présente mais l'écran reste noir.
- Confondre DPI et SMI : SMI est le bus NAND/bus Intel mode 80 pour mémoires et afficheurs, pas un bus vidéo RGB.
- Attendre une détection de présence : la broche HDMI_HPD_N_1V8 est réservée au firmware et n'existe pas sur DPI — la dalle est supposée toujours connectée.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash