connexion spi. Interface série SPI. Schémas de connexion SPI

Si vous savez déjà ce qu'est une interface SPI et à quoi elle sert, il est peu probable que vous appreniez quelque chose de nouveau dans cet article. J'y essaierai d'expliquer les concepts de base liés à cette interface, et dans le prochain je vous expliquerai comment utiliser le module SPI intégré aux microcontrôleurs STM32. Comme toute autre interface, SPI est utilisée pour transférer des données d'un appareil à un autre. Les appareils sur le bus SPI ne sont pas égaux ; en règle générale, il y a un appareil principal (Maître) et plusieurs appareils esclaves (Esclave). Généralement, un microcontrôleur fait office de maître et les dispositifs esclaves sont divers périphériques tels que des capteurs de température, des accéléromètres, des horloges en temps réel, etc. Le maître est appelé maître pour une raison ; à son insu, pas un seul esclave n'effectuera d'échange de données. Le bus SPI lui-même est physiquement constitué de 4 fils :

  • MOSI– Les données passent par ce fil du maître au périphérique esclave
  • MISO— Les données passent par ce fil de l'esclave au périphérique maître
  • SCK— Grâce à ce fil, le maître transmet un signal d'horloge aux appareils esclaves
  • C.S.– Chip select (ou SS – Slave select) – Grâce à ce fil, le maître indique clairement à l'esclave qu'il lui envoie désormais des données.

De la description des quatre lignes, nous pouvons tirer les conclusions suivantes :

  • SPI est une interface série. Les bits de données sont transmis les uns après les autres
  • SPI est une interface synchrone. Cela signifie que le transfert de données (dans les deux sens) se produit uniquement pendant que le maître génère des impulsions d'horloge et les transmet via le fil SCK aux autres appareils sur le bus.
  • Plusieurs appareils peuvent être connectés à un même bus, dont le nombre est théoriquement illimité.
  • SPI offre la possibilité de communiquer en mode full duplex. Pendant que le maître génère des impulsions d'horloge, il peut envoyer des données au périphérique esclave et en recevoir simultanément.

Voyons maintenant comment les appareils sont connectés au bus. Les flèches indiquent qui transmet le signal et où :

Comme le montre la figure, toutes les lignes d'interface, à l'exception de CS, sont simplement combinées les unes avec les autres. Pour chaque appareil esclave, le maître dispose d'une sortie CS distincte. Afin d'échanger des données avec le deuxième périphérique esclave, le maître définira la broche CS2 sur un niveau logique bas et les deux autres (CS1 et CS3) sur un niveau logique élevé. Ainsi, Slave_1 et Slave_3 ne montreront aucun signe de vie et n'interféreront donc pas avec la communication entre le maître et Slave_2. Permettez-moi de souligner encore une fois que l'état actif de la jambe CS est un zéro logique. Ce schéma présente un inconvénient : pour 10 appareils esclaves, le maître doit disposer de 10 branches distinctes pour se connecter au CS. Il existe une autre option de connexion appelée guirlande. Avec cette connexion, tous les appareils sont connectés en chaîne et ont un CS commun. Cette méthode d'inclusion ne sera pas abordée en détail, car elle est assez rarement utilisée. Comme mentionné ci-dessus, divers appareils esclaves peuvent être connectés au même bus, certains d'entre eux sont assez rapides et peuvent échanger des données avec le maître à grande vitesse, tandis que d'autres, au contraire, sont très lents. Cela signifie que le maître ne doit pas générer d'impulsions d'horloge trop rapidement, sinon les appareils esclaves lents ne les comprendront pas en raison d'une corruption des données. Cependant, la vitesse ne constitue pas tous les paramètres de l'interface SPI ; il existe également 4 modes SPI. J'ai remarqué que dans les fiches techniques de tout appareil doté d'une interface SPI, ils écrivent généralement « cet appareil utilise le mode 2 ». Je ne peux pas dire à quel point c’est standardisé, mais je l’ai vu plusieurs fois. Pour décrire brièvement l'essence de ces modes, chacun d'eux détermine à quel moment (en fonction de l'état de la ligne SCK) les données doivent être lues/transmises. Le tableau suivant montre quels sont ces modes et en quoi ils diffèrent les uns des autres. Dans les 4 modes, le maître envoie le même octet (0x93). La ligne jaune est SCK et la ligne bleue est MOSI.

