Outils pour utilisateurs

Outils du site


spi_documentation_1

Ceci est une ancienne révision du document !


Bases du protocole de communication SPI

Traduction de www.circuitbasics.com

Lorsque vous connectez un microcontrôleur à un capteur, un écran ou un autre module, pensez-vous parfois à la façon dont les deux appareils se parlent ? Que disent-ils exactement ? Comment arrivent-ils à se comprendre ?
La communication entre les appareils électroniques est comme la communication entre les humains. Les deux parties doivent parler le même langage. En électronique, ces langages sont appelés  protocoles de communication .

Heureusement pour nous, il n'y a que quelques protocoles de communication que nous devons connaître lors de la construction de la plupart des projets électroniques de bricolage. Les trois protocoles les plus courants : interface périphérique série (SPI), circuit inter-intégré (I2C) et communication pilotée par récepteur/émetteur asynchrone universel (UART) .

Dans cet article nous commencerons par quelques concepts de base sur la communication électronique, puis expliquerons en détail le fonctionnement de SPI.

SPI, I2C et UART sont un peu plus lents que des protocoles comme USB, Ethernet, Bluetooth et WiFi, mais ils sont beaucoup plus simples et utilisent moins de ressources matérielles et système. SPI, I2C et UART sont idéaux pour la communication entre les microcontrôleurs et entre les microcontrôleurs et les capteurs où de grandes quantités de données à haute vitesse n'ont pas besoin d'être transférées.

Communication série vs parallèle

Les appareils électroniques communiquent entre eux en envoyant  des bits  de données via des fils connectés physiquement entre les appareils. Un bit est comme une lettre dans un mot, sauf qu'au lieu des 26 lettres (dans l'alphabet anglais), un bit est binaire et ne peut être qu'un 1 ou un 0. Les bits sont transférés d'un appareil à un autre par des changements rapides de tension. Dans un système fonctionnant à 5 V, un bit 0 est communiqué sous la forme d'une courte impulsion de 0 V, et un bit 1 est communiqué par une courte impulsion de 5 V.
Les bits de données peuvent être transmis sous forme parallèle ou série. Dans une communication parallèle, les bits de données sont envoyés tous en même temps, chacun via un fil séparé. Le schéma suivant montre la transmission parallèle de la lettre « C » en binaire (01000011) : Dans la communication série, les bits sont envoyés un par un via un seul fil. Le schéma suivant montre la transmission série de la lettre « C » en binaire (01000011) :

Introduction à la communication SPI

