SPI

De Wiki I2C
Aller à : navigation, rechercher
Liaison SPI: un maître et un esclave

Une liaison SPI (pour Serial Peripheral Interface) est un bus de données série synchrone qui opère en mode Full-duplex. Les circuits communiquent selon un schéma maitre-esclaves, où le maitre s'occupe totalement de la communication. Plusieurs esclaves peuvent coexister sur un même bus, dans ce cas, la sélection du destinataire se fait par une ligne dédiée entre le maître et l'esclave appelée chip select(CS).


Interface

Le bus SPI utilise quatre signaux logiques :

SCLK, SCK — Serial Clock, Horloge (généré par le maître) MOSI, SDI — Master Output, Slave Input (généré par le maître) MISO, SDO — Master Input, Slave Output (généré par l'esclave) CS, SS — Chip Select, Actif à l'état bas (généré par le maître)

Fonctionnement

Une transmission correspond à un échange entré le maitre et l'esclave.

  • Le maitre génère l'horloge et sélectionne l'esclave avec qui il veut communiquer par l'utilisation du signal CS
  • L'esclave répond aux requêtes du maitre

À chaque coup d'horloge le maitre et l'esclave s'échangent un bit. Après huit coups d'horloges le maitre a transmis un octet à l'esclave et vice versa. La vitesse de l'horloge est réglée selon des caractéristiques propres aux périphériques.

Mode

Lorsqu'on lit des documentations sur des technologies utilisant le SPI, on voit souvent des indications de mode, définies en général par un couple de valeurs représentant : CPOL (Clock Polarity) et CPHA (Clock Phase).

Mode CPOL CPHA
0 (0,0) 0 0
1 (0,1) 0 1
2 (1,0) 1 0
3 (1,1) 1 1

Avantages et Inconvénients

Avantages

  • Communication Full duplex
  • Débit assez important par rapport à I2C
  • Flexibilité du nombre de bits à transmettre ainsi que du protocole en lui-même
  • Simplicité de l'interface matérielle
    • Aucun arbitre nécessaire car aucune collision possible
    • Les esclaves utilisent l'horloge du maître et n'ont donc pas besoin d'oscillateur propre
  • Partage d'un bus commun pour l'horloge, MISO et MOSI entre les périphériques

Inconvénients

  • Monopolise plus de broches d'un boîtier que l'I2C ou une UART qui en utilisent seulement deux.
  • Aucun adressage possible, il faut une ligne de sélection par esclave en mode non chaîné.
  • Le protocole n'a pas d'acquittement. Le maître peut parler dans le vide sans le savoir.
  • La plupart des implémentations ne tolèrent la présence que d'un seul maître SPI sur le bus. Néanmoins, on trouve des circuits intégrés supportant le mode "multi-master", permettant de partager le bus SPI entre plusieurs maîtres. Les implémentations pratiques de ce genre restent rares.
  • Ne s'utilise que sur de courtes distances contrairement aux liaisons RS-232, RS-485 ou bus CAN. Néanmoins, il est possible d'utiliser des tampons de bus, comme des adaptateurs RS-232 (exemple : MAX208), RS485 ou LVDS pour relier un maître et un esclave avec un câble de quelques mètres. La mise en œuvre de ces circuits reste délicate car il devient nécessaire de procéder à des adaptations d'impédance pour éviter les oscillations parasites.

Implémentations

Arduino

Nucléo

Sources