ModeCPOLACSPOscillogrammeDescription du mode
0 0 0 Echantillonnage sur front montant montant
1 0 1 Echantillonnage sur front descendant descendant
2 1 0 Echantillonnage sur front descendant montant
3 1 1 Echantillonnage sur front montant descendant

Comme le montre le tableau, le numéro de mode se compose de deux bits - CPOL Et ACSP. Peu CPOL détermine dans quel état se trouvera la jambe SCL pendant que rien n'est transmis. Si CPOL=0 alors en mode veille, la jambe est à un niveau logique bas. Cela signifie que le front montant sera considéré comme une transition de 0 à 1 (et le front descendant, respectivement, vice versa, de 1 à 0). Si CPOL=1 alors en mode veille le niveau logique est haut. Cela signifie que le front montant sera considéré comme une transition de 1 à 0 (et le front descendant, respectivement, vice versa, de 0 à 1). Peu ACSP détermine sur quel front doit être échantillonné : 0 – sur le front montant, 1 – sur le front descendant. En fait, c’est tout ce que montre le tableau ci-dessus. À propos, il convient de noter que ces deux bits sont appelés exactement de la même manière dans le registre de configuration SPI des microcontrôleurs STM32 et AVR. Le prochain paramètre important est l’ordre des bits. Habituellement, le bit de poids fort est transmis en premier, mais parfois c'est l'inverse qui se produit, si cela n'est pas pris en compte, l'esclave et le maître ne trouveront pas de langage commun ; Le nombre de bits peut varier, généralement il est de 8 bits, parfois plus. Les fondements théoriques sont terminés. Dans le prochain article, nous essaierons d'intégrer SPI au conseil d'administration.

L'interface SPI a été développée par Motorola. Aujourd'hui, c'est l'un des plus populaires, en raison de sa grande vitesse et de sa simplicité exceptionnelle, de tous ceux du type séquentiel. De plus, l'interface SPI est également un principe de communication. Essentiellement, SPI est une logique (maître-esclave) entre deux appareils différents. On accorde beaucoup moins d'attention aux propriétés physiques ; elles sont mises en œuvre, comme on dit, « en fonction des circonstances », et aucun protocole de niveau inférieur n'est fourni. Chaque fabricant peut apporter sa propre contribution.

Interface SPI : description

