10M+ Composants Électroniques En Stock
Certifié ISO
Garantie Incluse
Livraison rapide
Pièces difficiles à trouver ?
Nous les trouvons
Demander un devis

UART vs I2C vs SPI : Choisir le bon protocole série

Jul 13 2026
Source: Michael Chen
Parcourir: 1266

Faut-il utiliser UART, I2C ou SPI pour votre circuit ? Le bon choix dépend du nombre d’appareils à connecter, de la vitesse requise et du nombre de broches de microcontrôleur disponibles. Cet article compare l’UART, l’I2C et le SPI en termes réels, vous aidant à choisir le meilleur protocole pour le débogage, les capteurs, les écrans, les puces mémoire et les modules embarqués.

Figure 1. UART vs I2C vs SPI

Qu’est-ce qu’un UART ?

Figure 2. UART

UART est une interface de communication série qui envoie et reçoit des données sans ligne d’horloge séparée. À la place, les deux appareils doivent utiliser le même débit en bauds et le même format de données. Une connexion UART de base utilise le TX pour transmettre les données, le RX pour la réception, et une masse partagée.

Dans la communication UART, la broche TX d’un appareil se connecte à la broche RX de l’autre appareil. Comme il n’y a pas d’horloge partagée, le timing doit être précis. Si la fréquence de bauds ou les réglages d’images sont incorrects, le récepteur peut afficher des données illisibles ou corrompues.

L’UART est courant dans le débogage série, les modules GPS, les modules Bluetooth, les modules Wi-Fi et la communication microcontrôleur-ordinateur. C’est facile à configurer et fonctionne bien lorsque seuls deux appareils doivent échanger des données.

Quilles UART

PinFonction
TXEnvoie des données
RXReçoit les données
GNDRéférence commune au sol
VCCAlimentation électrique, lorsque le moduleen a besoin
AvantagesLimitations
Câblage simplePrincipalement utilisé pour la réduction des deux appareils
Pas besoin de ligne d’horlogeLe débit en bauds doit correspondre sur les deux appareils
Prend en charge la communication en duplex completPas d’adressage intégré de périphérique
Facile à tester avec des moniteurs sériePas adapté à de nombreux appareils sur un seul bus partagé
Largement supporté par des microcontrôleurs et des modulesL’UART à réduction logique n’est pas destiné aux câbles prolongés sans pilote

Qu’est-ce que l’I2C ?

Figure 3. I2C

I2C est un bus série synchrone qui utilise deux lignes partagées : SDA pour les données et SCL pour l’horloge. Contrairement à UART, l’I2C peut connecter plusieurs appareils sur le même bus. Chaque appareil a une adresse, permettant au contrôleur de choisir avec quel appareil il souhaite communiquer.

L’I2C est utilisé lorsqu’un microcontrôleur doit se connecter à plusieurs périphériques à vitesse réduite en utilisant seulement deux broches de signal. Les capteurs, les horloges temps réel, les EEPROM, les extenseurs GPIO et les petits écrans utilisent souvent l’I2C.

L’I2C nécessite des résistances de tirage sur les lignes SDA et SCL. Ces résistances aident le bus à revenir à un état logiquement augmenté. Si les tractions manquent, sont trop faibles ou trop fortes, le bus peut devenir instable. Des fils allongés, trop d’appareils et une capacité accrue du bus peuvent également causer des problèmes de communication.

Broches I2C

PinFonction
SDALigne de données série
SCLLigne d’horloge série
GNDRéférence commune au sol
VCCAlimentation pour appareils connectés

Avantages et limitations de l’I2C

AvantagesLimitations
Utilise seulement deux lignes de signalisationPlus lent que SPI
Prend en charge plusieurs appareils sur un même busNécessite des résistances de tirage vers le haut
Utilise l’adressage intégré des dispositifsDes conflits d’adresses peuvent survenir
Sauvegarde les broches du microcontrôleurLimites de capacité du bus : réduction du fil et nombre d’appareils
Bon pour les capteurs et les petits périphériquesCommunication demi-duplex uniquement

