🛠 Pilotage GPIO et E/S industrielles sur BPI-5202
Objectifs
Ce tutoriel avancé vise à configurer et piloter les entrées-sorties numériques du BPI-5202. Nous allons exploiter le port GPIO 20 broches et les modules d'extension (DI/DO) via le bus interne. L'objectif est de réaliser une boucle de contrôle simple : lire un état logique (capteur) et commander un actionneur (LED ou relais), en utilisant le support matériel LoongArch.
Matériel nécessaire
- Carte BPI-5202 alimentée en DC 24V.
- Système d'exploitation Loongnix ou LoongOS installé.
- Module d'extension GPIO ou capteur/actionneur connecté au port 20 broches (pas de 2,54 mm).
- Interface série console (RS232 isolé) ou SSH pour l'accès terminal.
- Multimètre pour la vérification des niveaux de tension (optionnel).
Étapes
Connectez-vous en terminal. Vérifiez que le noyau a bien détecté le contrôleur GPIO spécifique à LoongArch. Utilisez dmesg | grep gpio pour confirmer l'initialisation du driver. Notez les numéros de base assignés aux ports physiques.
- Vérification de la détection matérielle
Sous Linux, les GPIO sont exposés via sysfs. Supposons que le GPIO physique 1 soit mappé sur le GPIO système 100. Créez le lien si nécessaire : ``bash echo 100 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio100/direction ` Pour une entrée (capteur), remplacez out par in`. Assurez-vous que les résistances de pull-up/down sont configurées si le module le permet, ou dépendez des caractéristiques du module d'extension DI/DO.
- Configuration du mode d'entrée/sortie
Pour mettre la sortie à l'état haut (3.3V ou 5V selon le module) : ``bash echo 1 > /sys/class/gpio/gpio100/value ` Pour lire l'état d'une entrée configurée en mode in : `bash cat /sys/class/gpio/gpio101/value `` Écrivez un script Bash simple pour basculer l'état toutes les secondes afin de tester la réactivité.
- Pilotage et lecture
Si vous utilisez un module DI/DO connecté au bus interne, les GPIO peuvent être regroupés. Consultez la documentation du module pour connaître le décalage d'adresse. Le bus interne gère la logique, mais l'exposition Linux reste standard via sysfs ou /dev/gpiochipX avec libgpiod.
- Utilisation des modules d'extension
Pour des applications critiques, évitez les changements d'état rapides via sysfs (trop lent). Utilisez l'interface ioctl directe ou configurez le noyau pour l'accès mémoire direct aux registres GPIO du 2K1000LA, en respectant les adresses physiques définies dans le Device Tree.
- Optimisation temps réel
Vérification
Utilisez un multimètre pour mesurer la tension sur la broche concernée : elle doit être proche de 0V (état bas) ou de la tension de référence (état haut). Pour les entrées, court-circuitez la broche à la masse pour vérifier que la commande cat renvoie bien 0.
Pour aller plus loin
Explorez l'utilisation de libgpiod pour une gestion plus robuste des événements GPIO. Intégrez ces E/S dans un système SCADA léger ou utilisez les ports CAN2.0 pour une communication réseau industrielle distribuée.
Autres tutoriels pour cette carte
- Premier branchement et mise en route du BPI-5202
- Cas d'usage : Configurer un serveur de fichiers et routeur réseau
- Premier branchement et mise en route du BPI-5202
- Configurer les E/S GPIO et IIO sur BPI-5202 Loongson
- Automatisation industrielle avec BPI-5202 : RS485 et GPIO
- Mise en route initiale du BPI-5202 Loongson