Patrick Monassier – 2009 mod 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 mod
Le bus SPI contient 4 signaux logiques : 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
Patrick Monassier – 2009 mod 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" ; . 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 mod
Patrick Monassier – 2009 mod 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 1 2 3 Il faut sélectionner un mode compatible entre le maître et l’esclave. Il est parfois nécessaire de changer de mode lors de la communication entre un maître et différents esclaves non compatibles entre eux au niveau du mode. Chronogramme des différentes configurations d'horloge Patrick Monassier – 2009 mod
La vitesse : Le chaînage SPI : 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
Patrick Monassier – 2009 mod Avantages et Inconvénients : Inconvénients : Monopolise plus de pattes d'un boîtier que l'I2C ou une UART qui en utilisent seulement deux (+ la référence 0V). 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 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 Patrick Monassier – 2009 mod
Patrick Monassier – 2009 mod Comparaison 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/sec 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. 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. Patrick Monassier – 2009 mod
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 …etc. Patrick Monassier - 2009