Protocole SPI
Signaux SPI, modes de transfert, trames et points d'implémentation VHDL.
Qu'est-ce que SPI ?
Le protocole SPI (Serial Peripheral Interface) est un protocole série synchrone développé par Motorola dans les années 1980. Il est très utilisé dans les systèmes embarqués pour la communication entre un microcontrôleur ou un FPGA et des périphériques comme des capteurs, des convertisseurs ADC/DAC, des mémoires Flash ou des écrans.
Ses caractéristiques principales :
- Synchrone : une horloge commune (SCK) pilote les échanges
- Full-duplex : émission et réception simultanées
- Maître/Esclave : le maître génère l'horloge et sélectionne l'esclave
- Pas d'adressage : la sélection se fait via un signal dédié SS_N
Signaux SPI
| Signal | Direction | Description |
|---|---|---|
| SCK | Maître → Esclave | Horloge série (Serial Clock) |
| MOSI | Maître → Esclave | Données maître vers esclave (Master Out Slave In) |
| MISO | Esclave → Maître | Données esclave vers maître (Master In Slave Out) |
| SS_N | Maître → Esclave | Sélection esclave, actif bas (Slave Select) |
Pour plusieurs esclaves, le maître dispose d'un signal SS_N par esclave. MOSI, MISO et SCK sont partagés (bus).
Modes SPI (CPOL / CPHA)
SPI définit 4 modes selon deux paramètres :
- CPOL (Clock Polarity) : état de repos de SCK - 0 = bas, 1 = haut
- CPHA (Clock Phase) : moment d'échantillonnage - 0 = premier front de SCK, 1 = second front de SCK
| Mode | CPOL | CPHA | Échantillonnage | Description |
|---|---|---|---|---|
| 0 | 0 | 0 | Front montant SCK | Repos SCK bas, échantillon sur montant |
| 1 | 0 | 1 | Front descendant SCK | Repos SCK bas, échantillon sur descendant |
| 2 | 1 | 0 | Front descendant SCK | Repos SCK haut, échantillon sur descendant |
| 3 | 1 | 1 | Front montant SCK | Repos SCK haut, échantillon sur montant |
Le mode 0 (CPOL=0, CPHA=0) est le plus courant. Les exercices de maître SPI débutants l'utilisent ; l'exercice d'esclave SPI utilise le mode 1.
Trame SPI
Une transaction SPI se déroule ainsi :