Qu’est-ce que le SPI ?

Figure 4. SPI

SPI est une interface de communication série synchrone qui utilise une ligne d’horloge, des lignes de données séparées et des lignes de sélection de puce. Une connexion SPI de base utilise MOSI, MISO, SCLK et CS. MOSI envoie les données du contrôleur vers le périphérique, tandis que MISO renvoie les données du périphérique au contrôleur.

Le SPI est plus rapide que l’I2C dans de nombreux systèmes embarqués car il utilise des lignes d’émission et de réception séparées. Il supporte également la communication en duplex complet, permettant l’envoi et la réception simultanés de données. Cela rend le SPI utile pour les écrans, cartes SD, mémoires flash, ADC, DAC et autres appareils nécessitant un transfert de données plus rapide.

SPI n’utilise pas d’adresses d’appareil. À la place, chaque périphérique est sélectionné via une ligne de sélection de puce. Cela rend le contrôle des appareils direct, mais cela signifie aussi que plus de broches sont nécessaires lorsque davantage de dispositifs SPI sont ajoutés.

Broches SPI

PinFonction
MOSIDonnées du contrôleur vers le périphérique
MISODonnées du périphérique vers le contrôleur
SCLKHorloge série
CS / SSSélection de puce ou sélection esclave
GNDRéférence commune au sol
VCCAlimentation pour appareils connectés

Avantages et limitations du SPI

AvantagesLimitations
Transfert rapide de donnéesUtilise plus de broches que l’UART ou l’I2C
Prend en charge la communication en duplex completChaque appareil nécessite souvent une ligne de sélection de puce distincte
Bon pour les écrans et la mémoirePas d’adressage intégré
Aucune résistance de tirage vers le haut requise pour un fonctionnement normalLe mode horloge doit correspondre à l’appareil
Fréquence d’horloge flexibleLe câblage devient plus complexe avec de nombreux appareils

Différences entre UART, I2C et SPI

Câblage et nombre de goupilles

UART utilise TX et RX pour une réduction basique à deux appareils. I2C utilise SDA et SCL pour tous les appareils sur le même bus, ce qui permet d’économiser des broches. SPI utilise MOSI, MISO, SCLK et une ligne de sélection de puce par appareil, ce qui nécessite plus de broches à mesure que plus de périphériques sont ajoutés.

Configuration des appareilsUARTI2CSPI
Un périphérique2 lignes de signalisation2 lignes de signalisation4 lignes de signalisation
Deux périphériquesGestion supplémentaire du port UART ou du logicielMême 2 lignes de signal si les adresses diffèrent3 lignes partagées plus 2 lignes CS
Quatre périphériquesPlusieurs ports UART ou une logique de contrôle supplémentaireMême 2 lignes de signal si les adresses diffèrent3 lignes partagées plus 4 lignes CS

Vitesse et débit

SPI est le meilleur choix pour un transfert de données rapide. L’I2C est meilleur pour les appareils à faible vitesse qui envoient de petites quantités de données. La vitesse de l’UART est déterminée par le débit en bauds et est souvent suffisante pour les messages série, les données de commande et le débogage.

ProtocoleComportement de vitesseSignification pratique
UARTBasé sur le débit en baudBon pour la réduction en série, les données GPS et les commandes de module
I2CBasé sur la vitesse du bus et le comportement de tractionBon pour les capteurs, RTC, EEPROM et données de configuration
SPIEn fonction de la fréquence d’horloge et des limites des appareilsBon pour les écrans, cartes SD, ADC, DAC et mémoire flash

Nombre d’appareils

L’I2C est l’option la plus simple lorsque plusieurs appareils à faible vitesse doivent partager un même bus. SPI peut également prendre en charge de nombreux appareils, mais chaque appareil nécessite une ligne de sélection de puce distincte. UART est principalement conçu pour une communication point à point simple.

Horloge et synchronisation

