I2C vs SPI :Différences à connaître
Vous concevez un projet et il est crucial de choisir entre I2C et SPI ? Mais vous ne savez pas lequel choisir ? Si oui, nous vous aiderons à choisir celle qui convient le mieux à votre projet.
Tout d'abord, I2C et SPI sont des protocoles "bas de gamme". Mais ils sont faciles à utiliser et fonctionnent parfaitement pour la communication entre les puces de votre PCB.
Cependant, la sélection du mauvais protocole pour votre projet peut entraîner des résultats indésirables. Néanmoins, nous sommes là pour vous aider à comprendre la différence entre ces deux protocoles similaires.
Es-tu prêt? Commençons !
Qu'est-ce qu'un protocole SPI ?
Dans les années 1980, Motorola a développé le protocole SPI pour établir la communication entre les microcontrôleurs de l'époque avec d'autres périphériques comme l'EEPROM.
EEPROM
Ainsi, le protocole SPI utilise quatre lignes de signal pour la communication entre les pièces. Cependant, il est crucial de noter que ceux-ci n'incluent pas le sol et les lignes électriques. Voici les quatre lignes de signal actives :
- SS :ligne de sélection esclave (contrôlée par le SPI maître)
- MOSI :Master Out Slave In (contrôlé par le SPI maître)
- SCLK :horloge série (contrôlée par le SPI maître)
- MISO :Master In Slave Out (contrôlé par l'appareil SPI maître)
A ce propos, les quatre lignes permettent à un SPI (dispositif de contrôle) maître de communiquer avec un SPI (dispositif périphérique) esclave.
Interface de protocole SPI
De plus, vous ne pouvez avoir qu'un seul contrôleur sur un bus SPI. Mais, il n'y a pas de limite au nombre de périphériques que vous pouvez ajouter. De plus, ajouter plus de périphériques signifie augmenter les lignes SS. Par conséquent, voici une illustration de la façon dont vous pouvez utiliser trois lignes SS distinctes pour contrôler différents périphériques.
Interface de protocole SPI avec plusieurs personnes asservies
De plus, lorsque le maître SPI veut communiquer avec les périphériques en envoyant ou en recevant des données, il tire la ligne SS correspondante. Par conséquent, la ligne sera en dessous. Par conséquent, la ligne SCLK s'active et est haute et basse à une fréquence définie.
De plus, le SPI maître utilise la ligne MISO pour envoyer simultanément des données et des échantillons. Gardez également à l'esprit qu'il ne peut y avoir de communication qu'entre un périphérique et le SPI maître à la fois.
Qu'est-ce qu'un I2C
Alternativement, en 1982, Philips Semiconductors (maintenant NXP Semiconductors) a développé le premier protocole I2C pour systématiser les communications entre les puces sur un PCB.
Contrairement à son homologue SCI, le protocole I2C dispose de deux lignes de communication, à l'exclusion de la terre et des lignes électriques. Ces lignes incluent :
- SDA :ligne de données série
- SCL :ligne d'horloge série
Ainsi, vous pouvez connecter n'importe quel nombre de périphériques d'asservissement et d'agent à un bus. En outre, vous devez conserver les lignes SCL et SDA en tant que lignes à drain ouvert. Par conséquent, vos appareils n'auront qu'une seule ligne basse à la fois. De plus, vous aurez besoin d'une résistance de rappel sur vos tuyaux. De cette façon, vous pouvez ramener votre ligne vers le haut.
Interface de protocole I2C
En raison de la conception à drain ouvert du protocole I2C, vous pouvez utiliser plusieurs maîtres sur le même bus. Mais si deux appareils de contrôle commencent à communiquer simultanément, il y aura un arbitrage qui fera cesser la transmission de l'un des appareils.
Pendant ce temps, les dispositifs de contrôleur surveillent la ligne SDA pendant que la communication se produit. Ainsi, si un appareil détecte que la ligne SDA est faible lors de la transmission, il arrête d'émettre. Et cela permet à un autre appareil contrôleur de communiquer.
De plus, le dispositif I2C du contrôleur transmettra une condition START pour initier la communication. Par conséquent, la ligne SDA sera basse tandis que la ligne SCL restera haute.
Ensuite, le dispositif contrôleur transmettra une adresse de 7 bits du destinataire à qui il veut envoyer et un bit de lecture (1) ou un bit d'écriture (0). À ce stade, un appareil sur le bus ne répondra que s'il a une adresse de débit de 7 bits correspondante en rendant la ligne SDA basse.
Différences entre I2C et SPI
Le SPI et l'I2C sont similaires car ce sont tous deux des protocoles "bas de gamme". De plus, les deux protocoles manquent de la vitesse et des autres fonctionnalités dont se vantent leurs cousins lourds (SATA, Ethernet, USB et autres).
Mais en ce qui concerne les principes de fonctionnement et les fonctionnalités. Examinons de plus près les différences entre les deux protocoles.
Connecteur USB
Tout d'abord, vous pouvez définir quatre modes différents sur le protocole SPI pour déterminer le fonctionnement de l'horloge. Et pour que la communication fonctionne, les dispositifs asservisseur et agent doivent utiliser le même modèle.
- Mode 0 :données échantillonnées sur un front d'horloge montant, l'horloge ralentit au niveau bas
- Mode 1 :données échantillonnées sur le front descendant de l'horloge, l'horloge ralentit au niveau bas
- TMode 2 :données échantillonnées sur le front d'horloge descendant, l'horloge ralentit haut
- Mode 3 :données échantillonnées sur un front d'horloge montant, l'horloge ralentit haut
De plus, les vitesses de transfert de données SPI peuvent aller au-delà de 10 Mbps, ce qui le rend parfait pour transférer de grandes quantités de données. Vous pouvez également trouver des protocoles SPI sur des capteurs avec des taux de mise à jour rapides comme les écrans LCD et les accéléromètres.
LCD
Alternativement, l'I2C ne peut envoyer des données que dans le paquet d'un octet à la fois. De plus, le périphérique récepteur doit accuser réception de chaque octet avec un bit ACK. De plus, le protocole I2C a trois modes avec différentes vitesses de transfert de données.
Bit ACK
Le modèle standard atteint un maximum de 100 kbps, le mode rapide plafonne à 400 kbps et le mode haut débit atteint un maximum de 3,4 Mbps. Par conséquent, le protocole I2C est nettement plus lent que le protocole SPI. Par conséquent, les protocoles I2C fonctionnent mieux dans les capteurs de température et les convertisseurs analogique-numérique.
Capteurs de température
Comparaison I2C et SPI
Le tableau ci-dessous montre en outre les différences significatives entre l'I2C et le SPI :
Fonctionnalité | SPI | I2C |
Clé USB | Mode push-pull | Mode drain ouvert |
Max. Vitesse | Aucun (mais vous pouvez trouver 10 à 100 Mbps) | 100 kbit/s (méthode standard)400 kbit/s (voie rapide)3,4 Mbit/s (mode haut débit) |
Multi-maître | Non | Oui |
Lignes de signalisation | 4 (des appareils supplémentaires ajoutent des lignes supplémentaires) | 2 |
Non. de périphériques | Le nombre de broches disponibles pour les lignes SS sur le SPI maître est la seule limite au nombre de périphériques que vous pouvez avoir | |
Contrôle de flux | Non | Oui |
Protocoles SPI vs I2C – Avantages et inconvénients
SPI
Avantages
- Les protocoles SPI consomment une petite quantité d'énergie
- Il prend également en charge les communications en duplex intégral à haut débit
Inconvénients
- Il existe différentes versions et variantes personnalisées qui causent des problèmes de compatibilité
- Vous avez besoin de lignes de signal supplémentaires pour communiquer avec plusieurs périphériques sur le même bus
- Ne prend en charge que les communications à courte distance. Vous ne pouvez pas transférer de données vers des appareils sur des tableaux distincts
I2C
Avantages
- Vous n'avez pas besoin de lignes supplémentaires pour contrôler plusieurs appareils sur le même bus
- Peut transmettre des données à d'autres PCB mais avec des vitesses de transmission faibles
- A une sensibilité au bruit plus faible
- Peut transmettre des données sur de plus longues distances
- Moins cher à utiliser que SPI
Inconvénients
- Les vitesses de transfert sont plus lentes que SPI
- Utilise plus d'énergie que le protocole SPI
- L'incapacité d'un appareil à libérer le bus de communication peut bloquer le protocole I2C
Facteurs à prendre en compte lors du choix entre SPI et I2C
La sélection du meilleur protocole pour votre projet va au-delà du prix. Voici donc quelques éléments à prendre en compte avant de faire votre choix :
Épingles limitées
Voici les avantages et les inconvénients des protocoles SPI et I2C :si vous n'aimez pas utiliser des microcontrôleurs avec plus de 100 broches, c'est un facteur crucial à prendre en compte. Dans ce cas, vous devez opter pour un protocole nécessitant moins de lignes pour les communications.
Puissance
En fonction de votre conception, vous souhaiterez peut-être minimiser ou maximiser la consommation d'énergie. Vous devez donc vous assurer de choisir un protocole qui correspond le mieux à vos besoins de consommation.
Vitesse
Lorsqu'il s'agit de transférer des données en quantités énormes, chaque microseconde est cruciale. Donc, si la vitesse est ce dont vous avez besoin, optez pour un protocole qui répond à vos normes de vitesse.
Taille du PCB
Il est essentiel de prendre en compte la taille de votre PCB avant de choisir un protocole. Par conséquent, vous augmenterez vos chances d'obtenir les résultats souhaités.
Choisir entre SPI et I2C
Voici les caractéristiques de chaque protocole pour vous aider à prendre la meilleure décision pour votre conception :
Fonctionnalités | SPI | I2C |
Vitesse | Si votre conception nécessite des transmissions plus rapides, le protocole SPI est le meilleur choix. | Vous pouvez choisir I2C pour les conceptions d'appareils à faible vitesse |
Taille du PCB | Si la taille de votre PCB ne vous dérange pas, vous ne pouvez pas vous tromper avec SPI ou I2C. | Si votre PCB a une taille plus petite et moins de pistes, pensez à choisir l'I2C |
Épingles limitées | Optez pour le protocole SPI si cela ne vous dérange pas d'ajouter des lignes supplémentaires pour la communication. | Si vous n'êtes pas à l'aise avec de nombreuses pistes, alors I2C est un choix idéal. |
Puissance | Pour les appareils à faible consommation d'énergie, utilisez le protocole SPI | Pour les appareils à consommation d'énergie plus élevée, utilisez le protocole I2C |
Comprendre l'UART
Les UART sont des circuits physiques dans un microcontrôleur ou un microcontrôleur qui établissent une communication série entre les appareils des systèmes embarqués.
De plus, lorsque vous avez affaire à une communication UART, il y a toujours une communication directe entre l'émetteur UART et le récepteur UART.
UART contre I2C contre SPI
Contrairement à d'autres protocoles de communication comme SPI et I2C, l'UART est purement physique. De plus, il n'utilise pas de paradigme maître/esclave pour communiquer. Au lieu de cela, le microcontrôleur utilise deux dispositifs UART pour envoyer et recevoir des données. De plus, vous n'avez besoin que de deux fils pour la communication UART. Et les câbles aideront à transmettre les données de la broche Tx de l'émetteur à la broche Rx du récepteur.
Interface de protocole UART
Arrondir
En réalité, les protocoles SPI et I2C sont utilisés dans diverses applications. Parfois, vous pouvez vous retrouver avec des appareils dotés d'interfaces SPI et I2C sur une seule puce. Ainsi, vous n'avez pas à choisir entre les deux.
Cependant, si vous devez choisir entre les deux protocoles, le SPI est préférable pour les projets nécessitant des vitesses de transfert plus rapides. D'un autre côté, si votre microcontrôleur a des broches limitées, le protocole I2C fonctionnera mieux.
Avez-vous des questions? N'hésitez pas à nous contacter. Nous serons ravis de vous aider.
Technologie industrielle
- 7 bibliothèques React que vous devriez connaître
- Ce que vous devez savoir sur les tests d'huile de transformateur
- Pourquoi utiliser une self de ligne
- Ce que vous devez savoir sur les protections de meule
- Cinq choses que vous devez savoir sur les micro-outils
- Qu'est-ce que la conformité TAA ? 5 choses que vous devez savoir
- Les 9 applications d'apprentissage automatique que vous devez connaître
- Revêtement d'embrayage :tout ce que vous devez savoir
- Termes de base du jet d'eau que vous devez connaître