Pin connect block

Le Pin Connect Block est une sorte d'aiguillage par lequel on pourra décider que la pin 14 du boitier par exemple sera connectée à l'entrée du port série UART0, ou bien qu'elle sera connectée à la sortie n°1 du port P0, ou encore que ce sera la sortie PWM3.

Ceci nous laisse une très grande souplesse au niveau du routage de la carte.

Cependant, il n'est pas possible de connecter n'importe quelle fonction sur n'importe quelle pin. Ces associations ont été définies par NXP et vont être décrites ci-dessous.

Le Pin Connect Block est contrôlé par les registres:

  • PINSEL0 (adresse 0xE002C000) pour Port 0.0 à Port0.15

  • PINSEL1 (adresse 0xE002C004) pour Port 0.16 à Port0.31

Le port P0 est donc un port d'entrées sorties 32 bits multifonctions.

Au Reset, du LPC2106, les fonctions associées à chaque pin sont celles décrites par les codes 00.

De plus, toutes les I/O sont configurées en entrée.

Port 0.0 à Port 0.15 (PINSEL0):

Le port d'entrées/sorties de 32 bits P0 est contrôlé par le registre PINSEL0 pour la configuration de ses seize premiers bits.

Ce registre PINSEL0 est localisé à l'adresse 0xE002C000.

Comme nous l'avons décrit plus haut, ce port aura donc plusieurs fonctions possibles pour chaque pin. Pour sélectionner une fonction, il faut simplement mettre le code correspondant sur les bits correspondants du registre PINSEL correspondant.

Remarque: La notation P0.2 est relative au bit b2 du port P0.

Codage de PINSELO:

Exemple:

Pour rediriger l'entrée RxD de l'UART0 sur la pin P0.1, il suffit de positionner les bits b3=0 et b2=1, autrement dit PINSEL0.3 à 0 et PINSEL0.2 à 1.

Soit

PINSEL0 |= 0x00000004; // Syntaxe C du or, autrement dit

Soit, pour nos amis binaires:

00000000000000000000000000000100 sur le port P0

Port 0.16 à Port 0.31 (PINSEL1):

Les seize derniers bits de P0 sont quant à eux contrôlés par le registre PINSEL1.

Son utilisation est identique à celle de PINSEL0.

Ce registre PINSEL1 est localisé à l'adresse 0xE002C004.

Codage de PINSEL1:

Maintenant que nous avons vu comment associer une fonction à une pin par les registres PINSEL0 et PINSEL1, nous allons regarder comment l'utiliser dans sa fonction Entrée/Sortie à usage général.

On parle alors de General Purpose Input/Output, les fameuses GPIO...

Ces pins peuvent être programmées indépendamment les unes des autres.