UART n’utilise pas d’horloge partagée, donc les deux appareils doivent s’accorder sur le débit en bauds. I2C et SPI utilisent une ligne d’horloge contrôlée par l’appareil principal. Cela rend le timing plus direct, mais cela signifie aussi que la ligne d’horloge doit être câblée et acheminée correctement.

Distance et tolérance au bruit

UART, I2C et SPI sont les meilleurs pour la communication à courte distance, comme les pistes PCB ou les fils courts de modules. Les signaux bruts à faible logique peuvent devenir peu fiables sur des câbles étendus ou dans des environnements bruyants. Pour une distance prolongée ou une résistance au bruit plus forte, utilisez plutôt RS-485, CAN, USB ou Ethernet.

Complexité logicielle et matérielle

UART est le plus facile à configurer pour une réduction simple. L’I2C nécessite la gestion des adresses, des résistances de pull-up et du balayage du bus lors du débogage. Le SPI nécessite une polarité d’horloge correcte, une phase d’horloge, un contrôle de sélection de puce et un timing précis.

Quel protocole choisir ?

Choisissez le protocole en fonction de la vitesse, du câblage, du nombre d’appareils et des besoins de fiabilité de votre projet. Le tableau ci-dessous donne le meilleur guide de sélection.

Cas d’utilisationMeilleur choixRaison
Débogage en sérieUARTConnexion simple TX/RX
Module GPSUARTDe nombreux modules GPS utilisent une sortie série
Module série BluetoothUARTInterface commune de commandes et de données
Commandes du module Wi-FiUARTSouvent utilisé pour le contrôle de commande anti-char
Capteurs multiples à vitesse réduiteI2CPlusieurs appareils peuvent partager deux fils
Horloge temps réelI2CInterface RTC commune
EEPROMI2C ou SPII2C économise les broches, SPI donne un accès plus rapide
Petit écran OLEDI2CI2C économise les broches, SPI se rafraîchit plus vite
Affichage TFTSPIMieux pour des mises à jour d’écran plus rapides
Carte SDSPIAdapté pour augmenter le transfert de données
Mémoire flash externeSPIParfait pour un accès plus rapide à la mémoire
ADC rapide ou DACSPIMieux pour des débits de données accrus
Très limités de pins MCUI2CDeux lignes de signal peuvent supporter de nombreux dispositifs

Utilisez UART lorsque la connexion est simple et directe. Utilisez I2C lorsque plusieurs appareils réduits doivent partager un bus compact. Utilisez SPI quand la vitesse compte plus que le nombre de quilles.

Conseils de performance et de conception dans le monde réel

Figure 5. Real-World Performance and Design Tips

UART, I2C et SPI peuvent tous bien fonctionner lorsque le câblage est court, que la tension réduite est correcte et que la disposition est propre. La plupart des problèmes surviennent lorsque les fils sont trop longs, que la terre est mauvaise, que la vitesse est trop élevée ou que le bus n’est pas conçu correctement.

Pour l’UART, connectez toujours le TX au RX et le RX au TX. Les deux dispositifs doivent partager une masse et utiliser le même débit en bauds. Si la connexion doit passer par un câble étendu, utilisez une interface appropriée telle que RS-232 ou RS-485 au lieu d’un UART à réduction logique brute.

Pour l’I2C, gardez les SDA et SCL courtes et utilisez des résistances pull-up appropriées. Trop de capacité due à des fils étendus ou à de nombreux appareils peut réduire les bords du signal et provoquer des manques de communication. Si le bus est instable, réduisez la vitesse, raccourcissez les fils ou utilisez un tampon I2C.

Pour SPI, gardez les lignes d’horloge et de données courtes et propres. Le SCLK est sensible au timing, donc un mauvais routage peut entraîner des données incorrectes à des vitesses élevées. Si la communication SPI échoue, réduisez la fréquence d’horloge et vérifiez le timing de sélection de la puce.

Problèmes courants et dépannage