SPI est un protocole de communication commun utilisé par de nombreux appareils différents. Par exemple,  les modules de carte SD, les modules de  lecteur de carte RFID et  les émetteurs/récepteurs sans fil 2,4 GHz  utilisent tous SPI pour communiquer avec les microcontrôleurs.
Un avantage unique de SPI est le fait que les données peuvent être transférées sans interruption. N'importe quel nombre de bits peut être envoyé ou reçu dans un flux continu. Avec I2C et UART, les données sont envoyées par paquets, limités à un nombre spécifique de bits. Les conditions de démarrage et d'arrêt définissent le début et la fin de chaque paquet, de sorte que les données sont interrompues pendant la transmission.
Les appareils communiquant via SPI sont dans une relation maître-esclave. Le maître est le dispositif de contrôle (généralement un microcontrôleur), tandis que l'esclave (généralement un capteur, un écran ou une puce mémoire) reçoit les instructions du maître. La configuration la plus simple de SPI est un système à maître unique et esclave unique, mais un maître peut contrôler plus d'un esclave (plus d'informations ci-dessous).

  • MOSI (Master Output/Slave Input)  - Ligne permettant au maître d'envoyer des données à l'esclave.
  • MISO (Master Input/Slave Output)  – Ligne permettant à l'esclave d'envoyer des données au maître.
  • SCLK (Clock)  – Ligne pour le signal d'horloge.
  • SS/CS (Slave Select/Chip Select)  – Ligne permettant au maître de sélectionner à quel esclave envoyer les données.

En pratique, le nombre d'esclaves est limité par la capacité de charge du système, ce qui réduit la capacité du maître à basculer avec précision entre les niveaux de tension.

Comment fonctionne SPI

L'horloge

Le signal d'horloge synchronise la sortie des bits de données du maître à l'échantillonnage des bits par l'esclave. Un bit de données est transféré à chaque cycle d'horloge, de sorte que la vitesse de transfert des données est déterminée par la fréquence du signal d'horloge. La communication SPI est toujours initiée par le maître puisque le maître configure et génère le signal d'horloge. Tout protocole de communication où les appareils partagent un signal d'horloge est appelé  synchrone.  SPI est un protocole de communication synchrone. Il existe également  des méthodes asynchrones  qui n'utilisent pas de signal d'horloge. Par exemple, dans la communication UART, les deux côtés sont réglés sur un débit en bauds préconfiguré qui dicte la vitesse et la synchronisation de la transmission des données.
Le signal d'horloge dans SPI peut être modifié en utilisant les propriétés de polarité d'horloge et de phase d'horloge . Ces deux propriétés fonctionnent ensemble pour définir quand les bits sont émis et quand ils sont échantillonnés. La polarité de l'horloge peut être définie par le maître pour permettre la sortie et l'échantillonnage des bits sur le front montant ou descendant du cycle d'horloge. La phase d'horloge peut être réglée pour que la sortie et l'échantillonnage se produisent sur le premier ou le deuxième front du cycle d'horloge, qu'il soit montant ou descendant.

Sélection esclave

Le maître peut choisir à quel esclave il veut parler en réglant la ligne CS/SS de l'esclave sur un niveau de tension bas. Dans l'état inactif et non émetteur, la ligne de sélection esclave est maintenue à un niveau de tension élevé. Plusieurs broches CS/SS peuvent être disponibles sur le maître, ce qui permet de câbler plusieurs esclaves en parallèle. Si une seule broche CS/SS est présente, plusieurs esclaves peuvent être câblés au maître par connexion en guirlande.

Plusieurs esclaves

SPI peut être configuré pour fonctionner avec un seul maître et un seul esclave, et il peut être configuré avec plusieurs esclaves contrôlés par un seul maître. Il existe deux manières de connecter plusieurs esclaves au maître. Si le maître a plusieurs broches de sélection d'esclaves, les esclaves peuvent être câblés en parallèle comme ceci : Si une seule broche de sélection d'esclave est disponible, les esclaves peuvent être connectés en guirlande comme ceci :

MOSI et MISO

Le maître envoie des données à l'esclave petit à petit, en série via la ligne MOSI. L'esclave reçoit les données envoyées par le maître sur la broche MOSI. Les données envoyées du maître à l'esclave sont généralement envoyées avec le bit le plus significatif en premier.
L'esclave peut également renvoyer des données au maître via la ligne MISO en série. Les données renvoyées de l'esclave au maître sont généralement envoyées avec le bit le moins significatif en premier.

Étapes de la transmission de données SPI

1. Le maître émet le signal d'horloge : 2. Le maître commute la broche SS/CS à un état basse tension, ce qui active l'esclave : 3. Le maître envoie les données un bit à la fois à l'esclave le long de la ligne MOSI. L'esclave lit les bits au fur et à mesure de leur réception : 4. Si une réponse est nécessaire, l'esclave renvoie les données un bit à la fois au maître le long de la ligne MISO. Le maître lit les bits au fur et à mesure qu'ils sont reçus :

Avantages et inconvénients du SPI

L'utilisation de SPI présente certains avantages et inconvénients, et si vous avez le choix entre différents protocoles de communication, vous devez savoir quand utiliser SPI en fonction des exigences de votre projet :

Avantages

  • Pas de bits de démarrage et d'arrêt, de sorte que les données peuvent être diffusées en continu sans interruption
  • Pas de système d'adressage esclave compliqué comme I2C
  • Séparez les lignes MISO et MOSI, afin que les données puissent être envoyées et reçues en même temps

Désavantages

  • Utilise quatre fils (I2C et UART en utilisent deux)
  • Aucun accusé de réception que les données ont été reçues avec succès (I2C a ceci)
  • Aucune forme de vérification d'erreur comme le bit de parité dans UART
  • N'autorise qu'un seul maître
spi_documentation_1.1653906223.txt.gz · Dernière modification : 2022/05/30 10:23 de serge