Une broche GPIO est une broche «entrée / sortie à usage général». Ceci est par défaut uniquement élevé ou faible (les niveaux de tension, élevé étant la tension d'alimentation du micro-contrôleur, faible étant généralement la masse, ou 0 V). Mais les niveaux «élevé» et «bas» sont généralement donnés sous forme de tensions en proportion de la tension d'alimentation. Donc, tout ce qui dépasse généralement 66% de la tension d'alimentation est considéré comme un niveau logique `` élevé '', ce qui signifie que certains appareils à tension inférieure peuvent parler avec des appareils à haute tension tant que les niveaux se situent dans ce qui est considéré comme `` élevé ''. Un microcontrôleur à faible puissance de 1,8 à 2,7 V ou un récepteur GPS, par exemple, aura du mal à communiquer directement avec un microcontrôleur 5 V, car ce que l'appareil à basse tension considère comme «élevé», l'appareil à haute tension ne pensera pas du tout qu'il est élevé. C'est pour utiliser GPIO comme broche d'entrée,
Parfois, vous pouvez utiliser une broche SINGLE pour les valeurs `` analogiques '', en configurant la broche GPIO pour qu'elle soit utilisée par d'autres appareils embarqués comme un convertisseur `` analogique vers numérique '' (ADC). La broche est définie sur un canal sur l'ADC et cela agit maintenant comme une entrée pour l'ADC, pas une broche GPIO normale. Vous pouvez ensuite définir l'ADC pour prendre un échantillon et lire la valeur du registre de résultats de l'ADC pour des nombres comme 0-1024 s'il s'agit d'une résolution de 10 bits.
Comme quelqu'un l'a mentionné, une broche GPIO pourrait être utilisée dans le logiciel pour donner l'effet d'un signal de modulation de largeur pulsée (PWM), généralement à faible vitesse pour le basculement GPIO. La plupart des microcontrôleurs ont des générateurs PWM dédiés qui peuvent être configurés pour utiliser une broche GPIO comme broche de sortie, et ceux-ci sont très rapides et beaucoup plus stables que l'utilisation d'un logiciel pour contrôler GPIO pour générer un signal PWM. Le PWM est utilisé pour les signaux de style «moyen» ou «%» et vous permet de faire des choses comme des lumières tamisées et de contrôler la vitesse d'un moteur.
Les broches GPIO sont généralement organisées en groupes, appelés ports. Dans les petits contrôleurs, il peut s'agir d'une architecture 8 bits, de sorte que les ports sont souvent regroupés en lots de 8, et leurs valeurs peuvent être lues toutes en même temps en lisant un «registre de données» qui représente les valeurs logiques hautes / basses de celles-ci. broches. De même, vous pouvez définir des broches comme sorties, puis écrire 8 bits dans un registre de données, et le contrôleur GPIO des microcontrôleurs lira les valeurs modifiées du registre, et poussera la broche vers le haut ou tirera la broche vers le bas en fonction de la valeur que vous venez de définir.
Dans les contrôleurs plus récents tels que l'ARM Cortex A8 et A9 comme dans le Raspberry Pi et BeagleBone, leurs contrôleurs GPIO et différentes options sont très compliqués. Ils utilisent une architecture 32 bits, de sorte que la plupart des broches GPIO sont organisées en blocs de 32 broches, même si toutes ne sont pas réellement utilisables (certaines peuvent être dédiées ou non activées). Le BeagleBone (sur lequel j'ai travaillé auparavant) a des options vraiment impressionnantes pour sa grande quantité de broches, et parfois vous devrez utiliser un outil de «multiplexage de broches», qui vous permet de configurer les modes spéciaux de certaines broches pour des choses comme PWM, capture d'impulsions, sorties temporisées, entrées de canal analogique (ADC) et même (sur le BeagleBone de toute façon) mappage aux sous-processeurs industriels disponibles sur le cœur ARM, mais sont considérés comme des processeurs indépendants et ont besoin de leur propre mappage de broches pour être connecté au monde extérieur.