ProtocoleProblème courantCause probableFix
UARTTexte brouilléMauvais taux de baudsCorrespondance du débit de bauds sur les deux appareils
UARTAucune donnée reçueTX et RX non croisésConnecter TX à RX et RX à TX
UARTDonnées aléatoiresMauvaise référence au solReliez les terrains ensemble
UARTLa communication s’arrêteDésaccord de tension logiqueVérifiez la compatibilité 3,3 V et 5 V
I2CAppareil non détectéMauvaise adresseVérifier la fiche technique ou scanner le bus
I2CBus bloqué réduitSDA ou SCL maintenu réduitRéinitialisez l’appareil ou redémarrez le bus
I2CLectures instablesTractions manquantes ou faiblesAjouter des résistances de tirage adaptées
I2CConflit d’adressesDeux appareils partagent la même adresseChanger de broche d’adresse ou utiliser un multiplexeur
SPIPas de réponseMauvaise broche de sélection de puceVérifiez le câblage et le code CS
SPIDonnées erronéesMauvais mode d’horlogeAssociez le CPOL et le CPHA à la fiche technique
SPIFonctionne uniquement à vitesse réduiteProblème de synchronisation ou de disposition des feuxRéduire la fréquence d’horloge ou améliorer le routage
SPIPlusieurs appareils répondentPlus d’un CS actifGarder les appareils inactifs désélectionnés

Un analyseur logique est utile pour vérifier les trames UART, les adresses I2C, les signaux ACK, le mode d’horloge SPI et le comportement de sélection de puce.

Conclusion

Le choix entre UART, I2C et SPI dépend de la vitesse de votre projet, du câblage et du nombre d’appareils. Utilisez UART pour une communication simple entre deux appareils et un débogage, I2C pour plusieurs périphériques à vitesse réduite avec moins de broches, et SPI pour des appareils plus rapides tels que les écrans, cartes SD, mémoire flash et convertisseurs à vitesse accrue. Pour obtenir le meilleur résultat, adaptez le protocole aux exigences de l’appareil, maintenez le câblage court, vérifiez la réduction de la tension et vérifiez les réglages de timing avant de finaliser la conception.

Foire aux questions [FAQ]

Q1. Lequel est meilleur : UART, I2C ou SPI ?

UART est idéal pour une communication simple entre deux appareils. L’I2C est idéal pour connecter plusieurs appareils à vitesse réduite avec moins de broches. Le SPI est meilleur lorsque le transfert de données est plus rapide.

Q2. SPI est-il plus rapide que I2C et UART ?

Oui, SPI est souvent plus rapide car il utilise une ligne d’horloge et des lignes de données séparées. L’I2C est réduit mais économise les broches. La vitesse de l’UART dépend du débit en bauds sélectionné.

Q3. Quand devrais-je utiliser I2C au lieu de SPI ?

Utilisez l’I2C lorsque vous devez connecter plusieurs capteurs ou petits périphériques en utilisant seulement deux lignes de signal. Il est utile pour les RTC, EEPROM, extensions GPIO et petits écrans. Assurez-vous simplement que les résistances de tirage sont correctes.

Q4. Quand devrais-je utiliser l’UART ?

Utilisez UART pour des modules GPS simples, des modules Bluetooth et des interfaces de commande Wi-Fi réduites de point à point. C’est facile à câbler et à tester. Il n’est pas adapté à de nombreux appareils sur un seul bus partagé.

Q5. L’UART, l’I2C ou le SPI peuvent-ils fonctionner sur des câbles étendus ?

Ils sont meilleurs pour les pistes courtes de PCB ou les fils courts de module. Les câbles allongés peuvent provoquer du bruit, des problèmes de synchronisation et des signaux instables. Pour de longues distances, utilisez RS-485, CAN, USB ou Ethernet.

Q6. Comment puis-je dépanner les problèmes d’UART, I2C ou SPI ?

Pour l’UART, vérifiez le câblage TX/RX, la masse et le débit en bauds. Pour l’I2C, vérifiez l’adresse, les résistances de tirage et les lignes SDA/SCL. Pour SPI, vérifiez la sélection de puce, le mode d’horloge et la fréquence d’horloge.