General Purpose Input/Output

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Carte GPIO du HP 82940A Series 80

Les ports GPIO (General Purpose Input/Output, littéralement Entrée/Sortie pour un Usage Général) sont des ports d'entrée/sortie très utilisés dans le monde des microcontrôleurs, en particulier dans le domaine de l'électronique embarquée, qui ont fait leur apparition aux débuts des années 1980[1].

Utilisation[modifier | modifier le code]

Un connecteur GPIO offre à une carte électronique la possibilité de communiquer avec d'autres circuits électronique.

Le connecteur GPIO est situé à côté de la sortie vidéo RCA sur ce Raspberry Pi Modèle A

Le GPIO est très présent en informatique, certaines cartes mère pour PC comme la carte Intel® NUC DE3815TYBE[2], ou certaines cartes d'essai à DSP [3], intègrent des connecteurs ou des instructions spécifiques pour le GPIO. Le Raspberry Pi dispose d'un connecteur GPIO[4] depuis sa première version, lui permettant ainsi d'être utilisé à la fois en tant qu'ordinateur personnel, et à la fois en tant que carte contrôleur pour des applications purement électronique, à l'image de Stellaris Launchpad[5] ou de Arduino[6]. D'autres cartes, comme la BeagleBoard, intègre elles aussi des ports GPIO.

Programmation[modifier | modifier le code]

Différentes bibliothèques facilitent la programmation des connecteurs GPIO. Le RaspberryPi par exemple, dispose de wiringPi[7] pour le langage C, RPi.GPIO[8] pour le langage Python ou Pi4J[9] pour le langage Java. Il est aussi envisageable pour certaines architectures d'utiliser directement les capacités du processeur. A titre d'exemple, il est tout à fait envisageable d'exploiter le GPIO du RaspberryPi en incluant simplement le fichier bcm2835.h[10], module spécifique du processeur Broadcom BCM 2835 installé sur chaque RaspberryPi[11], dans un code source en langage C[12] sans avoir à utiliser d'autres bibliothèques.

Linux reconnait nativement les ports GPIO, une documentation complète est même disponible sur le site officielle du kernel[13] et expose la façon de programmer des pilotes.

Microsoft Windows intègre lui aussi des API de développement spécifique pour la création de pilotes GPIO[14], la documentation MSDN donne des informations à ce sujet[15].

Capacités[modifier | modifier le code]

Un connecteur GPIO peut être configuré pour jouer le rôle d'une entrée (réception d'un signal) ou d'une sortie (émission d'un signal). Lorsqu'il est configuré en tant que sortie, on peut écrire dans un registre interne afin de modifier l'état d'une sortie. Lorsqu'il est configuré en tant qu'entrée, on peut détecter son état en lisant le contenu d'un registre interne.

Un connecteur GPIO ne peut traiter que des signaux numérique, 1 ou 0, une connexion sur un support analogique nécessitera un CAN/CNA comme le MCP3008[16].

Les périphériques GPIO peuvent également produire des interruptions[17] et des événements d'accès direct à la mémoire (EDMA).

Un connecteur GPIO est généralement alimenté en 3.3Vcc et ne peut émettre que des courants de faible capacités, allant de 3mA à 50mA[18].

Voir aussi[modifier | modifier le code]

Notes et références[modifier | modifier le code]