Communication série au sein d'un système ⚓
Bus série / parallèle
Dans un système les composants ont très souvent besoin d'être reliés entre eux pour communiquer (transfert de donnée, envoie d'instruction, ...). Lorsque ces composants sont nombreux, plutôt que d'ajouter pour chaque composant des liens directs, chaque composant est relié à un bus.
Un Bus est caractérisé par
Une Fréquence
Un nombre de bit qu'il peut transmettre simultanément
Lorsqu'un bus peut transmettre plus d'un bit d'information simultanément, on parle de bus parallèle, sinon d'un bus série.

Pour connecter un disque dur à une carte mère on utilise soit de l'IDE (bus parallèle) soit du SATA (bus série)
Débit binaire
Le débit binaire d'un bus est le produit de la fréquence maximale à laquelle un transfert peut avoir lieu par le nombre de bits d'information qu'il peut transmettre simultanément.
Exemple :
Un bus parallèle de 32 bits dont le signal a une fréquence de 33 mégahertz pourrait transmettre jusqu'à :
\(32 \ bits × 33.10^6 \ bits\ par\ seconde\) soit 1 067 Mbits/s ;
\(4 \times 33.10^6\ octets\ par\ seconde\) soit 133 Mo/s.
Bus parallèle
La figure ci-contrre représente une vue schématique du flux d'information circulant dans un système à microprocesseur (CPU). Dans ce système le CPU sélectionne, via le bus d'adresse, le périphérique avec lequel il souhaite échanger des données par le bus de donnée (Data Bus). Le bus de contrôle lui peut indiquer le sens de cette communication (lecture ou écriture). Cet aiguillage, très employé dans les systèmes à base de processeur, permet d'alléger les connections directes au CPU.

