Le Bus SPI |
Propriétés physiques du bus SPI
Le support physique
Les caractéristiques de fonctionnement du bus SPI
Les données échangées sont des octets. La transmission s’effectue sur 2 fils monodirectionnels (nommés MOSI, MISO). Une horloge indépendante fixée par le maître synchronise les échanges (en général sur front). La fréquence de l’horloge de transmission est comprise entre 1 MHz et 20 MHz (selon les performances des circuits reliés au bus). Il n’y a pas d’adressage des esclaves (comme sur un bus I2C par exemple). L’esclave devient actif au moyen d’une ligne de sélection de boîtier dédiée (généralement active à l'état bas). La ligne est constituée de 3 fils auxquels il faut ajouter les fils de sélection d'esclave.
SCLK (serial clock) : Horloge du bus (produite 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 |
La fréquence d'horloge de transmission (maître) est paramétrable :
Par exemple pour un AT80C5112 en mode maître, les 3 bits du registre SPCON (Serial Peripheral CONtrol register) SPR2, SPR1 et SPR0 permettent de choisir parmi 7 fréquences, obtenues par division de la fréquence de l’horloge du microcontrôleur.
SPR2 |
SPR1 |
SPR0 |
Fréquence de l’horloge SPI |
0 |
0 |
0 |
Fμc/2 |
0 |
0 |
1 |
Fμc/4 |
0 |
1 |
0 |
Fμc/8 |
0 |
1 |
1 |
Fμc/16 |
1 |
0 |
0 |
Fμc/32 |
1 |
0 |
1 |
Fμc/64 |
1 |
1 |
0 |
Fμc/128 |
Synoptique d'une liaison SPI Maître-Esclave
On utilise le principe du registre à décalage. Dans le cas ci-dessus, en 8 périodes d'horloge, l'octet passe du registre du maître à celui de l'esclave et réciproquement le contenu du registre d'esclave est passé dans celui du maître (full-duplex : simultanéité des transferts). Puisqu’il ne peut pas y avoir de collisions lors du transfert, il n'y a pas besoin d'arbitrage.
Lien avec le modèle OSI
La couche 2 est réalisée par le contrôleur SPI intégré dans un microcontrôleur.
Polarisation de la ligne MISO
Lorsque le bus est inutilisé, ce qui revient à dire qu’aucun esclave n’est sélectionné, la ligne MISO est à l’état haute impédance, ce qui ne permet pas d’en définir l’état logique.
On évite cela par l’utilisation d’une résistance (Rp) de polarisation, de 5 kΩ à 50 kΩ, qui n’a aucune influence sur la vitesse de transmission (contrairement à ce qui se passe pour un bus I2C).
Format de transfert de données
Lorsque CPHA = 0, les données sont valides au premier front du signal d’horloge. La polarité CPOL détermine s’il s’agit d’un front montant ou descendant.
En effet, pour CPOL=0, au repos, l’horloge est au niveau BAS; le premier front est donc un front montant.
Pour CPOL=1, au repos, l’horloge est sur le niveau HAUT; le premier front est donc un front descendant.
La polarité de l’horloge n’ayant pas d’influence sur le moment où le premier bit de données est valide elle n’a pas d’effet sur le format du transfert de données (voir figure ci-dessous).
Lorsque CPHA = 1, les données sont réceptionnées avec le deuxième front du signal d’horloge.
Pour CPOL=0, au repos, l’horloge est au niveau BAS et monte au niveau HAUT après le premier front, le deuxième front est donc un front descendant.
Pour CPOL=1, au repos, l’horloge est au niveau HAUT et descend au niveau BAS après le premier front; le deuxième front est donc un front montant.
Synoptique d'une liaison SPI Maître-Multi-Esclaves
Le maître sélectionne un seul et unique esclave avec lequel il veut rentrer en communication par la mise à niveau logique zéro de SS (1 2 3), 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. La seule limite au nombres d'esclaves est en fait la possibilité de broches SS du maître. |
|
Cas de la "daisy chain" (esclave en guirlande, en cascade...) Le maître sélectionne tous les esclaves par la mise à niveau logique zéro de SS , puis après 3*8 fronts d'horloge, les 3 octets de données sont transférés (dans le cas d’un octet par esclave). Cette disposition permet de réduire le nombre de lignes SS, mais en contre partie il faudra un "buffer" plus grand dans le maître (ou une gestion du soft plus élaborée). |
Avantages et Inconvénients du bus SPI :
Avantages |
Inconvénients |
Communication en Full Duplex |
Pas d'adressage possible |
"Indépendant" du nombre de bits à transmettre |
Utilisation sur très courte distance (même carte) |
Pas de collision possible |
Nécessite plus de fils que I²C |
Les esclaves utilisent l'horloge du maître pas de problème de précision de quartz |
Pas d'acquittement (le maître ne sait pas s’il est écouté) |
Beaucoup plus rapide que I²C en mode standard |
|
Possibilité de configuration à plusieurs maîtres |
|
Niveaux électriques du Bus SPI
Les niveaux de tension des signaux échangés sont compatibles TTL/CMOS. Il pourra-t-être envisagé dans certains cas de placer des résistances de pull-up de 47kΩ (voir ci-dessous : utilisation d'un multiplexeur MAXIM MAX350).
Si on utilise des composants de tension d'alimentation différente par exemple un μprocesseur alimenté sous 5V et un capteur alimenté en 3,3V, il convient de procéder à une adaptation du niveau de tension des broches MOSI, SS, SCLK (la broche MISO n'est pas affectée car compatible avec le μp) par diviseur de tension à base de résistance ¼ de watt. |
Oscillogrammes des signaux électriques SPI
Chronogramme
Toutes les liaisons SPI respectent le chronogramme général ci-dessous, mais quatre variantes existent au niveau de la prise en compte des données qui sont échangées.
Chronogramme général d’un échange sur une liaison SPI
Ces variantes sont parfois appelées modes SPI et sont alors numérotées de 0 à 3. En présence d’un circuit à interface SPI, il vous suffira de comparer sa fiche technique avec le chronogramme pour savoir dans quel « mode » il fonctionne. Ces quatre modes sont définis par la polarité de l’horloge, appelée CPOL (Clock POLarity), qui peut-être égale à 0 ou à 1, et par la phase de cette même horloge, appelée CPHA (Clock PHAse), par rapport aux données, qui peut être aussi égale à 0 ou à 1. Cela conduit aux quatre possibilités, qui indiquent sur quel front du signal d’horloge les données sont échantillonnées et peuvent donc être considérées comme valides. Par défaut, le mode le plus courant est appelé mode 0, c’est-à-dire celui ou CPOL et CPHA sont tous les deux nuls.
Créé avec HelpNDoc Personal Edition: Créer des documents d'aide CHM facilement