Projet

Général

Profil

Programmation sous Linux » Historique » Version 21

Patrice Nadeau, 2014-08-16 18:18

1 4 Patrice Nadeau
%{font-size:18pt}Programmation sous Linux%
2 1 Patrice Nadeau
3
> En cours ...
4 3 Patrice Nadeau
5
h1. GPIO(General Purpose Input/Output)
6 5 Patrice Nadeau
7
Un petit calcul doit-être fait pour déterminer la correspondance entre le nom BBB et celui sous Linux.
8
9
10
Télécharger le "System Reference Manual":http://elinux.org/Beagleboard:BeagleBoneBlack#Hardware_Files
11
12
La section *PRU-ICSS Pin Access* est celle qui nous intéresse.
13
14 20 Patrice Nadeau
Le calcul est le suivant :
15 5 Patrice Nadeau
Multiplier le numéro du chip par 32 et ajouter le numéro de la pin.
16 6 Patrice Nadeau
>Exemple : Pour utiliser la pin 12 du connecteur P8 (GPIO1_12), le signal correspondant sous Linux est le *44* (1 x 32 + 12 = 44).
17 7 Patrice Nadeau
18 12 Patrice Nadeau
L'utilisation d'une pin se fait en 4 étapes
19 11 Patrice Nadeau
# Exporter la pin
20
# Choisir la direction
21
# Choisir la valeur
22
# Enlever l'export de la pin
23
24 7 Patrice Nadeau
h2. Ligne de commande
25
26 12 Patrice Nadeau
Exporter la pin 
27 7 Patrice Nadeau
<pre><code class="bash">
28 9 Patrice Nadeau
echo 44 > /sys/class/gpio/export
29 7 Patrice Nadeau
</code></pre>
30
31
Un dossier _gpio44_ existe maintenant.
32
33
Le fichier *direction* sélectionne le mode d'utilisation de la pin :
34
* *in* : Entré
35
* *out* : Sortie
36 1 Patrice Nadeau
37 8 Patrice Nadeau
<pre><code class="bash">
38 17 Patrice Nadeau
echo out > /sys/class/gpio/gpio44/direction
39 8 Patrice Nadeau
</code></pre>
40
41
42
Le fichier *value* sélectionne la valeur de la pin :
43
* *0* : Low
44 1 Patrice Nadeau
* *1* : High
45
46
<pre><code class="bash">
47 9 Patrice Nadeau
echo 1 > /sys/class/gpio/gpio44/value
48
</code></pre>
49
50 13 Patrice Nadeau
Une fois terminé, on doit enlever le « export » de la pin
51 9 Patrice Nadeau
<pre><code class="bash">
52 21 Patrice Nadeau
echo 44 > /sys/class/gpio/unexport
53 8 Patrice Nadeau
</code></pre>
54 10 Patrice Nadeau
55
h2. C
56 14 Patrice Nadeau
57 15 Patrice Nadeau
La librairie _stdio.h_ seras utilisée avec les fonctions :
58
* fopen()
59
* fwrite()
60
* fclose()
61 16 Patrice Nadeau
62 18 Patrice Nadeau
Code
63
> Aucune vérification d'erreur I/O n'est faite dans cette exemple !
64 16 Patrice Nadeau
<pre><code class="c">
65
#include <stdio.h>
66
67 1 Patrice Nadeau
int main(void)
68 18 Patrice Nadeau
{
69 19 Patrice Nadeau
    FILE *fp;
70 1 Patrice Nadeau
71 19 Patrice Nadeau
    /* Export */
72
    fp = fopen("/sys/class/gpio/export","w");
73
    fwrite("44", sizeof(char), 2, fp);
74
    fclose(fp);
75 18 Patrice Nadeau
76 19 Patrice Nadeau
    /* Direction */
77
    fp = fopen("/sys/class/gpio/gpio44/direction","w");
78
    fwrite("out", sizeof(char), 3, fp);
79
    fclose(fp);
80 18 Patrice Nadeau
81 19 Patrice Nadeau
    /* Value */
82
    fp = fopen("/sys/class/gpio/gpio44/value","w");
83
    fwrite("1", sizeof(char), 1, fp);
84
    fclose(fp);
85 18 Patrice Nadeau
}
86 16 Patrice Nadeau
</code></pre>