Accès aux GPIOs
Présentation générale
Depuis la version 4.8 du noyau Linux, les GPIOs (General Purpose Input Output) sont manipulables à travers l’interface de programmation Libgpiod.
Celle-ci est constituée d’une librairie en langage C et d’un ensemble d’outils en ligne de commande pour contrôler les GPIOs.
Elle permet l’accès aux broches d’entrée/sortie via le système de fichiers devtmpfs monté sur le répertoire /dev. On y trouve une entrée par contrôleur hardware de GPIO.
pi@rpi:~ $ uname -a
Linux rpi-prof 6.6.31+rpt-rpi-v7 #1 SMP Raspbian 1:6.6.31-1+rpt1 (2024-05-29) armv7l GNU/Linux
pi@rpi:~ $ ls /dev/gpiochip* -l
crw-rw----+ 1 root gpio 254, 0 Sep 13 17:57 /dev/gpiochip0
crw-rw----+ 1 root gpio 254, 1 Sep 13 17:57 /dev/gpiochip1
|
Outils en ligne de commande de Libgpiod
Lgpiod propose 6 outils en ligne de commande :
gpiodetect-
Liste tous les contrôleurs hardware de GPIO présents sur la machine, affiche leur nom et le nombre de GPIOs qu’ils contrôlent
Exemple :pi@rpi:~ $ gpiodetect gpiochip0 [pinctrl-bcm2835] (54 lines) (1) gpiochip1 [raspberrypi-exp-gpio] (8 lines) (1)1 Sur la Raspberry Pi, il y a 2 contrôleurs — gpiochip0etgpiochip1— nommés “pinctrl-bcm2835” et “raspberrypi-exp-gpio”. Ceux-ci gérent respectivement 54 et 8 broches GPIO gpioinfo-
Affiche des informations sur les broches pilotées par un ou l’ensemble des contrôleurs GPIO
Exemple: Infos sur les broches pilotées pargpiochip0pi@rpi:~ $ gpioinfo gpiochip0 gpiochip0 - 54 lines: [...] line 26: "GPIO26" unused input active-high (1) line 27: "GPIO27" "foobar" output active-high [used] (2) line 28: "HDMI_HPD_N" "hpd" input active-low [used] line 29: "STATUS_LED_G" "ACT" output active-high [used] [...]1 la broche 26, nommée “GPIO26”, est configurée en entrée (→ input), est active à l’état haut (→active-high) mais n’est pas utilisée en ce moment (→unused)2 la broche 27, nommée “GPIO27”, est configurée en sortie (→ output), est active à l’état haut (→active-high) et est actuellement utilisée (→used) par un processus qui se fait appelé “foobar”. gpioget-
Lit l’état d’une broche GPIO
Exemple:pi@rpi:~ $ gpioget gpiochip0 26 (1) 0 (2)1 Lecture de l’état de la broche 26 de gpiochip02 Le niveau logique sur la broche est actuellement ‘0’ gpioset-
Applique un niveau logique sur une broche et le maintient jusqu’à la fin d’exécution de la commande
Exemple:pi@rpi:~ $ gpioset -m time -s 5 gpiochip0 27=1 (1)1 Positionne la broche 27 au niveau logique 1 (→ 27=1) pendant 5s (→-m time s 5) gpiofind-
Cherche le nom du contrôleur en charge du pilotage d’un signal ainsi que son offset/identifiant
Exemplepi@rpi:~ $ gpiofind GPIO14 (1) gpiochip0 141 Le signal nommé GPIO14 est piloté par le contrôleur gpiochip0et son offset/identifiant est 14 gpiomon-
Permet d’afficher ou d’attendre les événements (front montant ou descendant) se passant sur une ou plusieurs broches d’entrée.
pi@rpi:~ $ gpiomon -n 2 gpiochip0 22 (1) event: RISING EDGE offset: 22 timestamp: [ 16923.047538775] (2) event: FALLING EDGE offset: 22 timestamp: [ 16926.439980109] (3)1 Attend 2 évènements (→ -n 2) sur la broche 22 du contrôleurgpiochip02 Un front montant (→ _RISING EDGE`) se produit sur la broche 22 à environ 4h42'03" (→ 16923.047538775s) après le démarrage de la Raspberry Pi 3 Un front montant (→ _RISING EDGE`) se produit sur la broche 22 à environ 4h42'06" (→ 16926.439980109s) après le démarrage de la Raspberry Pi
🞄 🞄 🞄