jeudi 1 mai 2014

PROTOCOLE SPI



I-          PROTOCOLE SPI

1.    Introduction :

Les appareils grand public sont devenus sophistiqués et complexes, ce qui a rendu impossible d’échanger les informations sur des liaisons parallèles  qui sont encombrantes. Alors l’échange  de données entre les composants se fait maintenant avec des bus série. Le bus SPI (Synchronous Peripheral Interface), a été initialement développé par Motorola. Ensuite d’autres fabricants (Microchip, Atmel, Texas Instrument...) ont adopté ce type de liaison qui est devenu un standard.







Figure 10 Principe général d'un bus SPI
Le bus SPI  est utilisé pour la communication rapide de données entre périphériques comme  les mémoires, les systèmes d'affichage, carte SD, etc.

1.    Les caractéristiques de fonctionnement du bus SPI

L’échange de données se fait par  des  octets.  La  transmission  s’effectue  sur  2  fils  monodirectionnels (nommés MOSI, MISO).L’horloge est  indépendante, pilotée  par le maître permet de  synchroniser les échanges .La fréquence de l’horloge de transmission est comprise entre 1 Mhz et 20 Mhz .A l’opposé du bus I2C, il n’y a pas d’adressage des esclaves . L’esclave devient actif au moyen d’une ligne de sélection de boîtier dédiée (CS).Le bus est constitué de 3 fils auxquels il faut ajouter les fils de sélection d'esclave.
ü  SCLK (serial clock) :Horloge du bus (générée par le maître).
ü  MOSI (Master Out Slave In) : Données du maître vers l’esclave actif.
ü  MISO (Master In Slave Out) : Données de l’esclave actif vers le maître.
ü  SSn (Slave Select n) : Sélection  de  l'esclave  n  à  destination  de  la transmission.

2.    Synoptique d'une liaison SPI Maître-Esclave


Figure 11 Synoptique d'une liaison SPI Maître-Esclave
On utilise le principe du registre à décalage. Dans le cas ci-dessus, il faut 8 périodes d'horloge, pour que l'octet passe du registre du maître à celui de l'esclave et inversement le registre d'esclave est passé dans celui du maître (full-duplex : transfert simultané). On remarque qu’il ne peut pas y avoir de collisions lors du transfert, donc il n'y a pas besoin d'arbitrage.

3.    Polarisation de la ligne MISO

Lorsque le bus est inutilisé, (aucun esclave n’est sélectionné), la ligne MISO est à l’état haute impédance, donc sans état logique. Ce ci est évité  par l’utilisation d’une résistance de polarisation, de 5 à 50 kOhms, 

Figure 12 polarisation de la ligne MISO

4.    Format de transfert de données

Le protocole bus SPI  détermine le type de signal d’horloge (SCK) grâce à deux paramètres: le bit de poids fort CPOL (Clock Polarity) et le bit de poids faible CPHA (Clock Phase). Il en résulte quatre différents modes de transmission. Ces paramètres de réglage déterminent le front d’horloge sur lequel les données sont transmises (front montant /front descendant), et le moment de modification de ces données. Pour une transmission de données correcte il est important que ces paramètres soient réglés de manière identique pour tous les appareils reliés au bus.






Figure 13 Exemple d’une transmission de données SPI de 1 octet pour CPHA=0

5.    Synoptique d'une liaison SPI Maître-Multi-Esclaves


Figure 14 Synoptique d'une liaison SPI Maître-Multi-Esclaves
Le maître lectionne un seul esclave avec lequel il veut communiquer par la mise à niveau logique zéro de /SS (ou /CS) de l’esclave souhaité, puis, après 8 fronts d'horloge, l'octet de donnée est transféré. La patte MISO de l'esclave non sélectionné est à l'état haute impédance. Le nombre d'esclaves est  limité par les broches de sélection du maître.

6.    Bus SPI et niveaux électriques

Les signaux échangés sont de types TTL ou CMOS selon la technologie des différents éléments du circuit. Il faut  envisager dans certains cas de placer des résistances de Pull-up .
Si on utilise des composants de tension d'alimentation différente (un microcontrôleur  en 5v et un capteur en 3.3v), il faut  procéder à une adaptation du niveau de tension des broches MOSI, SS, SCLK (la MISO n'est pas affectée car compatible avec le microcontrôleur).

Aucun commentaire:

Enregistrer un commentaire