La logique d'un tel appareil est de transmettre des données en série (bit par bit). Dans ce cas, le réglage et la lecture sont séparés dans le temps grâce à un signal d'horloge spécial sur un bus spécial (on l'appelle « bus de synchronisation » ou « synchronisation »). Par séparation, nous entendons que le processus de réglage et de lecture des données se produit sur les fronts opposés de l'impulsion d'horloge générée sur le bus. Grâce à cette alternance clairement séparée de lectures et de réglages dans le temps, il est possible d'utiliser le même registre pour recevoir et transmettre des informations. C'est précisément selon ce principe que l'interface SPI a été développée. Cependant, le développement technologique ne s'arrête pas ; aujourd'hui, de grandes quantités de mémoire ne posent aucun problème et la plupart des appareils disposent de registres d'entrée et de sortie séparés. Ici, en un mot, nous avons examiné le fonctionnement de l'interface SPI.

Description du fonctionnement de l'appareil

Le dispositif qui génère des impulsions d'horloge (contrôle) sur le bus d'horloge est le « maître » (maître). Un tel appareil contrôle l'ensemble du processus d'échange de données, c'est-à-dire qu'il détermine quand démarrer l'échange, quand le terminer, combien de bits d'information transférer, etc. Le deuxième appareil participant à l'échange est appelé « esclave ». Cet appareil n'affecte en aucune façon le bus d'horloge. Pour l'échange full-duplex (transfert dans les deux sens simultanément), l'interface SP utilise quatre lignes :

- MOSI - sortie maître et entrée esclave. Cette ligne va de l’appareil principal à l’appareil récepteur.

MISO - entrée maître et sortie esclave. Grâce à ce fil, le maître reçoit les données du dispositif auxiliaire.

SCLK - bus d'horloge. Dans cette ligne, le dispositif « maître » génère des impulsions d'horloge.

SS - sélection de « esclave ». A l'aide de ce fil, le maître contrôle la session d'échange.

Les niveaux logiques zéro et un sont codés par la valeur de tension sur le bus de données (MISO et MOSI). Le signal SS indique la fin et le début d'une session d'échange d'informations. Le plus souvent, c'est l'inverse. Cela signifie que lors de l'échange de données, l'appareil « maître » doit régler la ligne SS sur un signal de niveau bas, et à la fin de l'échange, sur un niveau haut. La présence du niveau SS permet d'organiser la transmission sur plusieurs appareils « esclaves » en utilisant un signal de synchronisation et un bus de données sans protocoles supplémentaires. Cependant, avec une telle connexion, il est nécessaire de connecter une ligne SS distincte à partir de chaque appareil récepteur.

Bonne journée! L’article d’aujourd’hui est une petite digression théorique qui nous aidera à maîtriser le cours de programmation Arduino. Nous parlerons de l'interface SPI. De quoi s'agit-il et avec quoi on le mange, nous essaierons de le comprendre dans cet article.

Pour commencer, la définition. IPS(Interface périphérique série - interface périphérique série) est une norme de transmission de données synchrone en série, conçue pour communiquer entre le contrôleur et divers périphériques. Cette interface est simple et pratique. Une bibliothèque spéciale pour travailler avec SPI a été écrite pour Arduino.

La communication est basée sur le principe « maître-esclave ». Le contrôleur est généralement l'appareil maître. Tous les autres appareils connectés au système sont des esclaves. Les données du dispositif maître sont transmises via le bus de données à l'un des esclaves sélectionnés ou vice versa du dispositif esclave au maître de manière synchrone, en utilisant le signal d'horloge maître.

Brochage du bus de données SPI se compose de 4 lignes : MOSI, MISO, CS et SCLK :

  • MOSI(Master Out Slave In - Sortie maître, entrée esclave) ou simplement SI.– le transfert de données s'effectue de l'appareil maître vers l'appareil esclave.
  • MISO(Master In Slave Out - Entrée maître, sortie esclave) ou simplement DONC– le transfert de données s'effectue de l'appareil esclave vers l'appareil maître.
  • C.S.(Sélection de puces - Sélection de puces) ou SS(Sélection d'esclave — Sélection d'esclave) – sélection d'un appareil esclave.
  • SCLK(HORLOGE série) ou simplement SCK– transmission d'un signal d'horloge du maître vers l'esclave.

Afin de transférer des données d'un maître à un esclave, il est nécessaire que le maître règle le niveau du signal à un niveau bas sur la ligne CS de l'esclave avec lequel il va établir la communication. Les bits sont ensuite transférés sur la ligne MOSI. Pour arrêter la transmission des données, le leader « libère » la ligne CS, pour ainsi dire, en y fixant un niveau de signal élevé.

Pour connecter plusieurs appareils esclaves au bus de données SPI, chacun d'eux doit disposer de sa propre ligne CS individuelle. Une fois cela fait, l'appareil maître peut alternativement « tirer » les lignes, basculant entre les appareils esclaves. Plusieurs esclaves peuvent être connectés de différentes manières : en parallèle ou en série.

Connexion parallèle d'appareils esclaves via le bus de données SPI

La particularité de la connexion parallèle de plusieurs appareils esclaves est que les lignes communes SCLK, MOSI et MISO sont utilisées pour créer la communication. Dans ce cas, chaque appareil esclave possède sa propre ligne SS(CS). Le dispositif maître détermine avec quel « esclave actuel » établir l'échange de données en générant un niveau de signal faible sur la ligne SSn correspondante (où n – 1,2...).

Pour connecter n nombres d'appareils esclaves au contrôleur via l'interface SPI, vous devez les allouer à cet effet n+3 broches du microcontrôleur.

Connexion série des appareils esclaves au bus SPI

Quant à la connexion série des appareils esclaves, ils utilisent des lignes communes SCLK et SS, et la sortie de l'une est connectée à l'entrée de l'autre. La ligne MOSI de l'appareil maître est connectée au premier esclave et la ligne MISO est connectée au dernier. Si vous regardez cette connexion du point de vue de l'appareil maître, alors un appareil esclave est connecté via le bus de données SPI.

Il convient de noter l'avantage de ce type de connexion : vous pouvez connecter le nième nombre d'appareils en utilisant seulement 4 broches du microcontrôleur à cet effet.

C'est tout pour l'instant, à suivre...

IPS dans Arduino, c'est l'un des principaux protocoles d'échange de données entre la carte Arduino et les appareils connectés. Avec I2C et UART, ce protocole est souvent utilisé pour de nombreux types de périphériques. La connaissance des principes de fonctionnement SPI est donc nécessaire pour tout ingénieur Arduino. Dans cet article, nous examinerons brièvement les principes de base, le schéma d'interaction et la méthode de connexion des capteurs et écrans SPI à Arduino.

SPI est un protocole de transfert de données largement utilisé entre un microcontrôleur (maître) et des périphériques (esclaves). Dans nos projets, une carte Arduino est le plus souvent utilisée comme Master. L'interface SPI a été inventée et utilisée par Motorola, mais au fil du temps, elle est devenue un standard de l'industrie. Le principal avantage de travailler avec cette interface est sa vitesse élevée et la possibilité de connecter plusieurs appareils sur un seul bus de données.

Broches et broches SPI

La communication via l'interface Arduino SPI s'effectue entre plusieurs appareils proches les uns des autres. Les cartes Arduino sont équipées de broches séparées pour SPI. L'appairage s'effectue à l'aide de quatre contacts :

  • MOSI – les informations sont transmises via cette ligne à l'esclave depuis le maître.
  • MISO – utilisé pour transférer des informations vers le maître depuis l'esclave.
  • SCLK – création d'impulsions d'horloge pour la transmission de données synchrone.
  • SS – sélection du périphérique esclave.

Interaction des appareils SPI

L'interaction avec l'appareil commence lorsque la sortie SS devient faible.

Avant de commencer les travaux, vous devez déterminer :

  • À partir de quel bit le décalage doit-il commencer – haut ou bas ? L'ordre est ajusté à l'aide de la fonction PI.setBitOrder().
  • Déterminez le niveau auquel la ligne SCK doit se trouver en l'absence d'impulsion d'horloge. Réglable par la fonction SPI.setDataMode().
  • Sélectionnez le taux de transfert de données. Déterminé par la fonction SPI.setClockDivider().

L'étape suivante consiste à déterminer dans quel mode les informations seront transférées. Le choix du mode est déterminé par des indicateurs tels que la polarité et la phase de l'impulsion d'horloge. Si le niveau est bas, 0 est enregistré, haut - 1. Il existe 4 modes au total :

  • Mode 0 – SPI_MODE0 : polarité (CPOL) 0, phase (CPHA) 0.
  • Mode 1 : polarité 0, phase 1.
  • Mode 2 : polarité 1, phase 0.
  • Mode 3 : polarité 1, phase 1.

Initialement, Arduino a été conçu pour transmettre des données avec le bit le plus significatif en premier, mais avant de commencer, vous devez clarifier cela dans la documentation. Vous pouvez démontrer les modes dans l'image.

Il existe deux types de connexions possibles dans l'interface SPI : indépendantes et en cascade. Dans le premier cas, lors de la connexion, le Maître s'adresse à chaque Esclave individuellement, dans le second cas, la connexion s'effectue un par un, c'est-à-dire cascade.

Connexion de SPI à Arduino

Chaque modèle Arduino possède ses propres broches SPI. Ces conclusions :

  • Uno : MOSI correspond à la broche 11 ou ICSP-4, MISO – 12 ou ICSP-1, SCK – 13 ou ICSP-3, SS (esclave) – 10.
  • Mega1280 ou Mega2560 : MOSI – 51 ou ICSP-4, MISO – 50 ou ICSP-1, SCK – 52 ou ICSP-3, SS (esclave) – 53.
  • Leonardo : MOSI – ICSP-4, MISO –ICSP-1, SCK –ICSP-3.
  • Due : MOSI – ICSP-4, MISO –ICSP-1, SCK –ICSP-3, SS (maître) – 4, 10, 52.

Le dernier contrôleur Arduino Due étend les capacités de l'utilisateur et vous permet de mettre en œuvre plus de tâches que les autres microcontrôleurs. Par exemple, il est possible de contrôler automatiquement l'appareil esclave et de sélectionner automatiquement différentes configurations (vitesse d'horloge, mode, etc.).

Bibliothèque SPI Arduino

Pour travailler sur Arduino, une bibliothèque distincte a été créée qui implémente SPI. Avant de démarrer le code, vous devez ajouter #include pour activer la bibliothèque.

Fonctions principales :

  • begin() et end() – activez et désactivez le travail. Lors de l'initialisation, les lignes SCLK, MOSI et SS sont configurées en sortie, envoyant un niveau bas à SCLK, MOSI et un niveau haut à SS. La fonction end() ne modifie pas les niveaux de ligne ; elle est nécessaire pour désactiver le bloc associé à l'interface sur la carte Arduino.
  • setBitOrder(order) – définition de l’ordre d’envoi des bits d’information (MSBFIRST – priorité du bit le plus significatif, LSBFIRST – priorité du bit le moins significatif).
  • setClockDivider(divider) – réglage des diviseurs d'horloge de fréquence principaux. Vous pouvez définir des diviseurs de 2, 4, 8, 16, 32, 64 et 128. Il s'écrit comme suit - SPI_CLOCK_DIVn, où n est le diviseur sélectionné.
  • setDataMode(mode) – sélectionnez l’un des quatre modes de fonctionnement.
  • transfert (valeur) – transfère un octet du périphérique maître et renvoie l'octet reçu du périphérique esclave.
  • shiftIn(miso_pin, sclk_pin, bit_order) et shiftOut(mosi_pin, sclk_pin, order, value) – acceptant et envoyant des données, peuvent être connectés à n'importe quelle broche numérique, mais avant cela, vous devez les configurer vous-même.

Avantages et inconvénients du SPI

Avantages de l'interface SPI :

  • Capacité à transmettre des données volumineuses, non limitées à 8 bits.
  • Logiciel facile à mettre en œuvre.
  • Simplicité de mise en œuvre matérielle.
  • Moins de broches sont nécessaires que pour les interfaces parallèles.
  • Seule la vitesse des appareils limite la fréquence d'horloge maximale.

Défauts:

  • Grand nombre de broches par rapport à I2C.
  • L'esclave ne peut pas contrôler le flux d'informations.
  • Absence d'un protocole standard de détection des erreurs.
  • Un grand nombre de façons d'implémenter l'interface.
  • Absence de confirmation de réception des informations.

Un exemple d'utilisation d'Arduino SPI dans un projet avec un capteur de pression

Pour mettre en œuvre le projet, nous avons besoin d'un Arduino, d'un capteur de pression, d'une maquette et de fils. Un exemple de connexion de capteur est présenté sur la figure.

Grâce au capteur SCP1000, il est possible de reconnaître des paramètres tels que la pression et la température et de transmettre ces valeurs via SPI.

Éléments de base d'une esquisse de programme

Tout d'abord, les registres des capteurs sont enregistrés dans le code à l'aide de setup(). Plusieurs valeurs sont renvoyées par l'appareil - une sur 19 bits pour la pression reçue, une autre sur 16 bits pour la température. Ensuite, deux octets de température sont lus et la pression est lue en deux étapes. Tout d'abord, le programme prend les trois bits les plus significatifs, puis les 16 bits suivants, après quoi, à l'aide d'un décalage de bits, ces deux valeurs sont combinées en une seule. La pression réelle est la valeur à 19 chiffres divisée par 4.

const int PRESSION = 0x1F; // première étape de détermination de la pression (les trois bits de poids fort sont détectés)

const int PRESSURE_LSB = 0x20 ; // deuxième étape, qui définit 16 bits pour la pression

const int TEMPÉRATURE = 0x21 ; //16 bits pour la température

Pour lire les données de température et les convertir en Celsius, l'élément de code suivant est utilisé :

int tempData = readRegister(0x21, 2);

float realTemp = (float)tempData / 20.0; // pour déterminer la valeur réelle de la température en Celsius, vous devez diviser le nombre obtenu par 20

Serial.print("Temp

Serial.print(realTemp);

Lire les bits de pression et les combiner :

octet Pressure_data_high = readRegister (0x1F, 1);

pression_data_high &= 0b00000111 ;

unsigned int press_data_low = readRegister(0x20, 2);

pression longue = ((pression_data_high<< 16) | pressure_data_low) / 4; //определение давления в Паскалях.

Brèves conclusions sur SPI

Les boucliers et capteurs SPI se trouvent souvent dans les projets Arduino, vous devez donc savoir comment fonctionne ce protocole. En principe, il n'y a rien de compliqué à connecter des appareils SPI. L'essentiel est de connecter correctement les fils et d'utiliser les méthodes standard de la bibliothèque dans le bon ordre. Pour certains appareils, par exemple les cartes SD ou les écrans OLED, il n'existe en principe aucune alternative.

IPS(Interface périphérique série, interface périphérique série, bus IPS) - Il s'agit d'une interface de données à courte distance développée par Motorola. Les données sont transmises en mode full duplex (dans les deux sens) à l'aide d'une architecture maître-esclave. IPS aussi parfois appelée interface à quatre fils.

Fig.1 communication standard via SPI

Dans le pneu IPS 4 signaux numériques sont utilisés :
  • MOSI: (Master Out Slave In) Sortie maître, entrée esclave.
  • MISO: (Master In Slave Out) entrée maître, sortie esclave.
  • SCLK: (horloge série) signal d'horloge.
  • C.S. ou SS: (Chip Select, Slave Select) sélection de puce, sélection d'esclave.

D'autres noms sont possibles :

  • MOSI: SIMO, SDO, DO, DOUT, SI, MTSR ;
  • MISO: SOMI, SDI, DI, DIN, SO, MRST ;
  • SCLK: SCK, CLK;
  • SS: nCS, CS, CSB, CSN, nSS, STE, SYNC.
Pneu IPS peut fonctionner avec 1 appareil maître et plusieurs appareils esclaves. Si un seul appareil esclave est utilisé, son entrée SS peut être mise à la terre, mais uniquement s'il ne fonctionne pas sur une coupure de signal.

Si vous utilisez plusieurs appareils esclaves, vous devez attacher des résistances de rappel à chacune des broches SS et assurez-vous que les sorties MISO chacun des appareils est connecté via un tampon à haute impédance (en pratique, la sortie est considérée comme déconnectée), cela peut être implémenté à l'intérieur du microcircuit, vous devez étudier la documentation de l'appareil spécifique.

S'il n'y a pas de tampon fourni à l'intérieur des appareils, alors la ligne MISO sera toujours dans l’état log.0 ou log.1. (ça peut aussi brûler). Pour vérifier s'il y a un tampon à l'intérieur de notre appareil, vous pouvez lire la documentation ou connecter un diviseur de tension afin que sur la ligne MISOétait la moitié de la tension d'alimentation, puis mesurez la tension réelle. Si la valeur que nous avons mesurée est différente (ce sera 0 V ou la tension d'alimentation), alors il n'y a pas de tampon et il doit être installé comme une puce séparée.


Fig.3 Vérification de la présence d'un tampon interne

Transfert de données


Le maître et l'esclave se transmettent des données simultanément. Vous devez d'abord sélectionner un appareil esclave en réglant à son entrée SS niveau logique faible (peut varier selon le fabricant). Les données à transmettre sont placées dans des registres à décalage. Ensuite, le maître génère des signaux d'horloge d'une fréquence d'environ plusieurs MHz, le maître et l'esclave commencent à s'envoyer bit par bit les informations stockées dans les registres à décalage, en commençant par le bit de poids fort.

Fig.4 Transfert de données via SPI
Au total, 2 registres à décalage sont utilisés, le bit le plus significatif d'un appareil est transféré vers le bit le moins significatif d'un autre appareil, après quoi le registre décale les informations qui y sont stockées. Le nombre de bits dans 1 paquet de données dépend de l'appareil spécifique ; certains fabricants ajoutent la possibilité de modifier la longueur du paquet.

Si davantage de données doivent être transférées, de nouvelles informations sont écrites dans les registres et le processus recommence ; si le transfert de données est terminé, le maître éteint généralement l'appareil esclave.

Plusieurs registres sont utilisés pour configurer l'interface. Vous pouvez ajuster la fréquence, les interruptions, l'ordre des bits et bien plus encore, plus d'informations à ce sujet peuvent être trouvées dans la documentation de Motorola ee.nmt.edu, ce document est considéré comme standard pour IPS. Mais les fabricants peuvent ne pas utiliser tous les paramètres qui y sont décrits et les bits peuvent être disposés dans un ordre différent de celui décrit par Motorola. Dans tous les cas, vous devez lire la documentation de l'appareil spécifique.

S'il est clair sur le réglage de la fréquence de transmission et le choix d'un maître/esclave, vous pouvez alors décrire plus en détail le réglage de la phase et de la polarité du signal d'horloge.

Fondamentalement, ces paramètres peuvent être compris à partir du chronogramme :

  • CPOL= 0 : le signal de synchronisation commence à un niveau bas ;
  • CPOL= 1 : le signal de synchronisation commence à un niveau haut ;
  • ACSP= 0 : Les données sont écrites sur le front montant du signal d'horloge ;
  • ACSP= 1 : Les données sont enregistrées sur le front descendant du signal d'horloge.
Les fronts descendant et montant indiquent le premier changement du signal d'horloge, ou le second. Cela ne dépend pas de l'état dans lequel se trouve la ligne. SCK, il peut s’agir d’un front descendant ou montant.

En fonction de l'état des bits ACSP Et CPOL, il existe 4 modes de fonctionnement de l'interface SPI (0, 1, 2 ou 3). Mais selon les fabricants, ils correspondent souvent à des états de bits différents ; par exemple, pour les contrôleurs ARM et PIC32MX, aucun des modes ne coïncide.

Il existe deux méthodes courantes pour activer plusieurs SPI, la première étant une connexion en guirlande :

Dans ce cas, le maître choisit lequel des appareils esclaves doit transmettre les données.

Il se peut que les appareils esclaves ne soient pas compatibles entre eux et qu'ils nécessitent des paramètres différents, par exemple des longueurs de paquets différentes, auquel cas ils utilisent une connexion « en anneau » :

Dans ce cas, tous les appareils sont allumés simultanément et les données sont transmises séquentiellement afin de transférer des informations vers n'importe quel appareil ou de celui-ci vers le maître, il est nécessaire de passer par plusieurs cycles de transmission.

Conclusion


IPS L'interface a gagné sa popularité en raison de sa simplicité et de son faible coût. On le trouve désormais dans un grand nombre d'appareils. Les MK sont programmés avec son aide, JTAG est également implémenté sur la base de celui-ci. SPI. il est souvent utilisé pour communiquer avec divers microcircuits : mémoire Flash, EEPROM, LCD, cartes SD, microcircuits ADC, DAC et bien plus encore.

Bien que la norme soit décrite par Motorola, il n'existe pas de définitions ni de limites claires pour IPS, c'est pourquoi vous pouvez trouver différentes implémentations de cette interface ; un nombre différent de lignes de signal, le nombre de bits dans un paquet et d'autres méthodes de configuration peuvent être utilisés. Vous devez donc d’abord lire la documentation de l’appareil avec lequel vous travaillez.

Il existe des implémentations prêtes à l'emploi IPS des "émetteurs-récepteurs" qui peuvent être connectés à un ordinateur, qui peuvent être utiles pour déboguer divers projets, et de nouveaux oscilloscopes et analyseurs logiques peuvent décoder IPS forfaits.

Avantages

  • Transmission de données en duplex intégral.
  • Débit plus élevé par rapport à I²C ou SMBus.
  • Possibilité de sélection arbitraire de la longueur des paquets.
  • exigences de consommation d'énergie inférieures par rapport à I²C et SMBus ;
  • Peut être utilisé dans des systèmes avec de faibles vitesses d'horloge stables ;
  • Les appareils esclaves n'ont pas besoin d'une adresse unique, contrairement aux interfaces telles que I²C, GPIB ou SCSI.
  • Seules quatre broches sont utilisées, ce qui est bien moins que pour les interfaces parallèles.
  • Le caractère unidirectionnel des signaux permet, si nécessaire, d'organiser facilement une isolation galvanique entre les appareils maître et esclave.
  • La fréquence d'horloge maximale n'est limitée que par la vitesse des appareils impliqués dans l'échange de données.

Défauts

  • Plus de broches sont nécessaires que pour l'interface I²C.
  • L'appareil esclave ne peut pas contrôler le flux de données.
  • Il n'y a aucun accusé de réception de données provenant de l'appareil esclave (l'appareil maître peut transmettre des données « vers nulle part »).
  • Il n’existe pas de protocole de détection d’erreurs standardisé.
  • L’absence de norme officielle rend impossible la certification des appareils.
  • En termes de portée de transmission de données, l'interface SPI est inférieure aux normes telles que UART et CAN.
  • Disponibilité de nombreuses options d'implémentation d'interface.
  • Manque de prise en charge du branchement à chaud des appareils.

Sources :
Documentation de Motorola



Des questions ?

Signaler une faute de frappe

Texte qui sera envoyé à nos rédacteurs :