Une présentation du Bus SPI

publicité
SPI - 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...
Patrick Monassier - 2009
1
Les 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é.
Patrick Monassier - 2009
2
Principes :
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.
Patrick Monassier - 2009
3
Les signaux :
Il est possible de choisir le type d’horloge 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
Patrick Monassier - 2009
4
La 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 d’horloge 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
Patrick Monassier - 2009
5
Avantages et Inconvénients :
Inconvénients :
Avantages :
Monopolise plus de pattes d'un boîtier que
l'I2C ou une UART qui en utilisent seulement
deux.
Communication Full duplex
Débit assez important par rapport à I²C
Aucun adressage possible, il faut une ligne de
sélection par esclave en mode non chaîné.
Flexibilité du nombre de bits à transmettre
Simplicité de l'interface matérielle
Le protocole n'a pas d'acquittement. Le maître
peut parler dans le vide sans le savoir.
Aucun arbitre nécessaire car aucune collision
possible
Il ne peut y avoir qu'un seul maître sur le bus.
Les esclaves utilisent l'horloge du maître et n'ont
donc pas besoin d'oscillateur de précision
Ne s'utilise que sur de courtes distances
contrairement aux protocoles RS-232, RS485 ou bus CAN
Partage d'un bus commun pour l'horloge, MISO et
MOSI entre les périphériques
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
Patrick Monassier - 2009
6
Comparaison I2C - SPI
I2C
Vitesse de transmission
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
I2C
I2C
Pour le SPI il est possible de trouver certains composants
au delà de 20 Mbits
Topologie
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
SPI
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.
Consommation
du à la configuration collecteur/ drain ouvert sur les 2
lignes de transmission (SDA + SCL), consommation
relativement élevée
SPI
SPI
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.
Patrick Monassier - 2009
7
Les composants :
Consulter les sites internet des fabricants de composants ou ceux des fournisseurs Farnell ou
Radiospares permet d’avoir 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 AVR®32 - 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)
• One Inter-Integrated Circuit (I2C) port
…etc.
http://fr.farnell.com/
http://www.radiospares.fr
Patrick Monassier - 2009
…etc.
8
Téléchargement