Partie 2
PORT PARALELLES
[Link]@[Link]
Entrées / Sorties
• Un microcontrôleur a essentiellement une fonction de
contrôle et doit donc proposer des mécanismes d’entrées/
sorties efficaces.
• Sur le LPC2378
– 144 pins dont 104 d’entrées/sorties
– E/S sont réparties en 5 ports de 32 bits
• Certains bits des ports ne sont pas connectés
– Environ 250 fonctions d’entrées/sorties possibles sur
l’ensemble des pattes d’E/S
Multiplexage des E/S
• Chaque patte du composant peut à tout moment réaliser 1
fonction d’E/S parmi 4 possibles (au maximum).
• Sélection de la fonction à l’aide d’un multiplexeur
commandé par un registre
– Exemple: Patte 0 du Port 0
Registres de Sélection PINSEL
• Registres PINSEL0 → PINSEL9
– Un registre commande 16 bits d’un port
• PINSEL0: Bits 0 à 15 du Port 0
• PINSEL1: Bits 16 à 31 du Port 0
• PINSEL2: Bits 0 à 15 du Port 1
• Etc…
– Registre PINSEL0
• Bits 1-0 commandent la patte 0 du Port 0
• Bits 3-2 commandent la patte 1 du Port 0
• Etc…
Registres de Sélection PINSEL
• Exemple Registre PINSEL0
– D’après la documentation du composant
– Pour chaque patte, la valeur 00 correspond toujours à la fonction
E/S standard
– Valeur de Reset
– Voir les annexes pour l’ensemble des fonctions
Mode d’E/S GPIO
• GPIO: General Purpose Input/Output
– Ce mode permet d’effectuer des lectures ou des
écritures sur les broches du LPC2378
– Échange d’informations avec les composants de la
carte
Entrées/Sorties GPIO et LPC2378
5 ports parallèles de "32" bits
– Attention: Tous les bits ne sont pas disponibles
• Modes de fonctionnement
– Les 5 ports P0 → P4 fonctionnent en mode "fast"
– P0 et P1 proposent également un mode "slow" compatible avec
les anciens composants de la famille LPC2xxx
• Commande des modes "fast" et "slow" par des registres
différents
– Seul le mode "fast" sera traité dans ce cours
Registres de Direction
• Chaque broche peut être configurée en entrée ou
en sortie
• Registre FIOxDIR associé au port Px
– FIO0DIR, FIO1DIR, FIO2DIR, FIO3DIR, FIO4DIR
– Registre de 32 bits
– Bit i du registre associé à la broche i du port
Registres de Direction
• Positionnement de la broche en entrée
– Mise à 0 du bit i
• Positionnement de la broche en sortie
– Mise à 1 du bit i
• Au reset, toutes les broches sont configurées en entrée
• Exemple: FIO1DIR = 5;
Registres de Mise à 1
• Registre FIOxSET associé au port Px
– FIO0SET, FIO1SET, FIO2SET, FIO3SET, FIO4SET
– Registre de 32 bits
– Bit i associé à la broche i du port
• Fonctionnement
– Bit i de FIOxSET = 1
• Mise à 1 en sortie de la broche i du port Px
– Bit i de FIOxSET = 0
• La broche i du port Px garde la même valeur
– Au reset, FIOxSET=0
• Registre actif uniquement si la broche est configurée en
sortie
Registres de Mise à 0
• Registre FIOxCLR associé au port Px
– FIO0CLR, FIO1CLR, FIO2CLR, FIO3CLR, FIO4CLR
– Registre de 32 bits
– Bit i associé à la broche i du port
• Fonctionnement
– Bit i de FIOxCLR = 1
• Mise à 0 en sortie de la broche i du port Px
– Bit i de FIOxCLR = 0
• La broche i du port Px garde la même valeur
– Au reset, FIOxCLR=0
• Registre actif uniquement si la broche est configurée en
sortie
Registres de Lecture/Ecriture
• Registre FIOxPIN associé au port Px
– FIO0PIN, FIO1PIN, FIO2PIN, FIO3PIN, FIO4PIN
– Registre de 32 bits. Le Bit i associé à la broche i du port
– Chaque bit contient l’état de la broche associée
• Fonctionnement
– Broche configurée en entrée
• Permet de lire la valeur binaire sur la broche
– Broche configurée en écriture
• Permet d’écrire un 0 ou un 1 sur la broche
• Différences avec FIOxCLR et FIOxSET ?
• Registre actif si la fonction GPIO a été sélectionnée pour la
broche.
Exemple de programme
#include "lpc23xx.h"
/* Déclaration des registres du LPC2378 */
void main (void)
{
PINSEL0 = 0x00000000;
/* broches 0 à 15 de P0 en GPIO */
PINSEL1 = 0x00000000;
/* broches 16 à 31 de P0 en GPIO */
FIO0DIR = 0xFFFFFFFF;
/* broches 0 à 31 de P0 en sortie */
FIO0SET = 0xFFFFFFFF;
/* broches 0 à 31 de P0 mises à 1 */
FIO0CLR = 0xFFFFFFFF;
/* broches 0 à 31 de P0 mises à 0 */
FIO0PIN = 0xFFFF0000;
/* broches 0 à 15 de P0 mises à 0
broches 16 à 31 de P0 mises à 1 */
}
Exercice
¨ Ecrire un programme en C permettant d'activer le port P2.5.