USART, UART, RS232, USB, SPI, I2C, TTL, etc.


166

En tant que novice amateur d'électronique, j'ai entendu ces termes et plus encore en être jetés partout. À la base, je comprends qu’elles reposent toutes sur la communication entre appareils, ordinateurs, périphériques, etc.

J'ai une compréhension de base de leur fonctionnement, mais je suis confus de voir autant d’entre eux et j’ai du mal à comprendre comment ils se rapportent les uns aux autres. Par exemple, UART est-il un sous-ensemble de USART? Quelle est la différence entre RS232 et série? Quelles sont les différences fondamentales entre toutes ces méthodes de communication: fiabilité, coût, application, vitesse, configuration matérielle requise?

Si vous pouvez imaginer, tous ces termes sont écrits sur des cartes, éparpillées sur la table à café, et j'ai besoin de quelqu'un pour m'aider à organiser ma compréhension. Pardonnez-moi si cette question est un peu vague, mais j'estime vraiment que c'est la nature même de cette question.


Réponses:


253

Serial est un terme générique pour tout ce qui est "Time Division Multiplexed", pour utiliser un terme coûteux. Cela signifie que les données sont envoyées étalées dans le temps, le plus souvent un bit après l'autre. Tous les protocoles que vous nommez sont des protocoles série.

UART, pour Universal Asynchronous Receiver Transmitter, est l’un des protocoles série les plus utilisés. C'est presque aussi vieux que moi et très simple. La plupart des contrôleurs ont un UART matériel à bord. Il utilise une seule ligne de données pour la transmission et une autre pour la réception des données. Le plus souvent, des données de 8 bits sont transférées, comme suit: 1 bit de début (niveau bas), 8 bits de données et 1 bit d’arrêt (niveau haut). Le bit de démarrage de niveau bas et le bit d'arrêt de niveau haut signifient qu'il y a toujours une transition haute à basse pour démarrer la communication. C'est ce qui décrit UART. Aucun niveau de tension, vous pouvez donc l'avoir à 3,3 V ou 5 V, selon l'utilisation de votre microcontrôleur. Notez que les microcontrôleurs souhaitant communiquer via UART doivent se mettre d'accord sur la vitesse de transmission, le débit binaire, car ils ne disposent que du front descendant des bits de début pour se synchroniser. Cela s'appelle une communication asynchrone.

Pour les communications longue distance (il n’est pas nécessaire que ce soit des centaines de mètres), l’UART 5 V n’est pas très fiable, c’est pourquoi il est converti en une tension plus élevée, généralement +12 V pour un "0" et -12 V pour un " 1". Le format de données reste le même. Ensuite, vous avez le RS-232 (que vous devriez appeler EIA-232, mais personne ne le fait.)

La dépendance temporelle est l’un des gros inconvénients d’UART, et la solution est USART , pour l’émetteur-récepteur synchrone / asynchrone universel. Cela peut faire UART, mais aussi un protocole synchrone. En mode synchrone, il n'y a pas que des données, mais aussi une horloge transmise. À chaque bit, une impulsion d'horloge indique au récepteur qu'il doit verrouiller ce bit. Les protocoles synchrones ont besoin d'une bande passante plus importante, comme dans le cas du codage Manchester, ou d'un fil supplémentaire pour l'horloge, comme SPI et I2C.

SPI (Serial Peripheral Interface) est un autre protocole série très simple. Un maître envoie un signal d'horloge qui, à chaque impulsion d'horloge, transmet un bit à l'esclave et un bit entrant en provenance de l'esclave. Les noms de signal sont donc SCK pour horloge, MOSI pour Master Out Slave In et MISO pour Master In Slave Out. En utilisant les signaux SS (Slave Select), le maître peut contrôler plusieurs esclaves sur le bus. Il existe deux manières de connecter plusieurs périphériques esclaves à un maître. L’une d’elles est mentionnée ci-dessus, c’est-à-dire l’utilisation de la sélection esclave;

