Liaison série RS232

 

Le mot (octet) à transmettre est envoyé bit par bit (poids faible en premier) par l’émetteur, vers le récepteur qui le reconstitue.

La vitesse de transmission de l’émetteur doit être identique à la vitesse d’acquisition du récepteur. Cette vitesse est exprimée en BAUDS (un baud correspond à un bit / seconde, dans notre cas). Il existe différentes vitesses normalisées : 9600, 4800, 2400, 1200… bauds.

La communication peut se faire dans les deux sens (duplex), soit émission d’abord, puis réception ensuite (half-duplex), soit émission et réception simultanées (full-duplex).
La transmission étant du type asynchrone (pas d'horloge commune entre l’émetteur et le récepteur), des bits supplémentaires sont indispensables au fonctionnement : bit de début de mot (start), bit(s) de fin de mot (stop).

D’autre part, l’utilisation éventuelle d’un bit de parité, permet la détection d’erreurs dans la transmission.


Description
RS232 Connector

Ce port peut se présenter sous la forme d'un connecteur 9 ou 25 broches (le nom du connecteur est DB-9 ou DB-25 suivant le nombre de broches). Seule la version 25 broches est vraiment standardisée, la 9 broches est une adaptation d'IBM lors de la création du PC. La transmission des éléments d'information (ou bit) s'effectue bit par bit, de manière séquentielle.


Utilisation

Placé à l'arrière de l'ordinateur, il était en général occupé par une souris ou un modem d'ancienne génération (fréquemment de type modem RTC), il pouvait aussi être utilisé pour le transfert des clichés numériques depuis l'appareil photo vers le disque dur du PC.

Bien que ce port de communication ait tendance à être remplacé par l'USB sur les PC, il reste encore très utilisé dans l'industrie, notamment grâce à sa robustesse et à sa simplicité. Ainsi, ce port est toujours d'actualité, en particulier dans les systèmes automatisés : le transfert de lignes de programme pour machines-outils à commande numérique s'effectuent toujours par liaison RS-232.

En cas d'absence de ceux-ci, il existe des adaptateurs USB/port série.

De même, de nombreux terminaux embarqués (qu'ils soient GPS, modems, terminaux graphiques, etc.) utilisent le RS-232 comme méthode principale de communication avec l'extérieur. Fréquemment, les périphériques réseau (routeurs, commutateurs, etc.) sont équipés d'un port RS-232 au travers duquel il est possible de les configurer.


Interface série asynchrone

Ce type de liaison, que l’on confond de plus en plus souvent avec les liaisons RS 232, définit en fait un protocole de transfert de données au moyen d’un fil de signal et d’un fil de masse. La norme RS 232 quant à elle précise les niveaux électriques des signaux chargés de véhiculer ce protocole et y ajoute un certain nombre de signaux de contrôle. Du fait de sa généralisation, on amalgame trop souvent liaison série asynchrone et norme RS 232, alors qu’en fait il suffit d’utiliser tel ou tel circuit d’adaptation de niveau pour transformer une liaison série asynchrone en liaison RS 232, mais aussi RS 422, TTL ou, pourquoi pas, tout autre niveau adapté à vos besoins.


Principe d’une liaison série asynchrone


Pour établir une liaison série à partir des données parallèles contenues dans la mémoire de n'importe quel système informatique, il suffit d’utiliser un registre à décalage, en mode parallèle - série à l’émission et série - parallèle à la réception. Cela fonctionne très bien et conduit à réaliser ce que l’on appelle une liaison série synchrone. Ce type de liaison présente toutefois un inconvénient : il impose de transmettre une horloge, en plus des données, afin que les registres à décalage utilisés de chaque côté de la liaison fonctionnent rigoureusement à la même vitesse. Dans le cas contraire, c’est la panique assurée, même si les horloges sont pilotées par quartz des deux côtés. En effet, le registre à décalage récepteur doit commencer à traiter les données reçues à un moment bien précis par rapport à leur instant d’émission, faute que quoi il risque de convertir en parallèle un mot constitué par la fin d’un caractère et le début du suivant.

L'idée de la liaison série asynchrone reste la même que celle de la liaison série synchrone. De ce fait, il existe à l'émission et à la réception deux horloges qui doivent fonctionner à la même fréquence. Par contre, ces fréquences peuvent différer de quelques pour cent et, surtout, les horloges n'ont pas besoin d'être synchronisées. La mise en œuvre d'une telle liaison est donc très aisée puisqu'il suffit de réaliser, côté émission et coté réception, une horloge à quartz toute simple.

Toute l'astuce d'une liaison série asynchrone repose sur la forme des signaux envoyés ; signaux qui permettent une synchronisation du récepteur sur chaque caractère reçu. Examinez la figure ci-dessous qui représente la transmission asynchrone de l'octet 11001000. Au repos la ligne de transmission est à l'état logique haut. La transmission débute par le passage à 0 de cette ligne pendant une période de l'horloge de transmission ce qui constitue le bit de « start » (ce qui signifie début ou départ). Les bits du mot à transmettre sont ensuite envoyés derrière ce bit de « start » comme dans une transmission série synchrone et, après le dernier bit utile, la ligne passe à nouveau à l'état haut pendant une ou deux périodes d'horloge pour constituer ce que l'on appelle le ou les bits de « stop ».

 

RS232 stream

 

En d'autres termes, chaque caractère est encadré par deux bits particuliers qui en précisent le début et la fin.

Ces bits sont automatiquement mis en place et enlevés par les circuits chargés de gérer la liaison. Leur présence est donc transparente pour l'utilisateur qui se contente d'écrire le mot à transmettre dans un registre pour faire une émission tout comme il se contente de venir lire le mot reçu dans un autre registre pour faire une réception.

Les vitesses de transmission des données sur une telle liaison se mesurent en bauds et il existe un certain nombre de valeurs normalisées que nous allons voir dans quelques instants. Un baud étant égal à un bit par seconde dans ce cas et la transmission d'un caractère (c'est à dire d'un octet si on utilise le code ASCII) nécessitant en général 10 bits, on parle aussi de vitesse de transmission en caractères par seconde qui est donc égale à la vitesse en bauds divisée par 10. Du 300 bauds est ainsi du 30 caractères par seconde.

Sur de nombreuses liaisons séries asynchrones, afin de disposer d'un moyen simple de contrôle de l'exactitude de la transmission, on introduit la notion de parité grâce à l'envoi d'un bit supplémentaire réservé à cet effet.

Le principe de ce bit de parité est le suivant : on compte les bits utiles du caractère transmis (c'est à dire les bits du caractère transmis seulement et non le « start » et le ou les « stop ») et selon que leur nombre est pair ou impair, on met à 1 ou à 0 le bit de parité. Ce travail est fait à l'émission et le bit de parité est donc émis comme faisant partie du caractère transmis ainsi que le montre la figure. A la réception, on refait le même compte et on compare la parité ainsi obtenue avec celle reçue. Si elles sont différentes, il y a certainement eu erreur dans la transmission (due à un parasite qui a fait changer un bit d'état par exemple). S'il y a identité, cela ne veut pas dire que la liaison s'est bien passée à 100 % car deux bits peuvent avoir changé d'état en sens contraire simultanément, mais cela donne tout de même une indication relative quant à sa qualité.

 

RS232 stream 2

 

Cette parité peut être paire ou impaire. En parité paire, le bit de parité est positionné pour que le nombre total de bits à 1 (y compris celui de parité) soit pair.

En parité impaire, le bit de parité est positionné pour que le nombre total de bits à 1 (y compris celui de parité) soit impair

La présence et le traitement de ces bits de parité n'ont rien d'obligatoires et on peut les rencontrer ou non sur toute liaison série asynchrone. Il est même tout à fait possible de faire fonctionner une liaison avec des parités différentes à l'émission et à la réception ; le récepteur indiquera dans ce cas une erreur de parité permanente mais, si le logiciel associé est bien écrit, il ne se bloquera pas et recevra tout de même les caractères correctement. De même, il est possible d'envoyer des caractères avec parité à des appareils incapables de traiter cette dernière. Bien sûr, lorsque c'est possible, il est préférable de travailler comme il faut et il faut programmer les mêmes parités en émission et en réception pour conserver à ce bit toute sa signification.


La norme RS232


Les signaux logiques aux niveaux TTL ou CMOS acceptent assez mal de voyager sur plus de quelques centimètres car leurs formes se dégradent alors à un point tel que leur exploitation devient impossible. Pour établir une liaison série sur une distance raisonnable, allant de quelques dizaines de centimètres à plusieurs centaines de mètres, diverses normes ont donc vu le jour. Même si elle commence à être quelque peu attaquée par la norme RS 422 ; la célèbre norme RS 232 a encore un bel avenir devant elle vu sa présence quasi constante sur tous les équipements informatiques.

Cette norme RS 232, appelée aussi CCITT V24 ou encore V24 « tout court », est d'origine américaine et définit deux choses : les niveaux électriques des signaux utilisés pour la transmission mais aussi un certain nombre de lignes, autres que les lignes d'émission et de réception de données, ayant des fonctions de contrôle. Cette norme est très précise et, théoriquement, il est possible de connecter directement et sans problème deux équipements qui la respectent ; malheureusement ce n'est pas toujours le cas car de nombreux appareils ne suivent qu'une partie de la norme.

Au point de vue niveau, cette norme est très simple : tout signal de niveau compris entre +3 et +25 volts est considéré comme étant au niveau logique A alors que tout signal compris entre -3 et -25 volts est considéré comme étant au niveau logique B. A et B sont quelconques et peuvent être 0 ou 1 selon que l'on travaille en logique positive ou négative.

Cette norme définit aussi un certain nombre de lignes de contrôle, présentées avec leurs appellations officielles sur la figure ci-dessous, conjointement au brochage de la prise à utiliser - une prise DB25 à 25 points - elle aussi imposée par la norme. Comme les micro-ordinateurs compatibles PC sont devenus des standards et sont maintenant très répandus, nous avons ajouté sur cette même figure le brochage utilisé sur les prises DB9 à 9 points utilisées sur ces appareils.


Brochage


DB9 Connector
DB25 Connector
Broche DB25 Broche DB9 Nom US Nom EIA
DTE DCE
N° CCITT
Fonction
1 - FG PG X X - Masse châssis
2 3 TD BA S E 103 Emission de données
3 2 RD BB E S 104 Réception de données
4 7 RTS - S E 105 Demande d’émission
5 8 CTS CB E S 106 Prêt à émettre
6 6 DSR CC E S 107 Poste de données prêt
7 5 SG AB E S 102 Masse électrique
8 1 DCD CF E S 109 Détection de porteuse
9 - - - - - -
10 - - - - - -
11 - - - - - -
12 - SDCD - E S - DCD secondaire
13 - SCTS - E S - CTS secondaire
14 - STD - S E - TD secondaire
15 - TC DB 114 Horloge d’émission
16 - SRD - E S - RD secondaire
17 - RC DD 115 Horloge de réception
18 - - - -
19 - SRTS - - RTS secondaire
20 4 DTR CD S E 108 Terminal de données prêt
21 - SQ - - Qualité du signal
22 9 RI CE E S 125 Indicateur de sonnerie
23 - - - -
24 - ETC DA 113 Horloge d’émission externe
25 - - - -

DTE signifie Data Terminal Equipment et correspond en général au PC, alors que DCE signifie Data Communication Equipement et correspond au périphérique.

En résumé, les signaux les plus utilisés en micro informatique (plus de 99 % des cas) sont FG et SG qui sont très souvent reliés entre eux, RD et TD puisque ce sont eux qui assurent la transmission proprement dite et ensuite, RTS, CTS, DCD, DTR et DSR. Par ailleurs, la fonction de ces signaux est souvent simplifiée ; DTR par exemple est fréquemment couplée aux lignes d'alimentation de l'appareil et passe au niveau haut lorsque celui-ci est mis sous tension.

Sur de nombreux matériels, la simplification va encore plus loin puisque parfois ne restent que SG (la masse), RD et TD. Cela suffit pour établir une liaison série asynchrone mais peut conduire à des problèmes si l'équipement auquel vous reliez un tel appareil exploite certains signaux de contrôle. Le cas le plus classique est un blocage de l'ensemble du au fait, par exemple, que l'appareil connecté attend DTR ou CTS pour travailler.

Pour en finir avec cette norme RS 232, sachez qu'elle permet d'établir des connexions fiables sur plusieurs dizaines à quelques centaines de mètres selon la vitesse de transmission utilisée. Plus la vitesse est élevée, plus la connexion doit être courte. Ces vitesses sont normalisées et les valeurs principales en bauds en sont les suivantes: 75, 110, 150, 300, 600, 900, 1200, 2400, 3600, 4800, 7200, 9600,19200 et, plus rarement tout de même, 38400 et 76800 bauds. Je vous rappelle que la vitesse en caractères par seconde s'obtient en divisant ces valeurs par 10 dans le cas d'une transmission classique telles celles que j'ai décrites ci-dessus.