LE PORT SERIE |
1) Introduction : La prise série est généralement utilisée en conjonction avec une souris ou un modem. Ce port a l'avantage d'être compact et de ne posséder que quelques signaux utiles. Plus difficile à mettre en oeuvre que le port parallèle, la prise série se révèle cependant plus puissante et plus universelle. 2) Géométrie : A l'origine, tous les compatibles PC possèdent 2 ports séries: COM1 et COM2. L'un d'entre-eux se présente sous la forme d'une prise DB9 mâle et le deuxième, sous la forme d'une DB25 mâle. DB9 Mâle (vue de devant) ------------- \ 1 2 3 4 5 / \ 6 7 8 9 / --------- DB25 Mâle (vue de devant) ------------------------------ \ 1 2 3 4 5 7 8 ... 13 / \ 14 15 16 17 18 .......25 / -------------------------- Description et attribution des signaux :
Broche DB9 Borche DB25 Nom ----------------------------------- 1 8 DCD 2 3 RX 3 2 TX 4 20 DTR 5 7 GND 6 6 DSR 7 4 RTS 8 5 CTS 9 22 RI
D'un point de vue électronique, les signaux TX et RX en sortie des prises répondent aux normes RS232, c'est à dire:1 logique compris entre -3 et -25V0 logique compris entre +3 et +25V 3) Programmation :La programmation du port série passe par la description de son fonctionnement et par une petite explication des protocoles de transmission. Les PC possèdent en général deux ports série: COM1, généralement réservé à l'indispensable souris, et COM2 utilisé parfois en conjonction avec un modem externe. 4) Le fonctionnement d'une liaison série : La communication série nécessite trois fils au minimum: une masse pour référencer les signaux, un fil émetteur et un fil récepteur. Notre liaison série est en effet full-duplex, c'est à dire que l'on peut émettre et recevoir en même temps (comme le téléphone par exemple).La différence principale entre le port parallèle et le port série est que les informations ne sont pas transmises simultanément sur des fils séparés (D0 à D7) mais les unes après les autres sur un même fil. Cela amène une économie de câble (un fil au lieu de 8) mais un montage décodeur devient nécessaire pour retransformer les données sérialisées.La figure ci-dessous montre comment l'octet 10110101 est transformé pour être transmis sur un seul fil. Vous voyez qu'en plus de l'information utile (10110101) se greffent d'autres bits comme le bit de start. Ces bits sont utiles pour la synchronisation de l'émetteur et du récepteur. LSB 1011010 en
serie MSB En effet, la liaison série est totalement asynchrone. Aucune horloge n'est transmise. Il faut donc se mettre d'accord sur la vitesse de transfert des bits et rajouter des bits de synchronisation. Voici un petit résumé des différents paramètres rentrant en jeu lors d'une communication série:
5) Les protocoles de transmission :On ne peut réussir une transmission qu'à partir du moment où l'émetteur et le récepteur se sont entendu sur la vitesse, le nombre de bit de stop, la longueur du mot et la parité. A ce niveau là, savoir à quel voltage correspond un état haut n'a aucune importance. D'une manière générale, la parité est toujours présente car elle permet de détecter la plus grande partie des erreurs de transmission. Exemple de protocole: la figure ci-dessous montre la transmission du caractère " A " (01000001 en binaire) avec un protocole prévoyant 8 bits de données, un bit de stop et un contrôle de parité pair. La logique est supposée positive (à un état haut correspond un voltage positif) et la vitesse à été fixée à 1200 bauds. 1/200 s <---> 1 _____ _____ _____ | | | | | | | | | | 0 ____| |___________________| |_______| | | | | | | | | | | | | | | \_______________________________/ | | | 01000001 = 'A' | | ----> Start Parite <-- --> Stop
6) Programmation du port série :L'accès aux registres contrôlant les ports série se fait par l'intermédiaire de l'interruption DOS 14h. A cette IT correspond 4 fonctions permettant de configurer et de contrôler l'interface série, dont voici les descriptions complètes. Fonction 0x00: Initialisation de l'interface série
: DX = Numéro de l'interface série : 0x00 = COM1 AL = Paramètres de configuration : Bits 0-1: longueur du mot 10 = 7 bits 11 = 8 bits Bit 2: nombre de bits de stop 0 = 1 bit de stop 1 = 2 bits de stop Bit 3-4: contrôle de parité 00 = aucun 01 = impair 11 = pair Bit 5-7: vitesse de transmission 000 = 110 bauds 001 = 150 bauds 010 = 300 bauds 011 = 600 bauds 100 = 1200 bauds 101 = 2400 bauds 110 = 4800 bauds 111 = 9600 bauds Sortie: AH = Etat de l'interface série Bit 0: données prêtes Bit 1: données effacées Bit 2: erreur de parité Bit 3: violation de protocole Bit 4: interruption détectée Bit 5: transmission Hold Register vide Bit 6: transmisison Shift Register vide Bit 7: time out (le périphérique ne répond pas) AL = Etat du modem Bit 0: (delta) modem prêt à émettre Bit 1: (delta) modem activé Bit 2: (delta) sonnerie Bit 3: (delta) liaison établie Bit 4: modem prêt à émettre Bit 5: modem activé Bit 6: sonnerie Bit 7: liaison établie (les bits delta montrent une modification par rapport au dernier appel de la fonction)
Fonction 0x01: Emission de caractères : Entrée: AH = 0x01 DX = Numéro de l'interface série (voir précedemment) AL = Code du caractère à sortir Sortie: AH = Bit 7: 0 caractère transmis 1 erreur, d'où: Bit 0-6 = Etat de l'interface série Bit 0: données prêtes Bit 1: données effacées Bit 2: erreur de parité Bit 3: violation de protocole Bit 4: interruption détectée Bit 5: transmission Hold Register vide Bit 6: transmisison Shift Register vide
Fonction 0x02: Réception de caractères : Entrée: AH = 0x02 DX = Numéro de l'interface série (voir précedemment) Sortie: AH = Bit 7: 0 caractère reçu, d'où: AL = Caractère reçu Bit 7: 1 erreur, d'où: Bit 0-6: Etat de l'interface série Bit 0: données prêtes Bit 1: données effacées Bit 2: erreur de parité Bit 3: violation de protocole Bit 4: interruption détectée Bit 5: transmission Hold Register vide Bit 6: transmisison Shift Register vide
Fonction 0x03: Tester étatEntrée : AH = 0x03 DX = Numéro de l'interface série (voir précedemment) Sortie: AH = Etat de l'interface série Bit 0: données prêtes Bit 1: données effacées Bit 2: erreur de parité Bit 3: violation de protocole Bit 4: interruption détectée Bit 5: transmission Hold Register vide Bit 6: transmisison Shift Register vide Bit 7: time out (le périphérique ne répond pas) AL = Etat du modem Bit 0: (delta) modem prêt à émettre Bit 1: (delta) modem activé Bit 2: (delta) sonnerie Bit 3: (delta) liaison établie Bit 4: modem prêt à émettre Bit 5: modem activé Bit 6: sonnerie Bit 7: liaison établie Remarque: cette fonction doit être appelée avant 0x02 afin dedéterminer si un caractère a été reçu. Dans ce cas le bit 0 du registre AH vaut 1.
Auteurs: Eric Larchevêque et Laurent Lellu
Copyright (c) 1998
@lterNETive. Tous droits réservés. Reproduction interdite sans autorisation. |