I2C(Inter-Integrated Circuit, prononcé "I squared C") est également un protocole synchrone, et c'est le premier que nous voyons qui possède une certaine "intelligence"; les autres bougeaient bêtement les bits, et c'était tout. I2C utilise seulement 2 fils, un pour l'horloge (SCL) et un pour les données (SDA). Cela signifie que le maître et l'esclave envoient des données sur le même fil, à nouveau contrôlé par le maître qui crée le signal d'horloge. I2C n'utilise pas de sélections d'esclaves distinctes pour sélectionner un périphérique particulier, mais dispose d'un adressage. Le premier octet envoyé par le maître contient une adresse de 7 bits (de sorte que vous pouvez utiliser 127 périphériques sur le bus) et un bit de lecture / écriture, indiquant si le ou les octets suivants doivent également provenir du maître ou doivent provenir du esclave. Après chaque octet, le destinataire doit envoyer un "0" pour accuser réception de l'octet. que le maître verrouille avec une neuvième impulsion. Si le maître veut écrire un octet, le même processus se répète: le maître met bit par bit sur le bus et donne à chaque fois une impulsion d'horloge pour signaler que les données sont prêtes à être lues. Si le maître veut recevoir des données, il ne génère que les impulsions d'horloge. L'esclave doit veiller à ce que le bit suivant soit prêt lorsque l'impulsion d'horloge est donnée. Ce protocole est breveté par NXP (anciennement Phillips) afin de réduire les coûts de licence. Atmel utilise le mot TWI (interface à 2 fils) exactement identique à I2C. Par conséquent, tout appareil AVR n’aura pas I2C, mais il aura TWI. Si le maître veut recevoir des données, il ne génère que les impulsions d'horloge. L'esclave doit veiller à ce que le bit suivant soit prêt lorsque l'impulsion d'horloge est donnée. Ce protocole est breveté par NXP (anciennement Phillips) afin de réduire les coûts de licence. Atmel utilise le mot TWI (interface à 2 fils) exactement identique à I2C. Par conséquent, tout appareil AVR n’aura pas I2C, mais il aura TWI. Si le maître veut recevoir des données, il ne génère que les impulsions d'horloge. L'esclave doit veiller à ce que le bit suivant soit prêt lorsque l'impulsion d'horloge est donnée. Ce protocole est breveté par NXP (anciennement Phillips) afin de réduire les coûts de licence. Atmel utilise le mot TWI (interface à 2 fils) exactement identique à I2C. Par conséquent, tout appareil AVR n’aura pas I2C, mais il aura TWI.

Deux signaux ou plus sur le même fil peuvent provoquer des conflits et vous auriez un problème si un périphérique envoie un "1" tandis que l'autre envoie un "0". Par conséquent, le bus est câblé: deux résistances le poussent à un niveau élevé et les périphériques n’envoient que des niveaux bas. S'ils veulent envoyer un niveau élevé, ils libèrent simplement le bus.

TTL (Transistor Transistor Logic) n'est pas un protocole. C'est une technologie plus ancienne pour la logique numérique, mais le nom est souvent utilisé pour faire référence à la tension d'alimentation de 5 V, faisant souvent référence à tort à ce que l'on devrait appeler UART.


Sur chacun de ces sujets, vous pouvez écrire un livre, et il semble que je suis bien parti. Ceci est juste un très bref aperçu, laissez-nous savoir si certaines choses nécessitent des éclaircissements.


+1 uniquement sur TTL, je suppose que l'OP signifie Serial TTL, ce qui, d'après mon expérience, décrit les signaux UART avant l'émetteur / récepteur de bus RS232.
Kenny

4
@Kenny - mais il n'y a pas une telle chose comme "serial TTL". C'est UART. Et si la tension est de 3,3 V? Le TTL fait uniquement référence au 5 V.
stevenvh

C'est ce dont je parle, les entrées / sorties UART sont souvent appelées dans mon expérience TTL Serial.
Kenny

Réponse étonnante! Je le lirai encore quelques fois et vous ferai savoir si j'ai des questions. Merci Steven.
capcom

8
Un meilleur pari serait de pêcher pour l'âge Uart alors :-)
Vaibhav Garg

11

Ceci est très proche du territoire de quelque chose où vous seriez plus doué pour lire des articles que de poser des questions pour obtenir des réponses personnalisées, mais pour aborder un point majeur que les fabricants ont parfois du flou:

Il existe deux types d'interface série: synchrone et asynchrone.

Les interfaces synchrones ont les données transmises avec leur synchronisation par rapport à une horloge explicite, qui est également fournie. L'exemple classique en est SPI, mais il existe également des formes spéciales telles que I2S pour les convertisseurs audio, les interfaces de configuration JTAG, FPGA, etc. De nombreux canaux de communication parallèles ne sont que cette idée, qui permet de déplacer plusieurs bits à la fois. Souvent mais pas toujours, ceux-ci envoient le bit le plus significatif en premier.