Bus série
Un bus série permet de transmettre les informations bit par bit. Il comporte cependant plus d'une ligne permettant de transmettre des informations par l'addition d'éventuels signaux de contrôle et généralement par l'utilisation de deux lignes distinctes permettant ainsi à ces bus d'être bidirectionnels afin de permettre la transmission d'information dans les deux directions simultanément.
Le chronogramme ci-dessus est un exemple de « trame » I2C. Le bus série transmettant les données bit par bit, il est nécessaire lorsque l'on veut par exemple transmettre un mot de 32 bits de sérialiser l'information pour sa transmission. Ceci nécessite des composants additionnels.
L'intérêt principal de ce type de bus (outre un câblage simplifié par rapport à un bus parallèle) est que pour un coût moindre (grâce au faible nombre de conducteurs de données) il permet - en faisant appel à des composants électroniques de haute qualité - de dépasser les débits atteints par des bus parallèles.
Utilisation : Disque durs récents (FC, SAS, ou SATA), une liaison USB peut être apparentée à un Bus série, communication dans les systèmes embarqués (Bus I2C), automobile (Bus CAN), ...
Le port série (UART)
Le port série (UART) est un port de communication qui était très répandu sur les PC jusqu'il y a peu. Il est par contre présent sur la totalité des systèmes embarqués. C'est un protocole série, qui permet de transmettre des trames de bits les unes à la suite des autres. Pour que la communication fonctionne, les deux dispositifs désirant communiquer ensemble doivent se mettre d'accord sur un certain nombre de points :
le nombre de bits par trame : généralement 8, mais ça peut aller de 5 à 11.
la durée de chaque bit : pour une communication lente mais sûre, on utilise traditionnellement une vitesse de 9600bps, pour une transmission rapide on transmet à 115200bps. D'autres vitesses sont possibles (de 1200bps à 10Mbps).
la présence ou non d'un bit de parité (paire qu'on note E, ou impaire qu'on note O), permettant de détecter certaines erreurs de transmission. Si on ne met pas de bit de parité, ce qui est le cas la plupart du temps, on note ça N.
la durée du "bit" de stop (le bit de fin de trame) : 0.5, 1, 1.5, ou 2 bits. Généralement 1 bit.
L'état de repos est l'état haut (VCC).
Le format standard d'une trame au format 115200 8N1 (8 bits de données, pas de parité, 1 bit de stop, 115200bps, soit 115200 8N1 en abrégé) est celui-ci :
Le périphérique se chargeant de formater les trames et de les envoyer / les réceptionner est appelé UART. Dans un microcontrôleur standard, il en existe de 1 à 4 (voire plus).
En pratique
Les PC portable ne sont plus équipés de port série, et les PC nécessitent un adaptateur de tension (pour des raisons historiques, l'état haut correspond à une tension de -9 à -15V, et l'état bas à une tension de +9 à +15V), ce qui n'est pas pratique.
De part sa conception, ce système permet donc un dialogue souple et des réalisations très modulaires (seulement deux fils à connecter). Ce type de connexion présente aussi un avantage économique (réduction du prix des boîtiers et de la connectique associée). De plus, au niveau des études, il est facile de réutiliser des modules ou des sous-programmes déjà fabriqués.
Le code ASCII
Historiquement, pour représenter les caractères sur un système informatique, on a utilisé un codage simplifié où à 1 nombre correspondait un caractère. L'intérêt de cette façon de faire, c'est de permettre de coder les caractères sur 1 seul octet (au lieu de coder tous les pixels du caractère...) .
Activité : L'UART d'Arduino
Un compte-rendu pour deux est à déposer dans restitution de devoir.
Transmission de données d'un équipement 1 (un microcontrôleur Arduino) à un équipement 2 (PC, GPS, émetteur Bluetooth, microcontrôleur ....) .
Données à transmettre existent sous forme parallèle (octet) et sont transmises sous forme série (LSB en premier)
Données reçues sous forme série (LSB en premier ...:-) puis reconditionnées sous forme d'octet.
Pour permettre une liaison plus rapide les données sont stockées dans un buffer (mémoire tampon) d'une capacité de 64 octets.
Entre 2 équipements les fils sont croisés : Tx1 relié à Rx2 et Tx2 relié à Rx1 (voir figure)
Les niveaux de tension sont de type TTL soit 0 V pour le niveau bas et +5V pour le niveau haut.
Asynchrone car aucune horloge (bit clock) n'est transmise entre l’émetteur et le récepteur. Le récepteur ignore quand il va recevoir une donnée.
Afin de faciliter l'interopérabilité entre périphériques des vitesses de transmission sont normalisées par multiples et sous-multiples de 9600 baud, l'unité baud correspondant à une vitesse de transmission de un bit par seconde.
Avantages : standardisée, universelle, pas cher, 3 fils suffisent (émission Tx, réception Rx, masse GND) et souvent l'alimentation + 5 V
Inconvénients : Assez lent. (maximum pour un Arduino : 115200 bauds)
Une liaison UART ne permet que de relier 2 équipements.
Constitution d'une trame UART Arduino :
un bit de start toujours à 0 : servant à la synchronisation du récepteur
les données : pour un code Ascii étendu 8 bits (un octet)
et un bit de stop toujours à 1
Le niveau logique de repos est le 1.
En combien de temps max une carte Arduino pourrait transmettre une image de 2,2Mo (Mega octets) ?
Sous tinkercad réaliser le montage suivant :
Lancer la simulation et commenter le signal observé à l'oscilloscope
Identifier sur la trame le bit de start de bit de stop et les 8 bits de données.
D0 | D1 | D2 | D3 | D4 | D5 | D6 | D7 |
Réaliser le montage avec un carte Arduino et un oscilloscope réels.
Mesurer la vitesse de transmission de la tram à l'oscilloscope
Réaliser la même analyse en envoyant le mot "Bonjour" à 115200 bauds
Utiliser l'analyseur logique pour décoder automatiquement la chaîne de caractère
Impossible d'accéder à la ressource audio ou vidéo à l'adresse :
La ressource n'est plus disponible ou vous n'êtes pas autorisé à y accéder. Veuillez vérifier votre accès puis recharger la vidéo.
