Title: Diapositive 1
1SPI - Serial Peripheral Interface
- Bus de communication série synchrone
- Dédié pour établir une communication
inter-composants, voir inter-cartes, au sein d'un
même système - Standard établi par Motorola et repris par
différentes marques - Full Duplex
- Maître-esclaves Un seul maître possible sur
le bus - Plusieurs esclaves peuvent coexister sur un bus
- La sélection du destinataire se fait par une
ligne dédiée chip select. - SPI est disponible sur bon nombre de
microprocesseurs et de microcontrôleurs 68XX,
683XX, MCORE, MPC8260, DSP 56XXX de Motorola,
mais aussi chez Atmel, Microchip, Texas
Instruments etc ... - SPI est dédié aux applications nécessitant des
transferts de flots de données telles que
communication entre des microprocesseurs ou des
DSP, convertisseurs A/N ou N/A, CODEC ( coder -
decoder ) etc...
2Les signaux
- Le bus SPI contient 4 signaux logiques
- SCLK Horloge (généré par le maître)
- MOSI Master Output, Slave Input (généré par
le maître) - MISO Master Input, Slave Output (généré par
l'esclave) - SS Slave Select, Actif à l'état bas (généré
par le maître) - Il existe d'autres noms qui sont souvent utilisés
- SCK Horloge (généré par le maître)
- SDI,DI,SI Serial Data IN
- SDO,DO,SO Serial Data OUT
- nCS, CS, nSS, STE SS
- Dans le cas de la convention de nommage
SDI/SDO, le SDO du maître doit-être relié au SDI
de l'esclave et vice-versa. Pour éviter les
confusions au moment du câblage, il est donc
souvent recommandé d'utiliser les dénominations
MISO-MOSI qui évitent une certaine ambiguïté.
3Principes
Le bus SPI est une liaison série synchrone qui
opère en mode "full duplex" - émission /
réception simultanée La méthode d'accès et du
type maître / esclave et c'est toujours le maître
qui a l'initiative des échanges quand le maître
sélectionne l'esclave et génère l'horloge, les
données sont échangées dans les deux directions,
simultanément. Le maître ne tient pas compte de
la donnée reçue dans le cas d'un échange
"écriture seule" ou alors il envoi un octet sans
importance ( 0xFF ) dans le cas d'un échange
"lecture seule" La communication avec un
esclave de type CODEC par exemple
(coder-decoder), permet d'exploiter pleinement
les capacités du bus SPI, avec un flot de données
bidirectionnel.
Le maître génère l'horloge et sélectionne
l'esclave avec qui il veut communiquer. L'esclave
répond aux requêtes du maître. A chaque coup
d'horloge le maître et l'esclave s'échangent un
bit. Après huit coups d'horloges le maître 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.
4Les signaux
- Il est possible de choisir le type dhorloge
grâce à une combinaison de 2 bits dans le
registre - SPCON le bit noté CPOL (Clock POLarity) et le
bit noté CPHA (Clock PHAse). - CPOL détermine le niveau logique de la ligne SCK
au repos. - CPHA détermine le front sur lequel la donnée est
modifiée et le front sur lequel la donnée va être
lue.
Mode CPOL CPHA
O 0 0
1 0 1
2 1 0
3 1 1
Les modes 0 et 3 sont identiques en transmission,
seule change l'état de la ligne d'horloge au
repos . C'est pour cette raison que de nombreux
périphériques peuvent être capables de dialoguer
soit en mode 0 et 3, soit en mode 1 et 2.
Chronogramme des différentes configurations
d'horloge
5La vitesse
En mode maître, la vitesse de transmission est
sélectionnée par 3 bits du registre SPCON (Serial
Peripheral CONtrol register) SPR2, SPR1 et
SPR0. La fréquence dhorloge est choisie parmi 7
fréquences obtenues par division de la fréquence
de fonctionnement du microcontrôleur.
SPR2 SPR1 SPR2 Fréquence de la SPI
000 Fµc/2
001 Fµc/4
010 Fµc/8
011 Fµc/16
100 Fµc/32
101 Fµc/64
110 Fµc/128
Le chaînage SPI
Certains composants SPI sont conçus pour être
chaînés, simplifiant ainsi les connexions entre
composants, en réduisant le nombre de lignes SS
nécessaires.
Pour le SPI il est possible de trouver certains
composants au delà de 20 Mbits
6Avantages et Inconvénients
Avantages Communication Full
duplex Débit assez important par rapport
à I²C Flexibilité du nombre de bits à
transmettre 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 de précision Partage d'un bus
commun pour l'horloge, MISO et MOSI entre les
périphériques
Inconvénients Monopolise plus de
pattes 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. Il ne peut y avoir qu'un
seul maître sur le bus. Ne s'utilise que sur de
courtes distances contrairement aux
protocoles RS-232, RS-485 ou bus CAN
QSPI (queued serial peripheral interface) est un
type de contrôleur SPI, pas un autre type de
bus. Il utilise une file d'attente de données
avec des pointeurs programmables qui permettent à
certains transferts de données sans intervention
du processeur
7Comparaison I2C - SPI
I2C Vitesse de
transmission SPI
Même s'il existe des variations de l'I2C qui
montent au dessus de 1MHz, la grande majorité des
implémentations que l'on trouve utilisent
généralement 100 ou 400 kHz
Pour le SPI il est possible de trouver certains
composants au delà de 20 Mbits
I2C
Topologie SPI
C'est un véritable protocole qui permet
l'interconnexion de multiples boitiers dans
différentes configurations Maitre / Esclave,
Maitre / Multiple esclaves, Multiple Maitres /
Multiples esclaves
En général point à point, bien que l'on puisse
connecter plusieurs esclaves mais il faut alors
des lignes supplémentaires. Un seul maitre qui
génère l'horloge.
I2C
Consommation SPI
du à la configuration collecteur/ drain ouvert
sur les 2 lignes de transmission (SDA SCL),
consommation relativement élevée
signaux de type TTL/CMOS donc consommation faible
Avantages/Inconvénients
- Si on doit interconnecter plusieurs boitiers
et que la vitesse n'est pas un problème, préférer
l'I2C car c'est un protocole (ce qui n'est pas le
cas du SPI) - Si on veut de la vitesse le SPI est loin
devant - Implémentation logicielle sur des E/S Il est
BEAUCOUP plus facile (et cela prend moins de
ressources) de faire du SPI par logiciel sur des
broches d'E/S que de l'I2C dû à la machine
d'état. - Mise en œuvre l'I2C est plus compliqué à
mettre en œuvre (il suffit de voir le nombre de
questions sur l'I2C dans les forums...). - L'interconnexion de plusieurs boitiers est
également plus délicate avec l'I2C car il faut
prendre en compte les impédances de chacun des
boitiers pour calculer les résistances de rappels.
8Les composants
- Consulter les sites internet des fabricants de
composants ou ceux des fournisseurs Farnell ou
Radiospares permet davoir une large idée des
implémentations des bus SPI et I2C de nombreux
microcontrôleurs intègrent ces deux bus en
standard - Quelques exemples
- ATMEL AVR32 - 32-Bit Microcontrôleur
(AT32UC3A0512.) - Two Master/Slave Serial Peripheral Interfaces
(SPI) with Chip Select Signals - One Master/Slave Two-Wire Interface (TWI),
400kbit/s I2C-compatible - Microchip (PIC16F886)
- Master Synchronous Serial Port (MSSP) Module
supporting 3-wire SPI (all 4 modes) - and I2C Master and Slave Modes with I2C
Address Mask - Cirrus Logic CS44600 - 6-Channel Digital
Amplifier Controller - SPI and I²C Host Control Interfaces
- RAMTRON FM24C16A - 16Kb FRAM Serial Memory
- Freescale 56F8000 - 16-bit Digital Signal
Controllers - One Queued Serial Peripheral Interfaces (QSPI)
http//fr.farnell.com/ http//www.radiospares
.fr
etc.