Les interfaces asynchrones ont la synchronisation codée dans le flux de données lui-même. Pour les "ports série" et les normes associées telles que RS232, la synchronisation du mot est relative au bit de début et le récepteur échantillonne simplement la ligne aux intervalles appropriés par la suite. D'autres interfaces peuvent être un peu plus compliquées et nécessitent une récupération d'horloge plus sophistiquée à l'aide de boucles et d'algorithmes à phase asservie. Un UART est un "émetteur récepteur asynchrone universel" - en réalité, il s'agit du nom d'un bloc fonctionnel souvent utilisé pour implémenter un "port série" avec une certaine flexibilité en termes de longueur de mot, de vitesse et de conditions de début / fin. Des éléments tels que RS232, RS422, etc. sont des normes pour la signalisation électrique externe des données que vous obtiendrez - tension, asymétrique ou différentielle, si un 1 est élevé ou faible, etc.

Le "USART" peut être une source de confusion légitime, car il s’agit d’une sorte de périphérique hybride, un "émetteur-récepteur synchrone / asynchrone universel". Il est essentiellement utilisé comme un UART, mais il peut également être configuré pour: générer (ou considérer) une horloge distincte synchronisée avec les données, et peut éventuellement inverser l'ordre des bits. Il est généralement configurable pour interagir avec SPI, mais il peut ne pas être en mesure de supprimer le temps dédié aux bits de démarrage / d'arrêt, ainsi que de fonctionner avec quelque chose comme I2S, qui peut s’attendre à ce que les données circulent en continu sans espace entre les mots.


Très belle explication (Y) J'ai adoré la brièveté. Merci @chris
Avi Mehenwal

8

RS-232 est un protocole série très simple utilisé à l'origine pour les modems et les télétypes. C'est ce qu'on appelle communément un port série (ou un port COM sous MS-Windows). Sur la ligne, il utilise nominalement des niveaux de ± 12V, mais ils peuvent varier considérablement car la détection est spécifiée à ± 3V. Il y a toujours un pilote de ligne (de nos jours généralement de la famille MAX232) qui convertit ces niveaux vers et depuis les niveaux de signaux numériques internes d'un ordinateur ou d'un microcontrôleur.

TTL signifie Transistor-Transistor-Logic et a son niveau pour le zéro logique près de 0V et pour le niveau logique près de 5V. Une logique 5V est souvent appelée TTL, bien que la plupart des circuits actuels soient construits en tant que CMOS. Aujourd'hui, de nombreux circuits fonctionnent à 3,3 V, ce qui n’est plus du TTL.

En ce qui concerne les niveaux internes, les niveaux de la ligne RS-232 sont inversés, +12 V correspond au niveau bas logique et -12 V correspond au niveau haut logique, ce qui peut prêter à confusion.

Pour décrire le format de données, on montre généralement le signal logique. Lorsque la ligne est inactive, elle est haute. Une transmission commence par un bit de début faible, les bits de données avec le bit le moins significatif en premier, un bit de parité facultatif et un à deux bits d'arrêt (1 logique). Cela s'appelle une transmission asynchrone, car les bits de départ et d'arrêt synchronisent les données pour chaque octet séparément.

Un émetteur-récepteur universel asynchrone (UART) est un appareil dans un ordinateur ou un microcontrôleur qui effectue ce type de communication asynchrone.

Un émetteur récepteur USART (Universal Asynchronous Synchronous Receiver Transmitter, émetteur-récepteur universel synchrone asynchrone) est un appareil qui peut en outre effectuer des types de transmission synchrone, d'où le type supplémentaire S. Quel type varie, vous devez le rechercher dans la fiche technique.

SPI, I²C et USB sont des histoires différentes (et dans le cas d’une clé USB très longue).


1

Je suis d'accord avec ce qui a été mentionné à propos des protocoles SPI et CAN. Pour améliorer les performances, le protocole CAN a été conçu. Dans ce concept d'arbitrage, deux dispositifs sont prêts à communiquer, puis en fonction de leur priorité, la transmission ou la réception a lieu. CAN est largement utilisé dans de nombreuses industries.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.