🛠 Configurer les E/S GPIO et IIO sur BPI-5202 Loongson
Objectifs
Ce tutoriel vise à maîtriser l'interface des périphériques externes via le port GPIO de 20 broches et le sous-système IIO (Industrial I/O) du BPI-5202. Contrairement aux cartes de développement grand public, cette carte industrielle utilise une architecture LoongArch avec des spécificités de bus interne pour les modules d'extension (DI, DO, AI, AO). L'objectif est de lire un état logique (bouton) et de commander une sortie (LED) ou de lire une donnée analogique si un module AI est connecté, en utilisant les outils standard Linux adaptés à Loongnix ou KylinOS.
Matériel nécessaire
- Carte BPI-5202 avec alimentation DC 24V stable.
- Système d'exploitation installé (Loongnix ou KylinOS V10 recommandé pour les pilotes GPIO natifs).
- Module d'extension GPIO compatible (DI/DO ou AI/AO) branché sur le bus interne.
- Un bouton-poussoir, une LED avec résistance (330Ω), et des fils de connexion (pas de 2,54 mm).
- Un multimètre pour la vérification des tensions.
- Câble série RS232 isolé pour l'accès console.
Étapes
Le port de 20 broches expose les lignes du contrôleur GPIO interne. Sous Linux, ces lignes sont mappées dynamiquement. Ouvrez un terminal et identifiez les contrôleurs GPIO disponibles : ``bash ls /sys/class/gpio/ `` Notez le numéro du contrôleur principal (ex: gpiochip0). Pour connaître les broches physiques exposées sur le connecteur de 20 pins, consultez la documentation technique spécifique au module d'extension utilisé, car le mappage dépend du bus interne (I2C/SPI/GPIO natif).
- Identification des broches GPIO :
Pour contrôler une LED connectée à une broche de sortie (supposons le GPIO 10 pour l'exemple), exportez-la dans l'espace utilisateur : ``bash echo 10 > /sys/class/gpio/export ` Définissez la direction en sortie : `bash echo out > /sys/class/gpio/gpio10/direction ``
- Exportation d'une broche GPIO :
Allumez la LED en écrivant 1 dans la valeur : ``bash echo 1 > /sys/class/gpio/gpio10/value ` Éteignez-la avec 0 : `bash echo 0 > /sys/class/gpio/gpio10/value ``
- Commande de la sortie (LED) :
Pour un bouton connecté à une broche d'entrée (supposons GPIO 11), exportez et configurez la direction en entrée : ``bash echo 11 > /sys/class/gpio/export echo in > /sys/class/gpio/gpio11/direction ` Lisez l'état logique (0 ou 1) : `bash cat /sys/class/gpio/gpio11/value ``
- Lecture d'une entrée (Bouton) :
Si un module d'extension Analogique est connecté, le GPIO natif ne suffit pas. Utilisez les outils IIO. Installez libiio-tools si nécessaire. Listez les canaux disponibles : ``bash iio_info ` Lisez une valeur brute d'un canal analogique (ex: in_voltage0_raw) : `bash cat /sys/bus/iio/devices/iio\:device0/in_voltage0_raw ``
- Utilisation du sous-système IIO (pour modules AI/AO) :
Vérification
- GPIO : Observez physiquement la LED s'allumer/éteindre selon la commande
echo. Utilisez le multimètre pour confirmer 3.3V ou 5V (selon la tension logique du module) sur la broche de sortie. - Entrée : Appuyez sur le bouton et vérifiez que la commande
catretourne1(ou0selon le câblage pull-up/pull-down). - IIO : Les valeurs brutes doivent varier de manière cohérente si vous modifiez la tension d'entrée du module AI (ex: potentiomètre).
Pour aller plus loin
Explorez l'utilisation de libgpiod pour une gestion plus robuste des GPIO, évitant les problèmes de concurrence des fichiers sysfs. Pour les applications temps réel critiques, envisagez l'utilisation de l'API IIO en C via libiio pour une latence réduite. N'oubliez pas de sécuriser les accès GPIO si votre application tourne en multi-utilisateurs.
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
- Automatisation industrielle avec BPI-5202 : RS485 et GPIO
- Mise en route initiale du BPI-5202 Loongson
- Pilotage GPIO et E/S industrielles sur BPI-5202