UART contre SPI contre I2C
UART, SPI et I2C sont les trois protocoles série les plus courants pour les systèmes embarqués. Chacun a été conçu pour un cas d'utilisation différent : UART pour les liaisons asynchrones point à point, SPI pour les bus périphériques à haut débit et I2C pour la communication multi-appareils sur deux fils. Le choix de la bonne solution dépend de la vitesse, du nombre de broches et de la topologie.
UART (récepteur/émetteur asynchrone universel)
L'UART est un protocole série asynchrone point à point utilisant des lignes TX et RX distinctes. Pas d'horloge partagée : les deux parties doivent se mettre d'accord sur le débit en bauds. Vitesses standard de 9600 à 4 Mbps. Utilisé pour les consoles de débogage, les modules GPS et les modules Bluetooth.
Advantages
- Matériel simple : seulement deux fils (TX, RX)
- Aucun signal d'horloge requis — fonctionnement asynchrone
- Prise en charge universelle : presque tous les microcontrôleurs disposent d'un UART
- Fonctionne sur de longs câbles et est facile à déboguer à l'aide d'un terminal
Disadvantages
- Point à point uniquement : pas de bus multi-appareils natif
- Les deux parties doivent se mettre d'accord sur le débit en bauds : une mauvaise configuration entraîne des données déformées
- Vitesse inférieure à celle du SPI pour les transferts en masse
- Nécessite des octets de cadrage et des bits de démarrage/arrêt, soit une surcharge d'environ 20 %
When to use
Utilisez UART pour les liaisons point à point : récepteurs GPS, modules Bluetooth/WiFi, journalisation des bogues et appareils industriels avec RS-232/RS-485. Idéal lorsque la simplicité et les communications à longue portée sont plus importantes que la rapidité.
I2C (circuit interintégré)
I2C est un protocole de bus à deux fils (SDA + SCL) prenant en charge plusieurs maîtres et jusqu'à 127 périphériques sur un seul bus. Vitesses standard : 100 kbit/s, 400 kbit/s, 1 Mbit/s (Fast+), 3,4 Mbit/s (haut débit). Utilise un adressage 7 bits.
Advantages
- Seulement deux fils (SDA + SCL) quel que soit le nombre d'appareils
- Bus multi-appareils : jusqu'à 127 appareils adressables
- Aucune ligne de sélection de puce n'est nécessaire : l'adressage est intrabande
- Convient parfaitement aux capteurs, aux EEPROM, aux RTC et aux contrôleurs d'affichage
Disadvantages
- Plus lent que le SPI pour les transferts de données en masse
- Le bus à drain ouvert nécessite des résistances de rappel, ce qui limite la vitesse sur les longs trajets
- Conflits d'adresses possibles avec les appareils à adresse fixe
- Ne convient pas aux flux de données à haut débit
When to use
Utilisez l'I2C lorsque plusieurs périphériques à vitesse lente à moyenne partagent un bus et que vous souhaitez minimiser le nombre de broches. Parfait pour les capteurs (IMU, température, humidité), les EEPROM, les RTC et les pilotes d'affichage.
Key Differences
- ▸Nombre de fils : UART = 2 (TX/RX) ; I2C = 2 (SDA/SCL, bus partagé) ; SPI = 4+ (MOSI/MISO/SCK + CS par appareil)
- ▸Vitesse : SPI > I2C > UART pour les transferts en masse ; UART est le plus rapide pour un streaming simple
- ▸Topologie : UART = point à point ; I2C/SPI = bus multi-appareils (I2C utilise l'adressage, SPI utilise des lignes de sélection de puces)
- ▸UART est asynchrone ; SPI et I2C sont synchrones (horloge partagée)
- ▸Le SPI est en duplex intégral ; I2C et UART peuvent être en duplex intégral (UART) ou en semi-duplex (I2C)
Summary
Utilisez UART pour les liaisons série point à point et la sortie de déboguage/journalisation. Utilisez l'I2C lorsque vous devez connecter plusieurs capteurs ou périphériques à faible vitesse sur deux fils. Utilisez le SPI lorsque vous avez besoin de transferts haut débit vers un seul périphérique (écrans, mémoire flash, ADC). Le nombre de broches et la vitesse sont généralement les facteurs déterminants.
Frequently Asked Questions
Lequel est le plus rapide : SPI, I2C ou UART ?
Le SPI est le plus rapide : les implémentations classiques fonctionnent à une fréquence de 10 à 50 MHz (10 à 50 Mbit/s), principalement limitées par la capacité de trace. L'I2C atteint une vitesse maximale de 3,4 Mbit/s (mode haut débit). L'UART est généralement compris entre 115,2 kbit/s et 4 Mbit/s pour les implémentations standard.
Puis-je connecter plusieurs appareils sur un bus UART ?
L'UART standard fonctionne point à point. Le RS-485 (une extension multipoint de la signalisation UART) autorise jusqu'à 32 nœuds sur un bus différentiel à une vitesse maximale de 10 Mbit/s. Chaque appareil doit être adressé au niveau de la couche applicative.
Pourquoi l'I2C a-t-il besoin de résistances de rappel ?
L'I2C utilise une signalisation à drain ouvert : les appareils ne peuvent tirer le bus que vers le bas, pas vers le haut. Les résistances de rappel externes (généralement 4,7 kΩ pour 100 kbit/s, 2,2 kΩ pour 400 kbit/s) tirent la ligne vers le haut lorsqu'aucun périphérique ne la pilote. La constante de temps RC du pull-up et de la capacité du bus limite la vitesse maximale.
À quoi sert le SPI que l'I2C ne peut pas faire ?
Le SPI est préféré pour les données en masse à haut débit : cartes SD (jusqu'à 25 MHz), flash SPI (jusqu'à 133 MHz), écrans couleur (SPI TFT) et ADC/DAC haut débit. L'I2C ne peut pas fonctionner de manière fiable à une vitesse supérieure à 3,4 Mbit/s en raison des contraintes liées au bus à drain ouvert.