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.