🛠 Maîtriser les E/S : GPIO, Capteurs et Affichage sur CM3588
Objectifs
Ce tutoriel vise à exploiter les capacités d'entrée/sortie avancées du module CM3588. Vous apprendrez à manipuler les 81 GPIO disponibles, à configurer les interfaces MIPI CSI pour les caméras, et à gérer la sortie vidéo HDMI 2.1 ou MIPI DSI. L'accent est mis sur la configuration du Device Tree et l'utilisation des outils de ligne de commande Linux pour un contrôle précis.
Matériel nécessaire
- Module CM3588 (version standard ou Plus)
- Carte de base compatible (ex: CM3588 Baseboard)
- Alimentation 5-20VDC (max 20W)
- Câbles de connexion GPIO (dupont)
- Capteur I2C (ex: BME680) ou module caméra MIPI CSI
- Écran HDMI ou panneau MIPI DSI
- PC avec accès SSH et compilateur Device Tree (dtc)
Étapes
Connectez-vous en SSH. Assurez-vous que les outils de contrôle GPIO sont installés : ``bash sudo apt update && sudo apt install gpiod libgpiod-tools ` Identifiez les broches disponibles via le fichier de configuration : `bash cat /sys/kernel/debug/gpio ``
- Préparation de l'environnement
Le CM3588 expose ses GPIO via le contrôleur pinctrl. Pour contrôler une broche spécifique (ex: GPIO1_A0), utilisez gpioset ou gpioget. Exemple pour mettre une sortie à l'état haut : ``bash # Identifier le GPIO correspondant dans le système gpiodetect # Activer la broche (numéro à adapter selon le schéma de la base) gpioset gpiochip0 10=1 `` Pour une utilisation programmée en C, utilisez la bibliothèque libgpiod.
- Configuration des GPIO
Activez l'interface I2C dans le Device Tree. Vérifiez la présence du bus : ``bash ls /dev/i2c-* i2cdetect -y 1 ` Si le capteur apparaît, installez les drivers spécifiques. Pour un capteur de température, lisez les registres via i2cget : `bash i2cget -y 1 0x76 0xd0 ``
- Interfaçage avec un capteur I2C
Le RK3588 supporte 8K@60Hz. Vérifiez la détection de l'écran : ``bash xrandr --listmonitors ` Pour forcer une résolution spécifique, éditez le fichier de configuration du serveur graphique ou utilisez xrandr : `bash xrandr --output HDMI-1 --mode 3840x2160 --rate 60 ` Pour les écrans MIPI DSI, la configuration se fait exclusivement via le Device Tree (node dsi`), en définissant les timings et la résolution native du panneau.
- Gestion de l'affichage HDMI 2.1
Connectez la caméra. Vérifiez la détection du capteur image : ``bash dmesg | grep -i csi ` Utilisez v4l2-ctl pour tester le flux vidéo : `bash v4l2-ctl --list-devices v4l2-ctl -d /dev/video0 --set-fmt-video=width=1920,height=1080,pixelformat=NV12 ``
- Caméra MIPI CSI
Vérification
Pour les GPIO, utilisez un multimètre pour confirmer les niveaux de tension (0V/3.3V). Pour l'I2C, assurez-vous que les lectures sont cohérentes avec les spécifications du capteur. Pour l'affichage, vérifiez l'absence d'artefacts visuels et la stabilité du signal 8K si applicable. Pour la caméra, capturez une image avec ffmpeg :
ffmpeg -f v4l2 -video_size 1920x1080 -i /dev/video0 -frames:v 1 test.jpg
Pour aller plus loin
Explorez l'utilisation des DMA pour transférer les données des capteurs sans surcharger le CPU. Étudiez les overlays Device Tree pour charger dynamiquement des configurations sans recompiler le noyau. Enfin, optimisez la consommation énergétique en mettant en veille les interfaces non utilisées via le framework de gestion de l'énergie du noyau Linux.