Projet

Général

Profil

Actions

Programmation sous Linux » Historique » Révision 19

« Précédent | Révision 19/37 (diff) | Suivant »
Patrice Nadeau, 2014-08-16 18:09


%{font-size:18pt}Programmation sous Linux%

En cours ...

h1. GPIO(General Purpose Input/Output)

Un petit calcul doit-être fait pour déterminer la correspondance entre le nom BBB et celui sous Linux.

Télécharger le "System Reference Manual":http://elinux.org/Beagleboard:BeagleBoneBlack#Hardware_Files

La section PRU-ICSS Pin Access est celle qui nous intéresse.

Le calcul est les suivant :
Multiplier le numéro du chip par 32 et ajouter le numéro de la pin.

Exemple : Pour utiliser la pin 12 du connecteur P8 (GPIO1_12), le signal correspondant sous Linux est le 44 (1 x 32 + 12 = 44).

L'utilisation d'une pin se fait en 4 étapes

Exporter la pin

Choisir la direction

Choisir la valeur

Enlever l'export de la pin

h2. Ligne de commande

Exporter la pin


echo 44 > /sys/class/gpio/export

Un dossier gpio44 existe maintenant.

Le fichier direction sélectionne le mode d'utilisation de la pin :

  • in : Entré
  • out : Sortie

echo out > /sys/class/gpio/gpio44/direction

Le fichier value sélectionne la valeur de la pin :

  • 0 : Low
  • 1 : High

echo 1 > /sys/class/gpio/gpio44/value

Une fois terminé, on doit enlever le « export » de la pin


echo 44 > /sys/class/gpio/unex

h2. C

La librairie stdio.h seras utilisée avec les fonctions :

  • fopen()
  • fwrite()
  • fclose()

Code

Aucune vérification d'erreur I/O n'est faite dans cette exemple !


#include 

int main(void)
{
    FILE *fp;

    /* Export */
    fp = fopen("/sys/class/gpio/export","w");
    fwrite("44", sizeof(char), 2, fp);
    fclose(fp);

    /* Direction */
    fp = fopen("/sys/class/gpio/gpio44/direction","w");
    fwrite("out", sizeof(char), 3, fp);
    fclose(fp);

    /* Value */
    fp = fopen("/sys/class/gpio/gpio44/value","w");
    fwrite("1", sizeof(char), 1, fp);
    fclose(fp);
}

Mis à jour par Patrice Nadeau il y a plus de 10 ans · 19 révisions