Le port lpt fonctionne. Programmation d'un port LPT dans Visual Basic

D. ZAKHAROV, Prokopyevsk, région de Kemerovo

Après avoir maîtrisé le contrôle des ports d'interface de l'ordinateur, le radioamateur peut leur connecter divers signaux et dispositifs d'actionnement et capteurs, transformant l'ordinateur en un centre de contrôle électronique grand public, un système de sécurité d'appartement ou un appareil de mesure. Le port parallèle LPT, initialement destiné à la connexion à un ordinateur imprimante, est le plus attrayant pour un débutant. De là vient l'abréviation LPT - Line Printer Terminal (les premières imprimantes imprimaient des informations "ligne par ligne" - ligne par ligne). Plus tard, la portée de ce port s'est considérablement étendue, une variété de périphériques a commencé à y être connectée. Malheureusement, aujourd'hui (comme, incidemment, d'autres ports informatiques) est progressivement remplacé par un bus série USB universel à haute vitesse.

Le connecteur du port LPT de l'unité centrale est une prise DB-25F à 25 broches. Il est possible d'appliquer et de supprimer des signaux logiques des niveaux caractéristiques des microcircuits à structure TTL à ses contacts. Une tension de 0 ... 0,8 V est considérée comme logiquement faible, élevée - 2,4 ... 5 V.Connectez les contacts de sortie du connecteur avec un fil commun ou avec une source de tension ne dépassant pas +5 V, elle est recommandée uniquement via des résistances avec une résistance d'au moins 300 Oh Une tension négative ou positive de plus de 5 V ne doit pas être appliquée aux entrées ou sorties du port. Vous ne pouvez vous connecter au port et en déconnecter quoi que ce soit lorsque l'ordinateur est complètement déconnecté du réseau 220 V (la fiche d'alimentation est retirée de la prise). Si l'appareil connecté est alimenté, il doit également être physiquement déconnecté du réseau.

Le non-respect de ces exigences peut avoir des conséquences désastreuses. Si la puce du contrôleur de port parallèle à l'intérieur de l'ordinateur tombe en panne, vous devrez réparer ou remplacer la carte mère.

Lorsque vous allumez l'ordinateur, son port parallèle fonctionne en mode Centronics - le plus simple et le plus traditionnel pour ce port depuis son apparition dans les ordinateurs. Ce mode est parfois appelé port parallèle simple (SPP). Des modes EPP et ECP plus complexes sont généralement utilisés pour l'échange d'informations à grande vitesse avec des imprimantes et des scanners laser. Nous ne les considérerons pas, car la programmation du travail avec le port dans de tels modes n'est disponible que pour les programmeurs expérimentés.

Du point de vue du programme, le port LPT en mode Centronics représente trois registres à huit bits dans l'espace d'E / S du microprocesseur: registre de données DR sur & H378, registre d'état de l'imprimante SR sur & H379 et registre de contrôle d'imprimante CR sur & H37A. Les adresses indiquées se réfèrent au port LPT1, généralement le seul sur l'ordinateur. S'il a d'autres ports parallèles, ils se voient également attribuer trois registres avec des adresses consécutives. Par exemple, les registres de port LPT2 ont généralement des adresses & H278- & H27A.

Les entrées et sorties des registres de ports (mais pas tous) sont connectées aux contacts du connecteur d'interface, comme illustré à la Fig. 1.

Par conséquent, en écrivant certains codes dans ces registres, il est possible de définir les niveaux de tension logiques correspondants aux contacts de sortie du connecteur, et en lisant les codes dans les registres, déterminer les niveaux de signaux externes fournis aux entrées.

Vous pouvez travailler avec le port LPT dans presque tous les environnements de programmation et systèmes d'exploitation. Visual Basic et Delphi sont considérés comme les environnements les plus accessibles, et dans tout ce qui est requis pour la programmation de port, ils sont très similaires. Il faut dire que les systèmes d'exploitation multitâches modernes (y compris la famille Windows) ne permettent pas un accès direct des applications informatiques aux ports d'application. Ceci est fait afin d'éviter les conflits entre les programmes s'exécutant simultanément s'ils accèdent accidentellement au même port en même temps. La communication avec les ports n'est possible que via des programmes de pilotes spéciaux qui exécutent automatiquement tout ce qui est nécessaire pour résoudre les conflits. Le programmeur ne peut écrire que quelques commandes de contrôle.

Nous utiliserons l'une des bibliothèques les plus populaires de ces programmes - Inpout32.dll de la deuxième version, qui est facile à trouver sur Internet. Il est applicable dans divers environnements de programmation et systèmes d'exploitation. Dans Windows 98, le fichier lnpout32.dll doit être copié dans le dossier C: \\ Windows \\ system \\ et dans Windows XP dans le dossier C: \\ Windows \\ system32 \\. Dans de nombreux cas, il suffit de placer ce fichier dans le dossier du programme exécutable. Pour la programmation sous DOS, aucun pilote supplémentaire n'est nécessaire, les commandes d'entrée / sortie habituelles vers le port prévu dans le langage de programmation utilisé sont suffisantes.

La discussion suivante concerne l'utilisation d'un port parallèle dans le système de programmation Visual Basic 6.0 exécutant Windows XP. Un programme simple a été développé pour son développement. Son projet, comprenant le fichier exécutable test.exe et le fichier du formulaire principal (et uniquement) Form1.frm, est joint à l'article. Lorsque vous exécutez ce programme, la fenêtre illustrée à la Fig. 2.


En cliquant sur les boutons à l'écran et en entrant des nombres dans les champs correspondants, vous pouvez régler les niveaux de tension aux sorties du port et lire l'état de ses entrées (il sera affiché par un numéro dans le champ correspondant). La bibliothèque pour travailler avec le port LPT "connecte" au programme un fragment du fichier Form1.frm, montré dans le tableau.


Tout d'abord, nous analyserons le travail avec le registre de contrôle CR (rappel, son adresse est & H37A). Dans le cas considéré, il est exécuté par un sous-programme

Sous-commande privée4_click ()
out & H37A, Text2.Text
End sub

Lorsque vous appuyez sur le bouton Command4 à l'écran ("Soumettre"), il écrit dans le registre de & H37A le code binaire correspondant au nombre décimal entré dans le champ au-dessus de ce bouton.

Pour plus de clarté, nous assemblons et connectons le nœud LED au connecteur LPT selon le circuit illustré à la Fig. 3.


Entrez le numéro 4 (binaire 00000100) dans le champ requis et cliquez sur le bouton "Envoyer". Après cela, les quatre LED s'allumeront. Le fait est que les décharges CR, CR et CR sont connectées aux broches du connecteur via des onduleurs; par conséquent, lors de l'écriture de 0 sur ces décharges, les niveaux aux contacts correspondants sont devenus élevés. Pour allumer uniquement la LED HL3, vous devez entrer le numéro 15 (binaire 00001111), et lorsque vous entrez le numéro 11 (binaire 0001011), toutes les LED seront éteintes. Les bits de poids fort du registre de contrôle (CR-CR) ne sont pas connectés aux broches du connecteur, donc leur état dans ce cas n'a pas d'importance.

Afin d'étudier le fonctionnement avec le registre d'état SR, nous connectons le nœud au connecteur de port, dont le circuit est illustré à la Fig. 4.


Lorsque les disjoncteurs SA1-SA5 sont ouverts, une tension de niveau logique élevé est appliquée aux contacts du connecteur via les résistances R1-R5. Sa source peut être n'importe quel adaptateur réseau avec une tension de sortie de 5 V, une batterie de trois cellules galvaniques et même l'une des sorties du port LPT, sur laquelle le niveau de tension requis est défini en utilisant la méthode décrite précédemment. Dans de nombreux ordinateurs, des résistances similaires à celles de R1-R5 sont déjà disponibles, et il n'est pas nécessaire d'installer des résistances externes dans de tels cas.

Lorsque vous cliquez sur la touche logicielle "Accepter", un sous-programme est exécuté

Sous-commande privée5_c1ick ()
Text3.Text \u003d Inp (& H379)
End sub

Il affichera dans la case au-dessus du bouton un nombre affichant le contenu du registre SR. Si tous les commutateurs (Fig.4) sont ouverts, ce sera 126 (binaire 01111110), et s'ils sont fermés - 134 (10000110). Les valeurs des bits SR-SR correspondent aux niveaux fournis aux contacts correspondants du connecteur, et la valeur de la décharge SR est inverse du niveau sur la broche 11. Étant donné que les bits les moins significatifs de SR-SR ne sont pas émis vers le connecteur, leurs valeurs ne dépendent pas des signaux appliqués à ses contacts.

Le registre de port principal est le registre de données DR sur & H378. C'est à travers lui que les informations imprimées sont transmises en octets à l'imprimante. Les huit bits du registre sont connectés aux broches du connecteur et sans onduleurs. Ces huit circuits sont souvent associés au nom «bus de données». Dans l'état initial, il ne fonctionne qu'en sortie. Cependant, presque tous les ordinateurs modernes ont la possibilité de le basculer sur l'entrée parallèle de codes binaires à huit bits. Pour ce faire, il suffit d'écrire une unité dans la catégorie CR du registre de contrôle.

Malheureusement, en mode Centronics, il n'y a aucun signal sur la direction dans laquelle fonctionne le bus de données du port LPT, son connecteur n'est pas émis. Par conséquent, une attention particulière doit être apportée et les signaux externes ne doivent être fournis à ce bus qu'après s'être assuré que la commutation «réception» programmée est terminée. Sinon, les microcircuits d'interface de l'ordinateur lui-même et de la source de signal connectée au port peuvent être endommagés. Cet inconvénient a été éliminé dans les modes EPP et ECP, où un ensemble complet de signaux de commande pour la direction du transfert d'informations via le bus de données du port parallèle est fourni.

Dans le programme de test considéré, un sous-programme fonctionne avec un registre de données

Sous-commande privée3_Click ()
Out & H378, Text1.Text
Text1.Text \u003d Inp (& H378)
End sub

Lorsque vous cliquez sur le bouton d'écran "OK", il écrit dans le registre de données le numéro du champ au-dessus du bouton, puis lit le contenu du registre et l'affiche dans le même champ. Naturellement, si le registre fonctionne comme une sortie (l'élément "Transfert" est marqué sur l'écran), le nombre dans le champ reste le même. Afin de vous assurer que les niveaux logiques sur les broches 2 à 9 du connecteur de port correspondent dans ce cas au nombre entré dans le champ manuellement et enregistré dans le registre de données, connectez un nœud au connecteur similaire à celui montré sur la Fig. 3, mais avec un nombre augmenté de huit LED et résistances.

L'opération de commutation du bus de données en entrée est effectuée par un sous-programme

Sous-option privée1_Click ()
Sortie & H37A, 32
End sub

Son appel se produit lorsque vous cliquez sur le bouton à l'écran avec le verrou dépendant "Recevoir". En utilisant le bouton "Transférer", un sous-programme similaire est appelé, différant seulement en ce qu'il écrit dans le registre de contrôle non 32 (binaire 00100000), mais zéro, remettant ainsi le bus de données en mode de sortie.

Lorsque le bus de données est commuté en mode d'entrée, la procédure Out du sous-programme précédemment considéré, appelée lorsque le bouton "OK" est enfoncé, ne fonctionne pas réellement. Cependant, la fonction Inp renvoie une valeur correspondant aux niveaux sur les broches 2-9 établis par les circuits externes qui leur sont connectés. En tant que nombre décimal, il apparaît dans la zone au-dessus du bouton OK. Vous pouvez définir des niveaux logiques sur les lignes de bus de données à l'aide d'un nœud similaire à celui utilisé pour travailler avec le registre d'état (Fig. 4).

Afin de ne pas compliquer le programme, la modification de l'état du registre de contrôle à l'aide des boutons «Recevoir» et «Transférer» n'est pas affichée dans le champ de saisie au-dessus du bouton «Envoyer».

Après avoir maîtrisé les exemples donnés dans l'article, nous avons appris à sortir 12 de l'ordinateur via le port et à lui envoyer 5 signaux logiques, ou (dans un autre mode) à sortir 4 et à entrer 13 de ces signaux. Vous pouvez désormais développer des programmes et des périphériques beaucoup plus complexes qui se connectent via le port LPT à l'ordinateur.

Des éditeurs. Les fichiers mentionnés dans l'article et les autres fichiers nécessaires pour travailler avec le programme de test se trouvent sur notre serveur FTP à ftp://ftp.radio.ru/pub/2007/09/testlpt.zip

Radio 2007 №9

Un port d'interface parallèle a été introduit dans le PC pour connecter l'imprimante - d'où le nom de port LPT (Line PrinTer - imprimante en ligne). Le port LPT traditionnel, également standard (le soi-disant port SPP) est axé sur la sortie des données, bien qu'avec certaines limitations, il vous permet d'entrer des données. Il existe diverses modifications du port LPT - bidirectionnelles, EPP, ECP et autres, élargissant ses fonctionnalités, augmentant la productivité et réduisant la charge sur le processeur. Au début, il s'agissait de solutions de marque de fabricants individuels; plus tard, la norme IEEE 1284 a été adoptée.

À l'extérieur, le port possède un bus de données 8 bits, un bus de signal d'état 5 bits et une sortie de bus de signal de contrôle 4 bits vers la prise DB-25S. Le port LPT utilise des niveaux logiques TTL, ce qui limite la longueur de câble autorisée en raison de la faible immunité au bruit de l'interface TTL. Il n'y a pas d'isolation galvanique - la masse du circuit de l'appareil connecté est connectée à la masse du circuit de l'ordinateur. De ce fait, le port est une vulnérabilité informatique qui souffre d'une violation des règles de connexion et de mise à la terre des appareils. Étant donné que le port est généralement situé sur la carte mère, s'il est grillé, son environnement immédiat échoue souvent, même jusqu'à ce que la carte mère entière brûle.

Côté logiciel, le port LPT est un ensemble de registres situés dans l'espace d'E / S. Les registres de ports sont adressés par rapport à l'adresse de base du port, dont les valeurs standard sont 3BCh, 378h et 278h. Un port peut utiliser une ligne de demande d'interruption matérielle, généralement IRQ7 ou IRQ5. Dans les modes avancés, le canal DMA peut également être utilisé.

Le port est pris en charge au niveau du BIOS - la recherche de ports installés pendant le test POST et les services d'impression Int 17h (voir la clause 8.3.3) fournissent une sortie de caractères (par balayage de préparation, sans utiliser d'interruptions matérielles), l'initialisation de l'interface et de l'imprimante, ainsi que l'interrogation état de l'imprimante. Presque toutes les cartes mères modernes (à commencer par les cartes PCI pour 486 processeurs) ont un adaptateur de port LPT intégré. Il existe des cartes ISA avec un port LPT, où il coexiste le plus souvent avec une paire de ports COM, ainsi qu'avec des contrôleurs d'interface de disque (FDC + IDE). Le port LPT est généralement présent sur la carte adaptateur d'affichage MDA (texte monochrome) et HGC (graphique monochrome "Hercules"). Il existe des cartes PCI avec des ports LPT supplémentaires.

Les imprimantes, traceurs, scanners, dispositifs de communication et dispositifs de stockage de données, ainsi que les clés électroniques, les programmeurs et autres dispositifs, sont connectés aux ports LPT. Parfois, une interface parallèle est utilisée pour la communication entre deux ordinateurs - il s'avère que le réseau "fait à genoux" (LapLink).

1.1. Port LPT traditionnel

Le port LPT traditionnel, ou standard, est appelé port parallèle standard (SPP), ou port SPP, et est un port unidirectionnel par lequel le protocole d'échange Centronics est implémenté dans le logiciel (voir la clause 8.3.1). Le nom et la fonction des signaux du connecteur de port (tableau 1.1) correspondent à l'interface Centronics.

Tableau 1.1. Connecteur de port LPT standard

Contactez DB-25S Numéro de fil du câble Rendez-vous I / O¹ Bit² Signal
1 1 O / i CR.0 \\ Strobe #
2 3 O (I) DR.0 Données 0
3 5 O (I) DR.1 Données 1
4 7 O (I) DR.2 Données 2
5 9 O (I) DR.3 Données 3
6 11 O (I) DR.4 Données 4
7 13 O (I) DR.5 Données 5
8 15 O (I) DR.6 Données 6
9 17 O (I) DR.7 Données 7
10 19 SR.6 Ack #
11 21 Je SR.7 \\ Occupé
12 23 Je Sr.5 PaperEnd (PE)
13 25 Je SR.4 Sélectionnez
14 2 O / i CR.1 \\ Auto LF # (AutoFeed #)
15 4 Je SR.3 Erreur #
16 6 O / i CR.2 Init #
17 8 O / i CR.3 \\ Sélectionner dans #
18-25 10, 12, 14, 16, 18, 20, 22, 24, 26 - - -

¹ I / O définit le sens de transmission (entrée-sortie) du signal de port. O / I désigne les lignes de sortie dont l'état est lu lors de la lecture à partir des ports de sortie; O (I) - lignes de sortie dont l'état ne peut être lu que dans des conditions particulières (voir ci-dessous).

² Les signaux inversés sont marqués d'un «\\» (1 dans le registre correspond à un niveau de ligne bas).

³ L'entrée Ack # est connectée par une résistance (10 kOhm) à +5 V.

L'adaptateur de port SPP contient trois registres 8 bits situés à des adresses adjacentes dans l'espace d'E / S, à partir de l'adresse de base du port BASE (3BCh, 378h ou 278h).

Registre de données (DR) - registre de données, adresse \u003d BASE. Les données écrites dans ce registre sont sorties vers les lignes de sortie des données. Les données lues dans ce registre, selon les circuits de l'adaptateur, correspondent soit à des données précédemment enregistrées, soit à des signaux sur les mêmes lignes, qui ne sont pas toujours les mêmes.

Registre d'état (SR) - registre d'état (lecture seule), adresse \u003d BASE + 1. Le registre affiche un port d'entrée de signal d'état d'imprimante 5 bits (bits SR.4-SR.7) et un indicateur d'interruption. Le bit SR.7 est inversé - un faible niveau de signal correspond à une valeur de bit unique dans le registre, et vice versa.

Le but des bits du registre d'état est décrit ci-dessous (entre parenthèses sont les numéros de broches du connecteur de port).

♦ SR.7 - Occupé - affichage inverse de l'état de la ligne Occupé (11): à un niveau bas sur la ligne, une seule valeur de bit est définie - autorisation de sortir l'octet suivant.

♦ SR.6 - Ack (Acknowledge) - affiche l'état de la ligne Ack # (10).

♦ SR.5 - PE (Fin papier) - Affiche l'état de la ligne Fin papier (12). Une valeur unique correspond à une ligne de haut niveau - un signal concernant la fin du papier dans l'imprimante.

♦ SR.4 - Select - affiche l'état de la ligne Select (13). Une valeur unique correspond à un niveau de ligne élevé - un signal indiquant que l'imprimante est sous tension.

♦ SR.3 - Erreur - affiche l'état de la ligne Erreur # (15). Une valeur de zéro correspond à une ligne basse - un signal d'erreur de l'imprimante.

♦ SR.2 - PIRQ - Indicateur d'interruption Ack # (uniquement pour le port PS / 2). Le bit est réinitialisé si le signal Ack # a provoqué une interruption matérielle. La valeur de l'unité est définie par réinitialisation matérielle et après lecture du registre d'état.

♦ SR - réservé.

Registre de contrôle (CR) - registre de contrôle, adresse \u003d BACE + 2, permet l'écriture et la lecture. Le registre est connecté à un port de sortie à 4 bits de signaux de commande (bits 0 à 3) pour lequel la lecture est également possible; le tampon de sortie est généralement du type collecteur ouvert. Cela vous permet d'utiliser correctement les lignes de ce registre en entrée lors de leur programmation à un niveau élevé. Les bits 0, 1, 3 sont inversés.

Le but des bits du registre de contrôle est décrit ci-dessous.

♦ CR - réservé.

♦ CR.5 - Direction - bit pour contrôler le sens de transmission (uniquement pour les ports PS / 2, voir ci-dessous). Un enregistrement d'unité met le port de données en mode d'entrée. Lors de la lecture, l'état du bit n'est pas défini.

♦ CR.4 - AckINTEN (Ack Interrupt Enable) - une valeur unique permet une interruption lors de la baisse du signal sur la ligne Ack # - demande un signal pour l'octet suivant.

♦ CR.3 - Select In - une valeur de bit unique correspond à un niveau bas à la sortie Select In # (17) - un signal qui permet à l'imprimante de fonctionner sur l'interface Centronics.

♦ CR.2 - Init - une valeur de bit zéro correspond à un niveau bas à la sortie Init # (16) - un signal de réinitialisation matérielle de l'imprimante.

♦ CR.1 - Auto LF - une valeur de bit unique correspond à un niveau bas à la sortie Auto LF # (14) - un signal pour le saut de ligne automatique (LF - Line Feed) à la réception d'un octet de retour chariot (CR). Parfois, le signal et le bit sont appelés AutoFD ou AutoFDXT.

♦ CR.0 - Strobe - une valeur de bit unique correspond à un niveau bas à la sortie de Strobe # (1) - un signal pour déclencher les données de sortie.

Une demande d'interruption matérielle (généralement IRQ7 ou IRQ5) est générée par une chute de signal négative à la broche 10 du connecteur d'interface (Ack #) lors du réglage de CR.4 \u003d 1. Pour éviter les fausses interruptions, la broche 10 est connectée par une résistance au bus +5 V. Une interruption est générée lorsque l'imprimante confirme la réception de l'octet précédent. Comme déjà mentionné, le BIOS n'utilise ni ne gère cette interruption.

Nous listons les étapes de la procédure de sortie d'octets sur l'interface Centronics avec l'indication du nombre requis d'opérations de bus de processeur.

1. Sortie d'octets dans le registre de données (1 cycle IOWR #).

2. Entrée à partir du registre d'état et vérification de l'état de préparation de l'appareil (bit SR.7 - Signal occupé). Cette étape se boucle jusqu'à ce qu'elle soit prête ou avant l'expiration du programme (au moins 1 cycle IORD #).

3. Dès réception de l'état de préparation, un stroboscope de données est réglé par sortie vers le registre de contrôle, et le stroboscope est supprimé par la sortie suivante. Habituellement, afin de commuter seulement un bit (stroboscope), le registre de contrôle est pré-lu, ce qui ajoute un autre cycle IORD # à deux cycles IOWR #.

On peut voir que pour la sortie d'un octet, 4 à 5 opérations d'E / S avec des registres de ports sont nécessaires (dans le meilleur des cas, lorsque la disponibilité est détectée par la première lecture du registre d'état). Cela conduit au principal inconvénient de la sortie via le port standard - le faible taux de change avec une charge de processeur importante. Le port parvient à overclocker à des vitesses de 100 à 150 Kb / s lorsque le processeur est complètement chargé, ce qui n'est pas suffisant pour imprimer sur une imprimante laser. Un autre inconvénient fonctionnel est la difficulté de l'utiliser comme port d'entrée.

Le port standard est asymétrique - s'il y a 12 lignes (et bits) qui fonctionnent normalement pour la sortie, seules 5 lignes d'état fonctionnent pour l'entrée. Si une communication bidirectionnelle symétrique est requise, le mode Nibble est disponible sur tous les ports standard. Dans ce mode, également appelé Hewlett Packard Bi-tronics, 4 bits de données sont reçus en même temps, la cinquième ligne est utilisée pour l'acquittement. Ainsi, chaque octet est transmis en deux cycles, et chaque cycle nécessite au moins 5 opérations d'E / S.

Le circuit des tampons de données de sortie des ports LPT est très divers. Sur de nombreux modèles d'adaptateurs plus anciens, le port de données SPP peut également être utilisé pour organiser l'entrée. Si vous écrivez un octet avec les unités dans tous les chiffres au port de données et envoyez du code aux lignes de sortie de l'interface via des microcircuits avec une sortie de type "collecteur ouvert" (ou connectez certaines lignes avec les touches à la masse du circuit), alors ce code peut être lu du même registre de données. Cependant, les circuits de sortie de l'émetteur d'informations devront "se battre" avec le courant de sortie de l'unité logique des tampons de sortie de l'adaptateur. Les circuits TTL n'interdisent pas de telles solutions, mais si le périphérique externe est basé sur des puces CMOS, leur puissance peut ne pas être suffisante pour «gagner» ce conflit de bus. Cependant, les adaptateurs modernes ont souvent une résistance de terminaison dans le circuit de sortie avec une résistance allant jusqu'à 50 ohms. Le courant de court-circuit de sortie de la sortie à la terre ne dépasse généralement pas 30 mA. Un calcul simple montre que même dans le cas d'un court-circuit du contact du connecteur à la masse lorsque «l'unité» est sortie, une tension de 1,5 V chute à travers cette résistance, qui sera interprétée comme une «unité» par le circuit d'entrée du récepteur. Par conséquent, on ne peut pas supposer que cette méthode de saisie fonctionnera sur tous les ordinateurs. Sur certains adaptateurs de port plus anciens, le tampon de sortie est désactivé par un cavalier sur la carte. Ensuite, le port se transforme en un port d'entrée ordinaire.

1.2. Extensions de port parallèle

Les inconvénients du port standard ont partiellement éliminé les nouveaux types de ports apparus sur les ordinateurs PS / 2.

Port bidirectionnel 1 (port parallèle Tour 1) - l'interface introduite dans PS / 2. Un tel port, en plus du mode standard, peut fonctionner en mode d'entrée ou en mode bidirectionnel. Le protocole d'échange est généré par programme et un bit spécial CR.5 est entré dans le registre de contrôle de port pour indiquer le sens de la transmission: 0 - le tampon de données fonctionne à la sortie, 1 - à l'entrée. Ne confondez pas ce port, également appelé bidirectionnel amélioré, avec EPP. Ce type de port a également pris racine dans les ordinateurs ordinaires; dans la configuration CMOS, il peut être appelé PS / 2 ou Bi-Di.

Un port avec accès direct à la mémoire (port parallèle Tour 3 DMA) a été utilisé dans les modèles PS / 2 57, 90, 95. Il a été introduit pour augmenter le débit et décharger le processeur lors de la sortie vers l'imprimante. Le programme fonctionnant avec le port n'avait besoin que de mettre en mémoire un bloc de données à sortir, puis la sortie via le protocole Centronics a été effectuée sans la participation du processeur.

Plus tard, d'autres adaptateurs de port LPT sont apparus qui implémentent le protocole d'échange matériel Centronics, Fast Centronics. Certains d'entre eux ont utilisé le tampon de données FIFO - Mode FIFO à port parallèle. Sans être standardisés, ces ports de différents fabricants nécessitaient leurs propres pilotes spéciaux. Les programmes utilisant le contrôle direct des registres de ports standard ne pouvaient pas utiliser leurs fonctionnalités supplémentaires. Ces ports font souvent partie des multicartes VLB. Il existe des options avec le bus ISA, ainsi que intégrées dans la carte système.

1.3. Norme IEEE 1284

La norme d'interface parallèle IEEE 1284, adoptée en 1994, décrit les ports SPP, EPP et ECP. La norme définit 5 modes d'échange de données, la méthode de correspondance des modes, les interfaces physiques et électriques. Selon IEEE 1284, les modes de communication suivants via le port parallèle sont possibles:

♦ Mode de compatibilité - Unidirectionnel (sortie) utilisant le protocole Centronics. Ce mode correspond au port SPP.

♦ Mode grignotage - Entrez un octet en deux cycles (4 bits chacun), en utilisant la ligne d'état pour recevoir. Ce mode d'échange convient à tous les adaptateurs, car il utilise uniquement les capacités du port standard.

♦ Mode octet - Saisissez l'intégralité de l'octet à l'aide d'une ligne de données pour le recevoir. Ce mode ne fonctionne que sur les ports qui permettent la lecture des données de sortie (bidirectionnel ou PS / 2 Tour 1, voir ci-dessus).

♦ Mode EPP - communication bidirectionnelle (EPP signifie Enhanced Parallel Port). Les signaux de contrôle d'interface sont générés par le matériel pendant le cycle d'accès au port. Efficace lorsque vous travaillez avec des périphériques de mémoire externe et des adaptateurs LAN.

♦ Mode ECP (mode ECP) \u200b\u200b- échange de données bidirectionnel avec possibilité de compression matérielle des données en utilisant la méthode RLE (Run Length Encoding) et l'utilisation de tampons FIFO et DMA (ECP signifie Extended Capability Port). Les signaux de contrôle d'interface sont générés par le matériel. Efficace pour les imprimantes et les scanners (la compression peut être utilisée ici) et divers dispositifs d'échange de blocs.

La norme définit la manière dont le logiciel peut déterminer le mode disponible à la fois pour l'hôte (PC) et le périphérique (ou un deuxième ordinateur connecté). Les modes de port non standard qui implémentent le protocole matériel Centronics (Fast Centronics, mode FIFO à port parallèle) peuvent ne pas être des modes IEEE 1284, malgré les caractéristiques d'EPP et d'ECP.

Sur les ordinateurs dotés d'un port LPT sur la carte système, le mode - SPP, EPP, ECP ou une combinaison de ceux-ci - est défini dans la configuration du BIOS. Le mode de compatibilité est entièrement cohérent avec le port SPP. Les modes restants sont discutés en détail ci-dessous.

Lors de la description des modes d'échange, les concepts suivants apparaissent:

♦ hôte - un ordinateur avec un port parallèle;

♦ PU - un périphérique connecté à ce port;

♦ Ptr - dans les noms des signaux indique le PU émetteur;

♦ canal direct - un canal pour la sortie des données de l'hôte vers la salle de contrôle;

♦ canal inverse - canal pour l'entrée de données vers l'hôte depuis la salle de contrôle.

1.3.1. Mode grignotage - Mode grignotage

Le mode Nibble est conçu pour un échange bidirectionnel et peut fonctionner sur tous les ports standard. Les ports ont 5 lignes d'entrée d'état, à l'aide desquelles le panneau de contrôle peut envoyer des tétrades à l'octet hôte (nibble - nibble, 4 bits) en deux étapes. Le signal Ack #, qui provoque une interruption utilisable dans ce mode, correspond au bit 6 du registre d'état, ce qui complique la manipulation logicielle des bits lors de l'assemblage d'un octet. Les signaux de port sont donnés dans le tableau. 1.2, chronogrammes - sur la fig. 1.1.

Tableau 1.2. Signaux du port LPT en mode d'entrée quartet

Contactez-nous Signal SPP E / S Bit La description
14 AutoFeed # O CR.1 \\ HostBusy - signal d'accusé de réception. Un niveau bas indique une disposition à recevoir une tétrade, un niveau élevé confirme la réception d'une tétrade
17 SelectIn # O CR.3 \\
10 Ack # Je SR.6 PtrClk. Faible indique l'état de préparation du portable; élevé indique la réponse au signal HostBusy.
11 Occupé Je SR.7 Recevoir le bit de données 3, puis le bit 7
12 RE Je Sr.5 Recevoir le bit de données 2, puis le bit 6
13 Sélectionnez Je SR.4 Recevoir le bit de données 1, puis le bit 5
15 Erreur # Je SR.3 Recevoir le bit de données 0, puis le bit 4

Fig. 1.1. Recevoir des données en mode grignotage

La réception d'un octet de données en mode quartet comprend les phases suivantes:

2. PU en réponse place le notebook sur les lignes d'état d'entrée.

3. PU signale l'état de préparation de l'ordinateur portable en définissant un niveau bas sur la ligne PtrClk.

4. L'hôte définit un niveau élevé sur la ligne HostBusy, indiquant qu'il est occupé à recevoir et à traiter le bloc-notes.

6. Les étapes 1 à 5 sont répétées pour le deuxième bloc-notes.

Un mode d'un demi-octet charge fortement le processeur et il n'est pas possible d'augmenter le taux de change au-dessus de 50 Kb / s. Son avantage inconditionnel est qu'il fonctionne sur tous les ports. Il est utilisé dans les cas où le flux de données est faible (par exemple, pour la communication avec les imprimantes). Cependant, lors de la communication avec des adaptateurs LAN, des lecteurs de disque externes et des CD-ROM, la réception de grandes quantités de données nécessite beaucoup de patience de la part de l'utilisateur.

1.3.2. Mode octet bidirectionnel - Mode octet

Dans ce mode, les données sont reçues à l'aide d'un port bidirectionnel où le tampon de données de sortie peut être désactivé en définissant le CR.5 \u003d 1 bit. Comme les précédents, le mode est contrôlé par programme - tous les signaux d'acquittement sont analysés et définis par le conducteur. Les signaux de port sont décrits dans le tableau. 1.3, chronogrammes - sur la fig. 1.2.

Tableau 1.3. Signaux de port LPT en octets d'E / S

Contactez-nous Signal SPP Nom en mode octet E / S Bit La description
1 Strobe # Hostclk O CR.0 \\ Une impulsion (niveau bas) confirme la réception d'un octet à la fin de chaque cycle
14 AutoFeed # Hostbus Oh CR.1 \\ Signal d'accusé de réception. Un niveau bas signifie que l'hôte est prêt à accepter des octets; le niveau élevé est défini par la réception d'octets
17 SelectIn # 1284Actif Oh CR.3 \\ Élevé indique l'échange en mode IEEE 1284 (faible en mode SPP)
16 Init # Init # O CR.2 Non utilisé; réglé sur haut
10 Ack # Ptrclk Je SR.6 Réglez sur faible pour indiquer la validité des données sur les lignes de données. Défini sur faible en réponse à un signal HostBusy
11 Occupé Ptrbusy Je SR.7 \\ État occupé du canal avant
12 PE AckDataReq¹ Je Sr.5
13 Sélectionnez Xflag¹ Je SR.4 Drapeau d'extensibilité
15 Erreur # DataAvail # ¹ Je SR.3 Un panneau de commande est installé pour indiquer la présence d'un canal de transmission inverse
2-9 Les données Les données E / S DR Canal de données bidirectionnel (avant et arrière)

Fig. 1.2. Recevoir des données en mode octet

Les phases de réception d'un octet de données sont répertoriées ci-dessous.

1. L'hôte indique qu'il est prêt à recevoir des données en définissant un niveau bas sur la ligne HostBusy.

2. Le contrôle en réponse place un octet de données sur la ligne de données.

3. Le panneau de commande signale la validité de l'octet en définissant un niveau bas sur la ligne PtrClk.

4. L'hôte définit un niveau élevé sur la ligne HostBusy, indiquant qu'il est occupé à recevoir et à traiter l'octet.

5. Le panneau de commande répond en définissant un niveau élevé sur la ligne PtrClk.

6. L'hôte accuse réception des octets avec une impulsion HostClk.

Les étapes 1 à 6 sont répétées pour chaque octet suivant. L'acquittement est effectué par une paire de signaux HostBusy et PtrClk; Le panneau de contrôle peut ne pas utiliser le signal HostClk (il s'agit d'une invitation à émettre l'octet suivant, qui rappelle le signal Ack # dans l'interface Centronics). Le mode octet vous permet d'augmenter la vitesse du canal inverse à la vitesse du canal avant en mode standard. Cependant, il ne peut fonctionner que sur les ports bidirectionnels, qui étaient utilisés principalement sur les machines PS / 2 bas de gamme, mais presque tous les ports modernes peuvent être configurés pour le mode bidirectionnel (dans les paramètres de configuration du BIOS, Bi-Di ou PS / 2).

1.3.3. Mode EPP

Le protocole EPP (Enhanced Parallel Port - Enhanced Parallel Port) a été développé par Intel, Xircom et Zenith Data Systems bien avant l'adoption de la norme IEEE 1284. Ce protocole est conçu pour augmenter les performances de communication du port parallèle; il a d'abord été implémenté dans le chipset Intel 386SL (puce 82360) puis adopté par de nombreuses entreprises comme protocole de port parallèle supplémentaire. Les versions de protocole mises en œuvre avant l'adoption de l'IEEE 1284 sont différentes de la norme actuelle (voir ci-dessous).

EPP propose quatre types de cycles d'échange:

♦ enregistrement des données;

♦ lire des données;

♦ enregistrement d'adresse;

♦ lire l'adresse.

Le but de l'écriture et de la lecture des cycles de données est évident. Les cycles d'adresse sont utilisés pour transmettre des informations d'adresse, de canal et de contrôle. Les cycles de communication diffèrent des cycles d'adresse par les signaux stroboscopiques appliqués. Le but des signaux de port EPP et leur relation avec les signaux SPP sont expliqués dans le tableau. 1.4.

Tableau 1.4. Signaux de port LPT dans les E / S EPP

Contactez-nous Signal SPP Nom EPP E / S La description
1 Strobe # Écrivez # O Cycle d'écriture faible, cycle de lecture élevé
14 AutoLF # DataStb # O Stroboscope de données. Bas niveau défini dans les cycles de données
17 SelectIn # AddrStb # O Adresse stroboscopique. Niveau bas défini dans les cycles d'adresse
16 Init # Réinitialiser # O Réinitialisation PU (faible)
10 Ack # INTR # Je Interruption du PU
11 Occupé Attendez # Je Signal d'accusé de réception. Un niveau bas permet le début du cycle (régler le stroboscope à un niveau bas), passer à haut - permet l'achèvement du cycle (retirer le stroboscope)
2-9 Les données AD E / S Adresse / bus de données bidirectionnel
12 Paperend AckDataReq¹ Je
13 Sélectionnez Xflag¹ Je Utilisé à la discrétion du développeur périphérique
15 Erreur # DataAvail # ¹ Je Utilisé à la discrétion du développeur périphérique

¹ Les signaux fonctionnent dans la séquence d'adaptation (voir ci-dessous).

Le port EPP possède un ensemble étendu de registres (tableau 1.5), qui occupe 5 à 8 octets adjacents dans l'espace d'E / S.

Tableau 1.5. Registres des ports EPP

Enregistrer le nom Décalage Le mode R / w La description
Port de données SPP +0 SPP / EPP W Registre de données SPP
Port d'état SPP +1 SPP / EPP R Registre d'état SPP
Port de contrôle SPP +2 SPP / EPP W Registre de gestion SPP
Port d'adresse EPP +3 EPP R / w Registre d'adresses EPP. La lecture ou l'écriture génère un cycle connexe pour lire ou écrire l'adresse EPP
Port de données EPP +4 EPP R / w Registre de données EPP. La lecture (écriture) génère un cycle connexe pour la lecture (écriture) des données EPP
Non défini +5…+7 EPP N / a Certains contrôleurs peuvent être utilisés pour des opérations d'E / S de 16 à 32 bits.

Contrairement aux modes commandés par programme décrits ci-dessus, les signaux de port EPP externes pour chaque cycle d'échange sont formés par le matériel pour une opération d'écriture ou de lecture dans le registre de port. Dans la fig. 1.3 est un diagramme d'un cycle d'écriture de données illustrant un cycle d'échange externe intégré dans un cycle d'écriture du bus système du processeur (parfois ces cycles sont appelés connectés). Le cycle d'adresse d'écriture ne diffère du cycle de données que dans le stroboscope de l'interface externe.

Fig. 1.3. Cycle d'enregistrement des données EPP

Le cycle d'enregistrement des données comprend les phases suivantes.

1. Le programme effectue un cycle de sortie (IOWR #) vers le port 4 (EPP Data Port).

2. L'adaptateur définit le signal d'écriture # (faible) et les données sont placées sur le bus de sortie du port LPT.

3. Lorsque Wait # est faible, un stroboscope de données est défini.

4. Le port attend la confirmation de l'unité centrale (transfert # d'attente à un niveau élevé).

5. Le stroboscope de données est supprimé - le cycle EPP externe se termine.

6. Le cycle du processeur de sortie se termine.

7. PU définit l'attente # basse, indiquant la possibilité du début du cycle suivant.

Un exemple de cycle de lecture d'adresse est illustré à la Fig. 1.4. Le cycle de lecture des données ne diffère que par l'utilisation d'un autre signal de porte.

Fig. 1.4. Cycle d'adresse de lecture EPP

La principale caractéristique distinctive d'EPP est la mise en œuvre d'un transfert externe pendant un cycle d'entrée / sortie de processeur. Cela vous permet d'atteindre des taux de change élevés (0,5 à 2 Mo / s). Le panneau de commande connecté au port parallèle EPP peut fonctionner à la vitesse de l'appareil connecté via l'emplacement ISA.

Naturellement, le panneau de contrôle ne doit pas «suspendre» le processeur sur le cycle d'échange de bus. Cela garantit un mécanisme de temporisation du PC, qui met fin de force à tout cycle d'échange d'une durée supérieure à 15 microsecondes. Dans certaines implémentations EPP, l'adaptateur lui-même surveille le délai d'expiration de l'interface - si le panneau de commande ne répond pas pendant un certain temps (5 μs), le cycle s'arrête et une erreur est enregistrée dans le registre d'état d'adaptateur supplémentaire (non standardisé).

Les dispositifs EPP développés avant l'adoption de l'IEEE 1284 diffèrent au début du cycle: le stroboscope DataStb # ou AddrStb # est défini quel que soit l'état de WAIT #. Cela signifie que PU ne peut pas retarder le début du cycle suivant (bien qu'il puisse l'étirer au temps requis). Cette spécification est appelée EPP 1.7 (proposée par Xircom). C'est lui qui a été utilisé dans le contrôleur 82360. Les périphériques compatibles avec IEEE 1284 EPP fonctionneront normalement avec le contrôleur EPP 1.7, mais les PU de la norme EPP 1.7 peuvent refuser de travailler avec le contrôleur EPP 1284.

D'un point de vue logiciel, le contrôleur de port EPP semble simple (voir tableau 1.5). Deux registres (EPP Address Port et EPP Data Port) sont ajoutés aux trois registres du port standard avec un décalage de 0, 1 et 2 par rapport à l'adresse de base du port. Leur lecture et leur écriture provoquent la génération de boucles externes associées.

Le but des registres de ports standard a été sauvegardé pour la compatibilité du port EPP avec les panneaux de contrôle et les logiciels conçus pour l'utilisation des échanges contrôlés par logiciel. Étant donné que les signaux d'acquittement sont générés par l'adaptateur dans le matériel, lors de l'écriture dans le registre de contrôle CR, les bits 0, 1 et 3 correspondant aux signaux Strobe #, AutoFeed # et SelectIn # doivent avoir des valeurs nulles. Une intervention logicielle pourrait perturber la séquence d'accusé de réception. Certains adaptateurs ont des fonctions de sécurité spéciales (EPP Protect), lorsqu'ils sont activés, la modification logicielle de ces bits est bloquée.

L'utilisation du registre de données EPP permet le transfert d'un bloc de données avec une seule instruction REP INSB ou REP OUTSB. Certains adaptateurs permettent un accès 16/32 bits au registre de données EPP. Dans ce cas, l'adaptateur déchiffre simplement l'adresse avec un décalage compris entre 4 et 7 en tant qu'adresse du registre de données EPP, mais le processeur signale 8 bits. Ensuite, un accès 16 ou 32 bits à l'adresse du registre de données EPP générera automatiquement deux ou quatre cycles de bus à des adresses incrémentielles commençant au décalage 4. Ces cycles s'exécuteront plus rapidement que le même nombre de cycles simples. Des adaptateurs plus «avancés» pour le rapport d'adresse du registre de données EPP 32 bits et jusqu'à 4 octets peuvent être transférés pour eux en un seul cycle de processeur. Cela garantit des performances jusqu'à 2 Mo / s, suffisantes pour les adaptateurs LAN, les lecteurs externes, les lecteurs de bande et les CD-ROM. Les boucles d'adresse EPP s'exécutent toujours en mode mono-octet uniquement.

Une caractéristique importante d'EPP est que le processeur accède au panneau de commande en temps réel - il n'y a pas de mise en mémoire tampon. Le conducteur peut surveiller l'état et émettre des commandes à des moments précis. Les cycles de lecture et d'écriture peuvent alterner dans un ordre aléatoire ou se dérouler en blocs. Ce type d'échange est pratique pour les contrôleurs orientés registres ou les contrôleurs fonctionnant en temps réel, par exemple les dispositifs de collecte et de contrôle d'informations. Ce mode convient également aux périphériques de stockage, aux adaptateurs réseau, aux imprimantes, aux scanners, etc.

Malheureusement, le mode EPP n'est pas pris en charge par tous les ports - il est absent, par exemple, dans un certain nombre d'ordinateurs portables. Ainsi, lorsque vous développez vos propres appareils dans un souci de meilleure compatibilité avec les ordinateurs, vous devez vous concentrer sur le mode ECP.

1.3.4. Mode ECP

Le protocole ECP (Extended Capability Port) a été proposé par Hewlett Packard et Microsoft pour communiquer avec des contrôleurs tels que des imprimantes ou des scanners. Comme EPP, ce protocole fournit un échange de données hôte bidirectionnel hautes performances avec les contrôleurs.

L'ECP dans les deux sens propose deux types de cycles:

♦ cycles d'écriture et de lecture des données;

♦ écrire et lire des cycles de commande.

Les cycles de commande sont divisés en deux types: transmission des adresses de canal et transmission d'un compteur RLC (Run-Length Count).

Contrairement à EPP, avec le protocole ECP, une norme pour le modèle logiciel (registre) de son adaptateur est immédiatement apparue, qui est décrite dans le protocole de port de capacités étendues IEEE 1284 de Microsoft et la norme d'interface ISA. Ce document définit les propriétés de protocole non spécifiées par la norme IEEE 1284:

♦ compression des données par l'adaptateur hôte selon la méthode RLE;

♦ Tampon FIFO pour les canaux avant et arrière;

♦ application de DMA et entrée-sortie logicielle.

La compression en temps réel à l'aide de la méthode RLE (Run-Length Encoding) vous permet d'atteindre un taux de compression de 64: 1 lors de la transmission d'images raster comportant de longues lignes d'octets répétitifs. La compression ne peut être utilisée que si l'hôte et l'unité centrale le prennent en charge.

Le canal ECP est utilisé pour adresser de nombreux périphériques logiques qui font partie d'un périphérique physique. Par exemple, dans un périphérique combiné fax / imprimante / modem qui se connecte à un seul port parallèle, vous pouvez simultanément recevoir un fax et imprimer sur une imprimante. En mode SPP, si l'imprimante définit un signal occupé, le canal sera occupé par les données jusqu'à ce que l'imprimante les reçoive. En mode ECP, le pilote logiciel adresse simplement un autre canal logique sur le même port.

Le protocole ECP remplace les signaux SPP (tableau 1.6).

Tableau 1.6. Signaux de port LPT dans les E / S ECP

Contactez-nous Signal SPP Nom dans ECP E / S La description
1 Strobe # Hostclk Oh Stroboscope de données, associé à PeriphAck pour la transmission directe (sortie)
14 AutoLF # Hostack Oh Indique le type de cycle (commande / données) lors de la transmission vers l'avant. Utilisé comme signal de confirmation couplé à PeriphClk pour une transmission dans la direction opposée
17 SelectIn # 1284Actif O Élevé indique l'échange en mode IEEE 1284 (faible en mode SPP)
16 Init # ReverseRequest # O Demander l'inverse. Un niveau bas indique que le canal passe en sens inverse
10 Ack # Periphclk Je Stroboscope de données, associé à HostAck pour un transfert en amont
11 Occupé Periphack Je Utilisé comme signal de confirmation associé à HostClk pour la transmission directe. Indique le type de commande / données lors de la transmission dans le sens figuré
12 Paperend AckReverse # Je Confirmation inverse. Traduit en bas en réponse à ReverseRequest #
13 Sélectionnez Xflag¹ Je Drapeau d'extensibilité
15 Erreur # PeriphRequest # ¹ Je Un panneau de commande est installé pour indiquer la disponibilité (disponibilité) du canal de transmission inverse¹
2-9 Les données Les données E / S Canal de données bidirectionnel

¹ Les signaux agissent dans la séquence correspondante (voir ci-dessous)

L'adaptateur ECP génère également des signaux de protocole d'acquittement externes dans le matériel, mais son fonctionnement est considérablement différent du mode EPP.

Dans la fig. 1.5, et le diagramme de deux cycles de transfert direct est montré: un cycle de données est suivi d'un cycle de commande. Le type de cycle est défini par le niveau sur la ligne HostAck: haut dans le cycle de données, bas dans le cycle de commande. Dans une boucle de commande, un octet peut contenir une adresse de canal ou un compteur RLE. Une caractéristique distinctive est le bit 7 (haut): s'il est nul, les bits 0 à 6 contiennent un compteur RLE (0 à 127), si l'un est une adresse de canal. Dans la fig. 1.5, b montre une paire de cycles de rétroaction.

Fig. 1.5. Transmission en mode ECP: a - avant, b - arrière

Contrairement aux diagrammes d'échange EPP, sur la Fig. 1.5 Les signaux des cycles du bus système du processeur ne sont pas représentés. Dans ce mode, l'échange du programme avec le PU est divisé en deux processus relativement indépendants qui sont connectés via le tampon FIFO. Le pilote peut être échangé avec le tampon FIFO à l'aide de DMA ou d'E / S logicielles. L'échange du PU avec le tampon est effectué par l'adaptateur ECP dans le matériel. Un pilote en mode ECP ne dispose pas d'informations sur l'état exact du processus d'échange, mais il est généralement important qu'il soit complet ou non.

Le transfert direct de données sur l'interface externe comprend les étapes suivantes:

1. L'hôte place les données sur le bus de canal et définit le signe du cycle de données (haut niveau) ou de la commande (bas niveau) sur la ligne HostAck.

2. L'hôte définit un niveau bas sur la ligne HostClk, indiquant la validité des données.

3. Le PU répond par une installation de haut niveau sur la ligne PeriphAck.

4. L'hôte définit la ligne HostLCk à un niveau élevé et cette différence peut être utilisée pour enregistrer des données dans le panneau de commande.

5. Le panneau de commande définit un niveau bas sur la ligne PeriphAck pour indiquer qu'il est prêt à recevoir l'octet suivant.

Étant donné que le transfert vers l'ECP s'effectue via des tampons FIFO, qui peuvent être présents des deux côtés de l'interface, il est important de comprendre à quel stade les données peuvent être considérées comme transmises. Les données sont considérées comme transmises à l'étape 4 lorsque la ligne HostClk passe au niveau haut. A ce moment, les compteurs des octets transmis et reçus sont modifiés. Il y a des conditions dans le protocole ECP qui provoquent l'interruption de l'échange entre les étapes 3 et 4. Alors ces données ne doivent pas être considérées comme transmises.

De la fig. 1.5 montre une autre différence entre l'ECP et l'EPP. L'EPP permet au conducteur d'alterner les cycles de transmission avant et arrière sans exiger la confirmation d'un changement de direction. Dans l'ECP, un changement de direction doit être convenu: l'hôte demande une inversion en définissant ReverseRequest #, après quoi il doit attendre la confirmation par le signal AckReverse #. Le cycle précédent pouvant être effectué via un accès direct, le pilote doit attendre que l'accès direct soit terminé ou l'interrompre, décharger la mémoire tampon FIFO, déterminer la valeur exacte du compteur d'octets transmis, puis seulement demander une inversion.

La publication comprend les étapes suivantes:

1. L'hôte demande un changement de direction de canal, définissant un niveau bas sur la ligne ReverseRequest #.

2. L'unité de commande permet un changement de direction en réglant un niveau bas sur la ligne AckReverse #.

3. Le contrôleur place les données sur le bus de canal et définit le signe du cycle de données (haut niveau) ou de la commande (bas niveau) sur la ligne PeriphAck.

4. PU définit un niveau bas sur la ligne PeriphClk, indiquant la validité des données.

5. L'hôte répond par une installation de haut niveau sur la ligne HostAck.

6. L'unité centrale définit le niveau élevé de la ligne PeriphClk; ce différentiel peut être utilisé pour enregistrer des données par l'hôte.

7. L'hôte définit un niveau bas sur la ligne HostAck pour indiquer qu'il est prêt à recevoir l'octet suivant.

1.3.5. Modes et registres du port ECP

L'interface logicielle et les registres ECP des adaptateurs IEEE 1284 sont définis par la spécification Microsoft. Le port ECP peut fonctionner dans différents modes indiqués dans le tableau. 1.7, où le code correspond au champ Mode du registre ECR (bits).

Tableau 1.7. Modes de port ECP

Code Le mode
000 Mode SPP, mode standard (traditionnel)
001 Mode bidirectionnel, port bidirectionnel (type 1 pour PS / 2)
010 Centronics rapide unidirectionnel utilisant FIFO et DMA
011 Mode Port parallèle ECP, le mode ECP réel
100 Mode Port parallèle EPP, mode EPP¹
101 Réservé
110 Mode test, test du fonctionnement FIFO et interruptions
111 Mode configuration, accès aux registres de configuration

¹ Ce mode ne fait pas partie des spécifications Microsoft, mais est traité comme EPP par de nombreux adaptateurs de port si le mode ECP + EPP est défini dans la configuration CMOS.

Le modèle de registre de l'adaptateur ECP (tableau 1.8) utilise les propriétés de l'architecture de bus standard et des adaptateurs ISA, où seules 10 lignes de bus d'adresses de faible ordre sont utilisées pour déchiffrer les adresses des ports d'E / S. Par conséquent, par exemple, les appels aux adresses Port, Port + 400h, Port + 800h ... seront perçus comme des appels à l'adresse Port, qui se situe dans la plage 0-3FFh. Les PC et adaptateurs modernes décodent un plus grand nombre de bits d'adresse, donc les appels aux adresses 0378h et 0778H seront adressés à deux registres différents. Le placement de registres ECR supplémentaires «derrière le dos» des registres de port standard (décalage 400-402Н) a deux objectifs. Premièrement, ces adresses n'ont jamais été utilisées par les adaptateurs traditionnels et leurs pilotes, et leur utilisation dans l'ECP ne conduira pas à un rétrécissement de l'espace d'adressage d'E / S disponible. Deuxièmement, cela garantit la compatibilité avec les anciens adaptateurs au niveau des modes 000–001 et la possibilité de déterminer la présence d'un adaptateur ECP en accédant à ses registres étendus.

Tableau 1.8. Registres ECP

Décalage Prénom R / w Modes ECP¹ Le titre
000 DR R / w 000-001 Registre de données
000 ECPAFIFO R / w 011 Adresse FIFO ECP
001 Sr R / w Tous Registre d'état
002 CR R / w Tous Registre de contrôle
400 SDFIFO R / w 010 FIFO de données de port parallèle
400 ECPDFIFO R / w 011 ECP Data FIFO
400 TFIFO R / w 110 Test fifo
400 ECPCFGA R 111 Registre de configuration A
401 ECPCFGB R / w 111 Registre de configuration B
402 ECR R / w Tous Registre de contrôle étendu

¹ Les registres ne sont disponibles que dans ces modes (les valeurs des bits 7 à 5 du registre ECR sont indiquées)

Chaque mode ECP a (et est disponible) ses propres registres fonctionnels. La commutation des modes s'effectue en écrivant dans le registre ECR. Les modes «veille», activés par défaut, sont 000 ou 001. Dans chacun d'eux, un mode d'entrée d'un demi-octet fonctionne. Vous pouvez toujours passer de l'un de ces modes à un autre, mais à partir des modes plus anciens (010–111), la commutation n'est possible qu'en 000 ou 001. Pour que l'interface fonctionne correctement, avant de quitter les modes plus anciens, vous devez attendre que l'échange d'accès direct se termine et vider le tampon FIFO.

En mode 000 (SPP), le port agit comme un port SPP unidirectionnel contrôlé par logiciel.

En mode 001 (Bi-Di PS / 2), le port agit comme un port PS / 2 bidirectionnel de type 1. Du mode 000, il diffère par la possibilité d'inverser le canal de données sur le bit CR.5.

Le mode 010 (Fast Centronics) est uniquement destiné à une sortie haute performance via le tampon FIFO utilisant DMA. Les poignées de main Centronics sont générées par le matériel. Le signal de demande d'interruption est généré par l'état du tampon FIFO, mais pas par le signal Ack # (la demande d'un seul octet n'intéresse pas le pilote de sortie de bloc rapide).

Le mode 011 est le mode ECP réel décrit ci-dessus Le flux de données et de commandes transmises aux contrôleurs est placé dans la mémoire tampon FIFO via les registres ECPDFIFO et ECPAFIFO, respectivement. Ils sont déduits de FIFO avec le signe correspondant du cycle (état de la ligne HostAck). Le flux de données reçu du PU est extrait du tampon FIFO via le registre ECPDFIFO. L'obtention de l'adresse dans le cycle de commande à partir du PU n'est pas fournie. L'échange avec le registre ECPDFIFO peut également être effectué via le canal DMA.

La compression RLE pendant la transmission est effectuée par programme. Pour envoyer plus de deux octets de données identiques d'affilée, un octet est écrit dans le registre ECPAFIFO, dans lequel les 7 bits inférieurs contiennent un compteur RLC (RLC \u003d 127 correspond à 128 répétitions), et le bit le plus significatif est zéro. Après cela, l'octet lui-même est écrit dans ECPDFIFO. En acceptant cette paire d'octets (octet de commande et octet de données), PU effectue la décompression. Lors de la réception d'un flux de l'unité de contrôle, l'adaptateur ECP effectue la décompression dans le matériel et place les données déjà décompressées dans le tampon FIFO. De cela, il est évident que la sortie de données avec l'utilisation simultanée de la compression et du DMA est impossible.

Le mode 100 (EPP) est un moyen d'activer le mode EPP (s'il est pris en charge par l'adaptateur et activé dans la configuration CMOS).

Le mode 110 (mode test) est conçu pour tester l'interaction de FIFO et des interruptions. Les données peuvent être transférées vers et depuis le registre TFIFO à l'aide de DMA ou par programme. L'échange n'affecte pas l'interface externe. L'adaptateur effectue des opérations inactives à la vitesse d'interface maximale (comme si les signaux d'accusé de réception arrivent sans délai). L'adaptateur surveille l'état de la mémoire tampon et génère des signaux de demande d'interruption si nécessaire. Ainsi, le programme peut déterminer la bande passante maximale du canal.

Le mode 111 (mode Configuration) est destiné à l'accès aux registres de configuration. La mise en surbrillance du mode protège l'adaptateur et le protocole contre les modifications de configuration incorrectes pendant l'échange.

Comme déjà mentionné, chaque mode ECP a ses propres registres fonctionnels (tableau 1.8).

Le registre de données DR est utilisé pour le transfert de données uniquement dans les modes contrôlés par programme (000 et 001).

Le registre d'état SR transmet la valeur des signaux sur les lignes correspondantes (comme dans SPP).

Le registre de contrôle CR a une affectation de bits correspondant au SPP. Dans les modes 010, 011, l'écriture sur les bits 0, 1 (signaux AutoLF # et Strobe #) est ignorée.

Le registre ECPAFIFO est utilisé pour placer des informations de cycles de commande (adresse de canal ou compteur RLE, selon le bit 7) dans le tampon FIFO. Les informations du tampon seront émises dans la boucle de commande de sortie.

Le registre SDFIFO est utilisé pour transférer des données en mode 010. Les données écrites dans le registre (ou envoyées via le canal DMA) sont transmises via le tampon FIFO en utilisant le protocole matériel Centronics. Dans ce cas, le sens de transmission aller doit être spécifié (bit CR.5 \u003d 0).

Le registre DFIFO est utilisé pour l'échange de données en mode 011 (ECP). Les données écrites ou lues dans le registre (ou transmises via le canal DMA) sont transmises via le tampon FIFO en utilisant le protocole ECP.

Le registre TFIFO fournit un mécanisme pour tester le tampon FIFO en mode 110.

Le registre ECPCFGA permet de lire les informations de l'adaptateur (code d'identification en bits).

L'enregistrement ECPCFGB stockera toutes les informations nécessaires au pilote. L'écriture dans le registre n'affecte pas le fonctionnement du port.

Le registre ECR est le principal registre de gestion du PCE. Ses bits ont le but suivant:

♦ ECR - ECP MODE - réglez le mode ECP;

♦ ECR.4 - ERRINTREN # - (Error Interrupt Disable) interdit les interruptions sur le signal Error # (si la valeur du bit est nulle sur un front négatif, une requête d'interruption est générée sur cette ligne);

♦ ECR.3 - DMAEN - (DMA Enable) permet l'échange sur le canal DMA;

♦ ECR.2 - SERVICEINTR - (Interruption de service) interdit les interruptions de service qui sont générées à la fin du cycle DMA (si activé), le seuil de remplissage / vide du tampon FIFO (si le DMA n'est pas utilisé) et l'erreur de dépassement de tampon au-dessus ou en dessous;

♦ ECR.1 - FIFOFS - (FIFO Full Status) signale que le tampon est plein; avec FIFOFS \u003d 1, il n'y a pas d'octets libres dans le tampon;

♦ ECR.0 - FIFOES - (FIFO Empty Status) indique un tampon vide complet; la combinaison FIFOFS \u003d FIFOES \u003d 1 signifie une erreur dans le travail avec FIFO (débordement de dessus ou de dessous).

Lorsqu'un port est en mode standard ou bidirectionnel (000 ou 001), les trois premiers registres sont exactement les mêmes que les registres de port standard. Cela garantit la compatibilité des pilotes avec les anciens adaptateurs et les anciens pilotes avec les nouveaux adaptateurs.

Sur l'interface avec le programme, le port ECP ressemble à EPP: après avoir réglé le mode (écriture du code dans le registre ECR), l'échange de données avec l'appareil est réduit à la lecture ou à l'écriture dans les registres correspondants. L'état de la mémoire tampon FIFO est surveillé soit par le registre ECR, soit par des interruptions de service de maintenance depuis le port. L'ensemble du protocole d'accusé de réception est généré par l'adaptateur dans le matériel. L'échange de données avec le port ECP (sauf pour les logiciels explicites) est également possible grâce à un accès direct à la mémoire (canal DMA), qui est efficace lors du transfert de gros blocs de données.

1.3.6. Négociation du mode IEEE 1284

Les unités centrales de la norme IEEE 1284 ne nécessitent généralement pas que le contrôleur implémente tous les modes spécifiés par cette norme. Pour déterminer les modes et les méthodes de contrôle d'un périphérique spécifique, la norme prévoit une séquence de négociation. La séquence est conçue pour que les appareils plus anciens qui ne prennent pas en charge IEEE 1284 n'y répondent pas et que le contrôleur reste en mode standard. Les périphériques IEEE 1284 peuvent signaler leurs capacités et le contrôleur définit un mode qui satisfait à la fois l'hôte et le PU.

Pendant la phase de négociation, le contrôleur définit l'octet d'extensibilité sur la ligne de données, demandant une confirmation pour mettre l'interface dans le mode requis ou recevoir l'identifiant du panneau de contrôle (Tableau 1.9). L'identifiant est transmis au contrôleur dans le mode demandé (tout mode de canal de retour sauf EPP). Le panneau de commande utilise le signal Xflag (Select en termes SPP) pour confirmer le mode de canal inverse demandé, à l'exception du demi-octet, qui est pris en charge par tous les périphériques IEEE 1284. Le bit de demande Extensibility Link déterminera des modes supplémentaires dans les futures extensions de la norme.

Tableau 1.9. Bits d'octet d'extensibilité

Bit La description Combinaisons de bits valides
7 Demande de lien d'extensibilité - Réservé 1000 0000
6 Demande EPP 0100 0000
5 Demande de mode ECP avec RLE 0011 0000
4 Demande de mode ECP sans RLE 0001 0000
3 Réservé 0000 1000
2 Demander un identifiant d'appareil avec réponse en mode:
grignoter 0000 0100
octet 0000 0101
ECP sans RLE 0001 0100
ECP avec RLE 0011 0100
1 Réservé 0000 0010
0 Demande de grignotage 0000 0001
aucun Demande de mode octet 0000 0000

La séquence de coordination (Fig. 1.6) comprend les étapes suivantes.

1. L'hôte génère l'octet d'extensibilité sur la ligne de données.

2. L'hôte définit le signal haut sur SelectIn # et bas sur AutoFeed #, ce qui signifie le début de la séquence correspondante.

3. Le panneau de commande répond en définissant Ack # faible et élevé - Erreur #, PaperEnd et Select. Un appareil qui "ne comprend pas" la norme 1284 ne donnera pas de réponse et aucune étape supplémentaire ne sera effectuée.

4. L'hôte définit le signal Strobe # à un niveau bas pour écrire l'octet d'extensibilité dans l'unité de contrôle.

5. L'hôte définit le niveau élevé des signaux Strobe # et AutoLF #.

6. Le panneau de commande répond en définissant les signaux PaperEnd et Error # à un niveau bas si le panneau de commande possède un canal de données inversé. Si le mode demandé est pris en charge par l'appareil, la ligne de sélection est définie en haut, si elle n'est pas prise en charge, en bas.

7. Le panneau de commande définit un niveau élevé sur la ligne Ack # pour indiquer la fin de la séquence correspondante, après quoi le contrôleur définit le mode de fonctionnement requis.

Fig. 1.6. Séquence de négociation du mode IEEE 1284

1.3.7. Interfaces physiques et électriques

La norme IEEE 1284 définit les caractéristiques physiques des récepteurs et émetteurs de signaux qui sont compatibles au niveau avec TTL. Les spécifications de port standard ne spécifiaient pas les types de circuits de sortie, les valeurs limites des résistances de charge et la capacité introduite par les circuits et les conducteurs. À des taux de change relativement bas, la dispersion de ces paramètres n'a pas causé de problèmes de compatibilité. Cependant, les modes avancés (fonctionnellement et en termes de vitesse de transmission) nécessitent des spécifications claires. IEEE 1284 définit deux niveaux de compatibilité d'interface. Le premier niveau (niveau I) est défini pour les appareils qui sont lents, mais qui utilisent un changement dans le sens du transfert de données. Le deuxième niveau (niveau II) est défini pour les appareils fonctionnant en modes avancés avec des vitesses élevées et des câbles longs. Les exigences suivantes s'appliquent aux émetteurs.

♦ Les niveaux de signal sans charge ne doivent pas dépasser -0,5 ... + 5,5 V.

♦ Les niveaux de signal à un courant de charge de 14 mA ne doivent pas être inférieurs à +2,4 V pour le niveau haut (VOH) et pas supérieurs à +0,4 V pour le niveau bas (VOL) à courant constant.

♦ L'impédance de sortie du RO mesurée au connecteur doit être de 50 ± 5 ohms au niveau VOH-VOL. Pour garantir une impédance donnée, des résistances série sont utilisées dans les circuits de sortie de l'émetteur. L'adaptation de l'impédance du transmetteur et du câble réduit le bruit impulsif.

♦ La vitesse de montée (descente) de l'impulsion doit être comprise entre 0,05 et 0,4 V / ns.

Voici la liste des exigences du récepteur.

♦ Valeurs de crête admissibles des signaux -2,0 ... + 7,0 V.

♦ Les seuils ne doivent pas être supérieurs à 2,0 V (VIH) pour les hauts et pas inférieurs à 0,8 V (VIL) pour les bas.

♦ Le récepteur doit avoir une hystérésis dans la plage de 0,2 à 1,2 V (les microcircuits spéciaux - déclencheurs Schmitt - ont une hystérésis).

♦ Le courant d'entrée du microcircuit (entrant et sortant) ne doit pas dépasser 20 μA, les lignes d'entrée sont connectées au bus d'alimentation +5 V avec une résistance de 1,2 kOhm.

♦ La capacité d'entrée ne doit pas dépasser 50 pF.

Lorsque la spécification ECP est apparue, Microsoft a recommandé l'utilisation de terminateurs dynamiques sur chaque ligne de l'interface. Cependant, la spécification IEEE 1284 est actuellement suivie dans laquelle les terminateurs dynamiques ne sont pas utilisés. Les circuits d'entrée, de sortie et bidirectionnels recommandés sont illustrés à la Fig. 1.7.

Fig. 1.7. Les circuits terminaux des lignes de l'interface IEEE 1284: a - lignes unidirectionnelles, b - bidirectionnelles

La norme IEEE 1284 définit trois types de connecteurs utilisés. Les types A (DB-25) et B (Centronics-36) sont typiques des câbles d'imprimante traditionnels, le type C - un nouveau connecteur à 36 broches de petite taille.

Les câbles d'interface conventionnels ont 18 à 25 fils, selon le nombre de conducteurs de circuit GND. Ces conducteurs peuvent être entrelacés ou non. Il n'y avait pas d'exigences strictes pour le blindage des câbles. Il est peu probable que de tels câbles fonctionnent de manière fiable à une vitesse de transmission de 2 Mo / s et avec une longueur de plus de 2 m.

La norme IEEE 1284 régit les propriétés des câbles.

♦ Toutes les lignes de signaux doivent être interconnectées avec des fils de retour (communs) séparés.

♦ Chaque paire doit avoir une impédance de 62 ± 6 Ohms dans la gamme de fréquences de 4-16 MHz.

♦ Le niveau de diaphonie entre paires ne doit pas dépasser 10%.

♦ Le câble doit avoir un écran (feuille) couvrant au moins 85% de la surface externe. Aux extrémités du câble, le blindage doit être annelé et connecté à la broche du connecteur.

Les câbles qui répondent à ces exigences sont étiquetés «Conforme IEEE Std 1284–1994». Ils peuvent avoir une longueur allant jusqu'à 10 mètres, les désignations de type sont données dans le tableau. 1.10.

Tableau 1.10. Types de câbles IEEE 1284

Tapez Décryptage Connecteur 1 Connecteur 2
Amam Type A Male - Type A Male A (prise) A (prise)
Amaf Type A mâle - Type A femelle A (prise) A (prise)
Ab Type A Male - Tour B Plug - câble d'imprimante standard A (prise) Dans
AC Type A Male - Tour With Plug - Nouveau câble d'imprimante A (prise) Avec
BC Tour In Plug - Type avec prise Dans Avec
CC Fiche Ture C - Fiche de type C Avec Avec

1.3.8. Développement de la norme IEEE 1284

Voici quelques ajouts à la norme de base IEEE 1284.

♦ IEEE P1284.1 "Norme pour les technologies de l'information pour l'interface imprimante / scanner indépendante du transport (TIP / SI)." Cette norme est en cours d'élaboration pour la gestion et la maintenance des scanners et imprimantes sur la base du protocole Network Printing Alliance (NPAP).

♦ Norme IEEE P1284.2 "pour le test, la mesure et la conformité à la norme IEEE Std. 1284 ”est la norme pour tester les ports, câbles et périphériques pour la compatibilité avec IEEE 1284.

♦ Norme IEEE P1284.3 "pour les extensions d'interface et de protocole vers IEEE Std. 1284 Ports de périphériques et d'adaptateurs hôtes conformes »- une norme pour les pilotes et l'utilisation des périphériques par le logiciel d'application. Les spécifications du BIOS pour l'utilisation d'EPP par les pilotes DOS sont acceptées. Une norme est en cours d'élaboration pour l'utilisation partagée d'un seul port par une chaîne d'appareils ou un groupe d'appareils connectés via un multiplexeur.

♦ Norme IEEE P1284.4 "pour la livraison de données et les canaux logiques pour IEEE Std. 1284 Interfaces »vise à implémenter un protocole de paquets pour un transfert de données fiable via un port parallèle. La base est le protocole MLC (Multiple Logical Channels) de Hewlett-Packard, mais sa compatibilité n'est pas garantie dans la version finale de la norme.

1.4. Prise en charge du système de port LPT

La prise en charge du système pour le port LPT comprend la recherche des ports installés et des services d'impression (Int 17h, voir la clause 8.3.3). Pendant le test POST initial, le BIOS vérifie les ports parallèles à 3BCh, 378h et 278h et place les adresses de base des ports détectés dans la zone de données BIOS 0: 0408h, 040Ah, 040Ch, 040Eh. Ces cellules stockent les adresses de port LPT1-LPT4, une valeur nulle de l'adresse est un signe de l'absence d'un port avec ce numéro. Dans les cellules 0: 0478, 0479, 047A, 047B, les constantes spécifiées spécifient le délai d'expiration pour ces ports.

La recherche de ports est généralement effectuée de manière très primitive - un octet de test (AAh ou 55h) est affiché à l'adresse de base (dans le registre de données du port prévu), puis la saisie à la même adresse est effectuée. Si l'octet lu correspond à l'octet enregistré, on suppose qu'un port LPT est trouvé; son adresse est placée dans la cellule BIOS Data Area. Les adresses des ports de base peuvent ensuite être modifiées par programme. L'adresse du port LPT4 ne peut pas être définie par le BIOS lui-même, car la liste des adresses de recherche standard ne contient que les trois ci-dessus.

Les ports détectés sont initialisés - un signal Init # est généré et supprimé en écrivant dans le registre de contrôle, après quoi la valeur 0Ch correspondant à l'état initial des signaux d'interface est écrite. Dans certains cas, le signal Init # est actif à partir du moment d'une réinitialisation matérielle jusqu'à ce que le port soit initialisé au démarrage du système d'exploitation. Cela peut être vu par le comportement de l'imprimante allumée lors d'un redémarrage de l'ordinateur - le voyant On-Line s'éteint pendant longtemps. La conséquence de ce phénomène est l'impossibilité d'imprimer des écrans (par exemple, les paramètres de configuration du BIOS) en appuyant sur la touche Impr écran avant de charger le système d'exploitation.

1.5. Port parallèle et PnP

La plupart des périphériques modernes connectés au port LPT prennent en charge les fonctions standard 1284 et PnP. Pour prendre en charge ces fonctions, un ordinateur, d'un point de vue matériel, suffit d'avoir un contrôleur d'interface conforme à la norme 1284. Si le périphérique connecté prend en charge PnP, il peut «négocier» avec le port représentant les «intérêts» de l'ordinateur sur les modes d'échange possibles en utilisant le protocole de correspondance de mode 1284. De plus, pour que PnP fonctionne, l'appareil connecté doit fournir au système d'exploitation toutes les informations nécessaires sur lui-même. Au minimum, ce sont des identificateurs de fabricant, des modèles et un ensemble de commandes prises en charge. Des informations plus détaillées sur le périphérique peuvent inclure un identifiant de classe, une description détaillée et un identifiant de périphérique avec lequel la compatibilité est assurée. Conformément aux informations reçues pour prendre en charge cet appareil, le système d'exploitation peut prendre des mesures pour installer le logiciel requis.

Les appareils avec prise en charge PnP sont reconnus par le système d'exploitation au stade de son démarrage, s'ils sont bien sûr connectés au port par un câble d'interface et sous tension. Si Windows découvre un périphérique PnP connecté différent de ce qui est écrit dans son registre pour ce port (ou juste un nouveau périphérique), il essaie d'installer les pilotes requis pour le périphérique à partir du kit de distribution du système d'exploitation ou du package fourni avec le nouveau périphérique. Si Windows ne souhaite pas remarquer un périphérique PnP nouvellement connecté, cela peut indiquer un dysfonctionnement du port ou du câble. Le système PnP ne fonctionne pas si l'appareil est connecté avec un câble «non bidirectionnel» bon marché qui n'a pas de connexion SelectIn # (broche 17 du port LPT et broche 36 du connecteur Centronics).

1.6. Utilisation du port LPT

En règle générale, le port LPT est utilisé pour connecter l'imprimante (voir la clause 8.3.1), mais cela ne couvre pas son utilisation.

Différents câbles sont utilisés pour connecter deux ordinateurs via une interface parallèle, selon les modes des ports utilisés. Le plus simple et le plus lent est un mode grignotage qui fonctionne sur tous les ports. Pour ce mode, il suffit d'avoir 10 signaux et un fil commun dans le câble. Le câblage des connecteurs de câbles est donné dans le tableau. 1.11. La connexion de deux PC avec ce câble est prise en charge par un logiciel standard tel qu'Interlnk de MS-DOS ou Norton Commander. Notez qu'un protocole différent est utilisé ici que celui décrit dans la clause 1.3.1.

Tableau 1.11. Câble de communication PC-PC (4 bits)

X1, connecteur PC # 1 X2, connecteur PC # 2
Bit Contactez-nous Contactez-nous Bit
DR.0 2 15 SR.3
DR.1 3 13 SR.4
DR.2 4 12 Sr.5
DR.3 5 10 SR.6
DR.4 6 11 SR.7
SR.6 10 5 DR.3
SR.7 11 6 DR.4
Sr.5 12 4 DR.2
SR.4 13 3 DR.1
SR.3 15 2 DR.0
GND 18-25 18-25 GND

Connecteurs X1 et X2 - DB25-P (fiches).

La communication à haut débit entre deux ordinateurs peut également être effectuée en mode ECP (le mode EPP n'est pas pratique car il nécessite la synchronisation des cycles d'entrée / sortie de bus de deux ordinateurs).

Dans le tableau. 1.12 le câblage est montré, dans un tableau similaire des livres précédents de l'auteur (voir et) il y avait une erreur (les contacts 13 et 15 sont inversés). De tous les signaux du câble, seul PeriphRequest # (broche 15) n'est pas utilisé. Il est recommandé d'insérer des résistances séquentielles (0,5–1 kOhm) dans le circuit des lignes de données qui empêchent le flux de courants trop élevés lorsque les ports de données des deux ordinateurs sont en mode de sortie. Cette situation se produit lorsque le logiciel de communication informatique n'est pas déjà en cours d'exécution. La communication en mode ECP est prise en charge par Windows 9x, le pilote PARALINK.VxD est inclus dans le package de livraison de ces systèmes d'exploitation, mais en raison d'une erreur interne, il est inopérant. Le correctif pour ce pilote, ainsi que l'utilitaire de test et les descriptions nécessaires, sont disponibles sur le réseau (www.lpt.com, www.lvr.com/parport.htm).

Tableau 1.12. Câble de communication PC-PC en mode ECP et en mode octet

Connecteur X1 Connecteur x2
Contactez-nous Nom dans ECP Nom dans ECP Contactez-nous
1 Hostclk Periphclk 10
14 Hostack Periphack 11
17 1284Actif Xflag 13
16 ReverseRequest # AskReverse # 12
10 Periphclk Hostclk 1
11 Periphack Hostack 14
12 AckReverse # ReverseRequest # 16
13 Xflag 1284Actif 17
2, 3…9 Les données Les données 2, 3…9

La connexion du scanner au port LPT n'est efficace que si le port fournit au moins le mode bidirectionnel (Bi-Di), car le flux principal est entré. Il est préférable d'utiliser le port ECP si ce mode est pris en charge par le scanner (ou EPP, ce qui est peu probable).

La connexion de lecteurs externes (Iomega Zip Drive, CD-ROM, etc.), d'adaptateurs LAN et d'autres périphériques d'entrée-sortie symétriques a ses propres spécificités. En mode SPP, avec le ralentissement de l'appareil, une asymétrie fondamentale de ce mode est perceptible: la lecture des données est deux fois plus lente que l'écriture (très lente). L'utilisation du mode bidirectionnel (Bi-Di ou PS / 2 Tour 1) éliminera cette asymétrie - les vitesses seront égales. Ce n'est qu'en passant à EPP ou ESR que vous pouvez obtenir une vitesse normale. En mode EPP ou ECP, la connexion au port LPT est presque aussi rapide que la connexion via le contrôleur ISA. Cela est également vrai lors de la connexion de périphériques avec une interface de bus standard aux ports LPT via des convertisseurs d'interface (par exemple, LPT-IDE, LPT-SCSI, LPT-PCMCIA). Notez que le disque dur IDE connecté via un adaptateur au port LPT du système peut être représenté comme un périphérique SCSI (c'est plus logique d'un point de vue logiciel).

Dans le tableau. 1.13 décrit la fonction des bornes du connecteur de port LPT dans différents modes et leur correspondance avec les bits des registres du port standard.

Tableau 1.13. Affectation des broches du connecteur de port LPT et des bits de registre en modes SPP, ECP et EPP

Contactez-nous E / S Bit¹ SPP ECP EPP
1 O / i CR.0 \\ Strobe # Hostclk Écrivez #
2 O / i DR.0 Données 0 Données 0 Données 0
3 O / i DR.1 Données 1 Données 1 Données 1
4 O / i DR.2 Données 2 Données 2 Données 2
5 O / i DR.3 Données 3 Données 3 Données 3
6 O / i DR.4 Données 4 Données 4 Données 4
7 O / i DR.5 Données 5 Données 5 Données 5
8 O / i DR.6 Données 6 Données 6 Données 6
9 O / i DR.7 Données 7 Données 7 Données 7
10 Je SR.6 Ack # Periphclk INTR #
11 Je SR.7 \\ Occupé Periphack Attendez #
12 Je Sr.5 Paperend AckReverse #
13 Je SR.4 Sélectionnez Xflag
14 O / i CR.1 \\ LF automatique # Hostack DataStb #
15 Je SR.3 Erreur # PeriphRequest #
16 O / i CR.2 Init # ReverseRequest # Réinitialiser #
17 O / i CR.3 \\ Sélectionner dans # 1284Actif AddrStb #

¹ Le symbole «\\» indique des signaux inversés (1 dans le registre correspond à un niveau de ligne bas).

² Défini par l'utilisateur.

1.7. Configuration des ports LPT

Le contrôle du port parallèle est divisé en deux étapes: la préconfiguration (installation) du matériel du port et la commutation actuelle (opérationnelle) des modes de fonctionnement par l'application ou le logiciel système. La commutation en ligne n'est possible que dans les limites des modes autorisés lors de la configuration. Cela garantit la possibilité de faire correspondre le matériel avec le logiciel et de bloquer les fausses commutations causées par des actions de programme incorrectes.

La configuration du port LPT dépend de son exécution. Le port situé sur la carte d'extension (multicarte) installée dans l'emplacement ISA ou ISA + VLB est configuré par des cavaliers sur la carte elle-même. Le port de la carte système est configuré via la configuration du BIOS.

Les paramètres à configurer sont listés ci-dessous.

♦ L'adresse de base est 3BCh, 378h ou 278h. Lors de l'initialisation, le BIOS vérifie la disponibilité des ports par des adresses dans cet ordre et, en conséquence, attribue des noms logiques LPT1, LPT2, LPT3 aux ports détectés. L'adresse 3BCh possède un adaptateur de port situé sur une carte MDA ou HGC. La plupart des ports sont configurés par défaut à 378h et peuvent passer à 278h.

♦ Ligne de demande d'interruption utilisée: pour LPT - IRQ7, pour LPT2 - IRQ5. Traditionnellement, les interruptions de l'imprimante ne sont pas activées et cette ressource rare peut être sauvegardée. Cependant, lorsque vous utilisez les modes haute vitesse ECP (ou Fast Centronics), le fonctionnement d'interruption peut augmenter considérablement les performances et réduire la charge du processeur.

♦ Utilisation du canal DMA pour les modes ECP et Fast Centronics - résolution et numéro de canal DMA.

♦ Modes de fonctionnement des ports:

SPP - le port fonctionne uniquement en mode contrôlé par programme unidirectionnel standard;

PS / 2, alias bidirectionnel - diffère du SPP par la possibilité d'inverser le canal (réglage CR.5 \u003d 1);

Fast Centronics - génération matérielle du protocole Centronics à l'aide d'un tampon FIFO et, éventuellement, de DMA;

EPP - selon l'utilisation des registres, le port fonctionne en mode SPP ou EPP;

ECP - par défaut, il passe en mode SPP ou PS / 2, en écrivant dans ECR, il peut être transféré dans n'importe quel mode ECP, mais le transfert dans EPP en écrivant le code 100 dans ECR n'est pas garanti;

ECP + EPP est identique à ECP, mais l'écriture du code de mode ECR 100 transfère le port à EPP.

Le choix du mode EPP, ECP ou Fast Centronics à lui seul n'augmente pas la vitesse d'échange avec les contrôleurs connectés, mais permet uniquement au pilote et aux contrôleurs de définir le mode optimal dans leur «compréhension». La plupart des pilotes et applications modernes essaient d'utiliser des modes efficaces, donc «se couper les ailes» en installant des modes simples sans raison valable n'en vaut pas la peine.

Les imprimantes et les scanners peuvent souhaiter un mode ECP. Windows (3.x, 9x et NT) possède des pilotes système pour ce mode. Sous DOS, l'impression via ECP n'est prise en charge que par un pilote téléchargeable spécial.

Les cartes réseau, les lecteurs externes et les CD-ROM connectés au port parallèle peuvent utiliser le mode EPP. Pour ce mode, aucun pilote spécial n'a encore été appliqué; Le support EPP est inclus dans le pilote du périphérique lui-même.

1.8. Échecs et tests des ports parallèles

Il est raisonnable de commencer à tester les ports parallèles en vérifiant leur présence dans le système. La liste des adresses des ports installés apparaît dans le tableau affiché par le BIOS à l'écran avant de charger l'OS. La liste peut être consultée à l'aide de programmes de test ou directement dans la zone de données du BIOS à l'aide du débogueur.

Si le BIOS détecte moins de ports que installés physiquement, il est fort probable que les deux ports reçoivent la même adresse. Dans le même temps, le fonctionnement d'aucun des ports en conflit n'est garanti: ils émettront simultanément des signaux, mais lors de la lecture du registre d'état, un conflit sur le bus risque d'entraîner une corruption des données. Le test logiciel d'un port sans prise de diagnostic (Loop Back) ne montrera pas d'erreurs, car les données des registres de sortie sont lues, et elles coïncideront pour tous les conflits (ports fonctionnant individuellement). C'est exactement le genre de test que fait le BIOS lors de la vérification des ports. Cette situation doit être traitée en installant séquentiellement les ports et en observant les adresses apparaissant dans la liste.

Si un seul port est physiquement installé et que le BIOS ne le détecte pas, le port est désactivé lors de la configuration ou il a échoué (probablement en raison d'une violation des règles de connexion). Si vous êtes chanceux, le dysfonctionnement est éliminé en «secouant» la carte dans la fente - il y a parfois des problèmes avec les contacts.

De tels «miracles» sont également observés - lorsque le DOS redémarre à chaud après Windows 95, le port n'est pas visible (et les applications ne peuvent pas imprimer à partir de MS-DOS). Cependant, après un redémarrage, le port DOS est en place. Ce phénomène est plus facile à supporter qu'à combattre.

Le test des ports à l'aide de programmes de diagnostic vous permet de vérifier les registres de sortie et, lorsque vous utilisez des fiches spéciales, les lignes d'entrée. Étant donné que le nombre de lignes de sortie du port (12) et de l'entrée (5) est différent, une vérification complète du port à l'aide d'un stub passif est fondamentalement impossible. Différents programmes de test nécessitent l'utilisation de différents talons (Fig. 1.8).

Fig. 1.8. Circuit de raccord pour tester le port LPT: a - pour CheckIt, b - pour Norton Diagnostics

La plupart des problèmes lors de l'utilisation des ports LPT sont dus aux connecteurs et aux câbles. Pour vérifier le port, le câble et l'imprimante, vous pouvez utiliser des tests spéciaux de programmes de diagnostic populaires (CheckIt, PCCheck, etc.). Vous pouvez essayer d'imprimer simplement un fichier de caractères sur l'imprimante.

♦ Si la sortie du fichier du point de vue DOS réussit (la copie du fichier sur un périphérique avec le nom LPTn ou PRN est rapide et réussie), et l'imprimante (réparable) n'a pas imprimé un seul caractère - il s'agit très probablement d'un circuit ouvert (pas d'une broche dans le connecteur) du circuit Strobe # .

♦ Si l'imprimante est à l'état En ligne et qu'un message s'affiche indiquant qu'elle n'est pas prête, recherchez la raison sur la ligne Occupé.

♦ Si l'imprimante connectée au port en mode normal (SPP) s'imprime normalement et que le passage en mode ECP commence à échouer, vous devez vérifier le câble pour voir s'il répond aux exigences de la norme IEEE 1284 (voir ci-dessus). Les câbles bon marché avec des fils non commutés fonctionnent normalement à des vitesses de 50 à 100 Kb / s, mais à la vitesse de 1-2 Mo / s fournie par l'ECP, ils ont parfaitement le droit de ne pas fonctionner, en particulier avec une longueur de plus de 2 m.

♦ Si, lors de l'installation du pilote d'imprimante PnP, un message s'affiche suggérant l'utilisation d'un «câble bidirectionnel», vérifiez la connexion de la piste 17 du connecteur DB-25 à la piste 36 du connecteur Centronics. Bien que cette connexion ait été initialement envisagée, elle manque dans un certain nombre de câbles.

♦ Si l'imprimante interprète mal les informations d'impression, les lignes de données peuvent se casser (ou être courtes). Dans ce cas, il est pratique d'utiliser un fichier contenant une séquence de codes pour tous les caractères imprimés. Si le fichier est imprimé avec la répétition de certains caractères ou de leurs groupes, le fil pendant des données d'interface peut être facilement calculé à partir de la fréquence de répétition. Le même fichier est commodément utilisé pour vérifier la russification matérielle de l'imprimante.

Les interruptions matérielles du port LPT ne sont pas toujours utilisées. Même le programme d'impression en arrière-plan PRINT DOS fonctionne avec le port pour interroger l'état, et son processus de maintenance commence par une interruption de la minuterie. Par conséquent, les dysfonctionnements associés au circuit d'interruption du port ne se manifestent pas souvent. Cependant, les systèmes d'exploitation véritablement multitâches (tels que NetWare) essaient de fonctionner avec le port par interruption. Vous ne pouvez tester la ligne d'interruption qu'en vous connectant au port de télécommande ou à un mannequin. Si vous connectez un adaptateur LAN à un port avec un canal d'interruption défectueux, cela fonctionnera probablement, mais à une vitesse très faible: pour toute demande, la réponse viendra avec un retard de dizaines de secondes - le paquet reçu de l'adaptateur ne sera pas reçu par interruption (immédiatement par arrivée), mais en fonction d'un timeout externe.

Le port Lpt, souvent appelé parallèle, est l'un des ports PC les plus anciens. Bien qu'aujourd'hui ces ports ne soient pas disponibles sur toutes les cartes mères, ils ont quand même une certaine distribution, et il est donc très intéressant pour de nombreux utilisateurs d'ordinateurs et d'équipements de bureau, en particulier d'imprimantes, de savoir de quoi il s'agit.

Vous devez d'abord comprendre ce que le port d'abréviation lpt signifie par lui-même. Ainsi, LPT signifie une réduction de la combinaison de plusieurs mots anglais, à savoir: Line Print Terminal. Traduit en russe, LPT signifie un terminal d'impression en ligne. Sur la base du nom, il devient clair qu'il est principalement destiné à l'imprimante. Mais d'un point de vue théorique, certains autres appareils peuvent également être connectés au LPT. Pour cela, utilisez un adaptateur spécial - adaptateur lpt. Il convient d'ajouter qu'il a un autre nom adopté dans les cercles d'utilisateurs - le port d'imprimante.

En général, le port lpt a une assez longue histoire de développement. Il a été développé par les employés de Centronics, qui au début des années 70 du siècle dernier s'est spécialisé dans la production de dispositifs d'impression matricielle. Au début des années 80, ce port d'imprimante était largement utilisé par IBM, qui l'utilisait sur leurs PC. Au cours de cette décennie, le port lpt a même réussi à devenir l'option standard nécessaire pour connecter des appareils à haute vitesse disponibles au cours de ces années.

Initialement, l'interface LPT a été introduite dans plusieurs éditions différentes. De plus, dans la version originale, il était unidirectionnel, c'est-à-dire avec son aide, il a été possible de transférer des informations exclusivement vers un périphérique. Bien sûr, ce genre de situation ne convenait pas à de nombreux utilisateurs, car déjà au cours de ces années, des dispositifs d'impression ont été émis qui nécessitaient une transmission de données bidirectionnelle. C'est pourquoi quelque temps plus tard, les développeurs ont dû améliorer plusieurs fois l'interface LPTl. Ce processus a duré jusqu'à l'introduction de sa norme, appelée IEEE 1284. Ainsi, les développeurs ont présenté le schéma de port final. La nouvelle norme a pris en charge plusieurs modes de fonctionnement différents. De plus, il était compatible avec les normes précédentes. Dans sa version finale, l'interface de l'imprimante pouvait prendre en charge à cette époque une vitesse de transfert d'informations assez élevée, qui atteignait 5 Mb / s!

Comment fonctionne le port parallèle?

Le nom LPT parallèle est dû au fait que la transmission de données dans le câble qui lui est connecté s'effectue en parallèle, pour laquelle plusieurs conducteurs sont utilisés simultanément. C'est pour cette raison qu'il diffère considérablement du poisson-chat, ce qui est cohérent. Le nombre de conducteurs dans le câble qui se connecte au LPT est généralement de huit. De plus, il peut être localisé plusieurs lignes conçues pour transmettre des signaux de commande. Ainsi, l'utilisation du port com par rapport au LPT présente un certain nombre de limitations et d'inconvénients importants.

Bien que le port Centronics ait été utilisé dans une plus large mesure pour établir une connexion entre l'imprimante et le PC, il a néanmoins été utilisé à d'autres fins. Par exemple, en utilisant LPT, vous pouvez connecter directement deux ordinateurs personnels l'un à l'autre - pour cela, un câble Interlink est généralement utilisé. Jusqu'à ce que les cartes réseau Ethernet se généralisent, une connexion de ce type était très populaire. Bien sûr, il ne pouvait pas fournir aux utilisateurs des vitesses de transfert d'informations très élevées, mais, malgré cela, cette façon de connecter deux ordinateurs entre eux au cours de ces années était presque la seule possible. Il convient d'ajouter qu'il existe même des clés spéciales de type électronique, conçues spécifiquement pour la connexion à un port parallèle.

À propos des fonctionnalités de LPT

Comme mentionné ci-dessus, contrairement à com, LPT prend en charge le transfert de données parallèle. Dans les premiers modèles d'ordinateurs personnels, il était l'un des plus rapides. Son interface, en raison de la capacité de transmettre des informations sur plusieurs lignes, est en grande partie similaire dans l'architecture aux bus utilisés dans les PC. Mais c'est précisément une circonstance de ce genre qui limite la longueur du câble, qui ne peut dépasser 5 mètres. Sinon, des interférences se produiront constamment dans la connexion entre le PC et l'imprimante.

Pour organiser le transfert de données habituel, en règle générale, 10 lignes de signal sont nécessaires. Quant aux autres lignes, elles sont utilisées pour la compatibilité avec la norme de câble Centronics. Le paramètre de tension maximum utilisé dans les lignes de signaux LTP est généralement +5 V.

Connecteur de port et câble Centronics

Si nous parlons du connecteur de port parallèle, il se trouve sur la carte mère elle-même, bien que jusqu'au milieu des années 90 du siècle dernier, cet élément était généralement situé sur le soi-disant multicarte, qui est insérée dans le connecteur d'extension. La sortie LPT est un connecteur DB25 à 25 broches.

Pour établir une connexion entre un ordinateur personnel et un équipement de bureau d'impression à l'aide d'un port personnel, vous devez utiliser un câble Centronics. Dans le même temps, le connecteur disponible sur les équipements de bureau est à 36 broches. Ainsi, la principale caractéristique de ce câble est la présence de deux connecteurs différents des deux côtés.
  Tenez également compte du fait que le connecteur Centronics est souvent appelé le connecteur de câble conçu pour la carte mère d'un ordinateur personnel, mais en fait c'est un connecteur d'imprimante - c'est-à-dire celui qui comprend 36 contacts. Quant au connecteur conçu spécifiquement pour LPT, il s'appelle Amphenolstacker. De telles différences de noms doivent être connues afin d'appeler toutes choses par leurs noms propres.

Résumé

En conclusion, nous pouvons dire que le port parallèle du terminal d'impression de ligne est une interface PC, qui est maintenant assez obsolète. Malgré sa large diffusion au cours des dernières décennies du siècle dernier, ce port ne bénéficie pas aujourd'hui d'un grand soutien de la part de nombreuses entreprises qui produisent du matériel informatique, du matériel de bureau et des logiciels. Malgré cela, LPT est toujours utilisé avec succès sur de nombreux modèles de PC et périphériques d'impression obsolètes. Mais assez souvent, pour établir une connexion entre un ordinateur et une ancienne imprimante, un adaptateur com-lpt est nécessaire. Aujourd'hui, en principe, ils peuvent être trouvés en vente, mais si vous avez les connaissances et les compétences nécessaires, vous pouvez masquer complètement un tel adaptateur vous-même.

  Dmitry Ivanov, 21 septembre 2009   L'article est finalisé et mis à jour le 23 janvier 2012

Pendant l'existence de ce site, on me pose souvent la même question, qui peut être décrite approximativement comme suit:



Finalement, j'ai décidé de décrire ce problème plus en détail et d'écrire un article. Oui, en effet, vous devez maintenant rechercher des PC fixes avec un port LPT (c'est-à-dire que loin de chaque "mère" est désormais fournie avec un port LPT). À propos des ordinateurs portables n'ont généralement pas à dire. Les modèles de port LPT modernes ne sont pas du tout utilisés. Seules des machines très chères et spécialisées, telles que DELL, peuvent se targuer d'avoir ce port.

De plus, maintenant en vente, vous pouvez acheter gratuitement de tels appareils appelés adaptateurs LPT-USB.

L'instruction indique que cet appareil est entièrement compatible avec diverses imprimantes, scanners, etc. Nous connectons l'adaptateur au port USB, installons le pilote. Nous regardons le gestionnaire de périphériques. Très probablement dans la branche "Ports LPT / COM"  aucun d'eux n'est apparu (bien qu'il y ait des exceptions). Très probablement, soit une nouvelle branche avec un périphérique étrange portant le nom, par exemple, LPT1USB  ou une étrange entrée sur "Périphérique USB prenant en charge les imprimantes LPT". Nous essayons d'exécuter un exemple des articles ci-dessus. Et ce n'était pas là - rien ne fonctionne. Nous essayons l'adresse de port LPT1 - rien ne fonctionne. Nous essayons l'adresse du port LPT2. Malheureusement, une telle modernisation de l'adresse dans les requêtes ne mène également à rien - les LED ne s'allument pas et ne s'allument pas.

Pour comprendre quel est le problème ici, revenons au port LPT "fer natif" habituel - LPT1, qui sort de la carte mère. Allons au gestionnaire de périphériques, regardons les propriétés de notre port. Là, nous verrons une telle image. Vous pouvez clairement voir que le système a enregistré l'adresse d'E / S de base 0x378 et le numéro de demande d'interruption 7. Tout est correct.

Plongez maintenant dans le niveau de programmation. Dans les exemples des articles ci-dessus, nous contournons le système de protection d'E / S par des méthodes légales et illégales communiquées directement avec un registre d'E / S réellement existant, auquel est attribuée l'adresse 0x378. Tout est clair ici. N'oublions pas que Windows recommande de travailler avec un port LPT en utilisant les appels d'API de fonction - OpenFile (), WriteFile (), ReadFile (). Les applications qui utilisent le port LPT pour échanger des informations sur une interface parallèle avec des périphériques externes (une imprimante, par exemple) le font. Il n'a aucune tâche à installer sur n'importe quel morceau du registre Les données  unité ligistique. Il (l'application) a juste besoin d'envoyer un paquet de données, et quiconque aura les lignes à «tirer» et à lire ne sera pas très intéressé. Ces opérations sont effectuées par le pilote du système de port LPT. Il est chargé en mémoire lors du chargement du système d'exploitation. Quand on appelle une fonction OpenFile ("LPT1", ....)  nous nous tournons essentiellement vers le pilote de port, qui a le nom symbolique LPT1. Le pilote fait une grande partie de tout le travail - interdit l'accès au port à d'autres processus, configure les paramètres du protocole de transfert de données, implémente réellement ce transfert, mais finalement tout se résume au contrôle direct des bits individuels du port LPT au niveau du noyau du système d'exploitation.

Essayons maintenant de travailler avec notre adaptateur USB-LPT. Commençons car cela ne semble pas étrange, avec des appels API. Nous lançons OpenFile ("LPT1USB", ...)  (selon la façon dont cet adaptateur est appelé dans le gestionnaire de périphériques, le cas échéant). Que se passe-t-il avec ça? Le fait est que maintenant nous ne travaillerons pas avec le pilote LPT du port OS, mais avec le pilote de cet adaptateur! Voilà l'astuce alors! Il reçoit un paquet de données de notre application utilisateur et dans le format requis via le pilote du système USB envoie ce paquet au contrôleur USB, dont les "jambes" dépassent de la prise LPT externe sur le fil (eh bien, c'est une "explication grossière"). Vous voyez, il n'y a aucune indication d'accéder aux registres aux adresses 0x378 (0x278), car ils ne sont tout simplement pas là!

Par conséquent, lorsque vous essayez d'exécuter des exemples de cette section et contactez directement les adresses 0x378 (si ce "pseudo port" s'appelait LPT1USB ou quelque chose comme ça), 0x278 (LPT2 _...), etc. rien ne se passe. Ils ne sont tout simplement pas là! Mais le programme qui fonctionne via les appels API ne remarquera rien - tout le travail de bas niveau est effectué par le pilote, et cela n'a pas d'importance pour l'application quel pilote et où les paquets de données iront (vers le vrai port d'E / S ou le contrôleur hôte USB)! Essayez d'ouvrir les propriétés du pseudo-port dans le gestionnaire de périphériques. Aucun onglet de ressource? Oui, mais les valeurs sont inadéquates ou l'onglet est-il désactivé? Voilà le point.



Pourquoi 99%? Parce qu'il existe des adaptateurs USB-LPT auto-fabriqués, qui sont définis par Windows comme un port LPT1 à part entière et auquel il est attribué une adresse complètement ordinaire 0x378. Les appels directs aux broches de port sont réussis! Cependant, il s'agit d'une conception très non standard (principalement un pilote qui intercepte les appels à l'adresse de base du port LPT1). Tout cela n'est pas très fiable (mise à jour du système d'exploitation - et la conception perd sa capacité de travail) et pour une utilisation, il ne peut être recommandé qu'avec un étirement.



Aussi étrange que cela puisse paraître - la décision est. Vous pouvez toujours ajouter un véritable port LPT à votre ordinateur de bureau ou portable. Tout d'abord, oubliez tout de suite les adaptateurs USB. Pour résoudre ce problème, vous devez acheter PCI-LPT  un adaptateur pour un ordinateur de bureau (un emplacement PCI libre est requis) ou PCMCIA-LPT  adaptateur pour ordinateur portable (voir photo ci-dessous).


Dans le cas de l'utilisation de ces appareils, il n'y a aucun problème. Ils sont définis comme de véritables ports LPT "natifs". L'entrée correspondante sera ajoutée au gestionnaire de périphériques le "Ports LPT / COM". L'accès direct aux broches du port fonctionnera.

Port parallèle et RPR

La plupart des périphériques modernes connectés au LPT-nop prennent en charge les fonctions standard et Rpr 1284. Pour prendre en charge ces fonctions, un ordinateur, d'un point de vue matériel, suffit d'avoir un contrôleur d'interface conforme à la norme 1284. Si le périphérique connecté prend en charge RPR, il peut «négocier» avec le port représentant les «intérêts» de l'ordinateur sur les modes d'échange possibles en utilisant le protocole de correspondance de mode 1284. De plus, pour que le RPR fonctionne, l'appareil connecté doit informer le système d'exploitation de toutes les informations nécessaires sur lui-même. Au minimum, ce sont des identificateurs de fabricant, des modèles et un ensemble de commandes prises en charge. Des informations plus détaillées sur le périphérique peuvent inclure un identifiant de classe, une description détaillée et un identifiant de périphérique avec lequel la compatibilité est assurée. Conformément aux informations reçues pour prendre en charge cet appareil, le système d'exploitation peut prendre des mesures pour installer le logiciel requis.

Les appareils prenant en charge RPR sont reconnus par le système d'exploitation au stade de son chargement, sauf s'ils sont bien sûr connectés au port par un câble d'interface et sous tension. Si Windows découvre un périphérique Rpr connecté différent de ce qui est écrit dans son registre pour ce port (ou simplement un nouveau périphérique), il essaie d'installer les pilotes requis pour le périphérique à partir du kit de distribution du système d'exploitation ou du package fourni avec le nouveau périphérique. Si Windows ne souhaite pas remarquer un périphérique PPR nouvellement connecté, cela peut indiquer un dysfonctionnement du port ou du câble. Le système RPR ne fonctionne pas si l'appareil est connecté avec un câble «non bidirectionnel» bon marché qui n'a pas de connexion Selectln # (broche 17 du port LPT et broche 36 du connecteur Centronics).

En règle générale, le port LPT est utilisé pour connecter l'imprimante (voir la clause 8.3.1), mais cela ne couvre pas son utilisation.

Pour connecter deux ordinateursdifférents câbles sont utilisés sur l'interface parallèle, selon les modes des ports utilisés. Le mode de grignotage le plus simple et le plus lent toutports. Pour ce mode, il suffit d'avoir 10 signaux et un fil commun dans le câble. Le câblage des connecteurs de câbles est donné dans le tableau. 1.11. La connexion de deux PC avec ce câble est prise en charge par un logiciel standard tel qu'Interlnk de MS-DOS ou Norton Commander.

La communication à haut débit entre deux ordinateurs peut également être effectuée en mode ECP (le mode EPP n'est pas pratique car il nécessite la synchronisation des cycles de bus d'E / S de deux ordinateurs).

Connexion scannervers un port LPT n'est efficace que si le port fournit au moins un mode bidirectionnel (Bi-Di),puisque le thread principal est entré. Il est préférable d'utiliser le port ECP si ce mode est pris en charge par le scanner (ou EPP, ce qui est peu probable).


Connexion disques externes(Iomega Zip Drive, CD-ROM, etc.), adaptateurs LANet d'autres dispositifs d'entrée-sortie symétriques ont leurs propres spécificités. En mode SPP, avec le ralentissement de l'appareil, une asymétrie fondamentale de ce mode est perceptible: lecture des donnéespasse deux fois plus lent que(très lent) record.Candidature bidirectionnelrégime (Bi-Diou Tour PS / 2 1)éliminer cette asymétrie - les vitesses seront égales.Ce n'est qu'en passant à EPP ou ECP que vous pouvez normalvitesse de travail. En mode EPP ou ECP, la connexion au port LPT est presque aussi rapide que la connexion via le contrôleur ISA. Cela est également vrai lors de la connexion de périphériques dotés d'une interface de bus standard aux ports LPT via des convertisseurs d'interface (par exemple, LPT-IDE, LPT-SCSI, LPT-PCMCIA). Notez que le disque dur IDE connecté via un adaptateur au port LPT du système peut être représenté comme un périphérique SCSI (c'est plus logique d'un point de vue logiciel).

2. Interfaces série

L'interface série pour la transmission de données utilise une seule ligne de signal le long de laquelle les bits d'information sont transmis séquentiellement les uns après les autres. D'où le nom de l'interface et du port. Termes anglais - Interface série  et Pièce série  (parfois, ils sont incorrectement traduits par "série"). La transmission série réduit le nombre de lignes de signaux et augmente la portée de communication. Une caractéristique est l'utilisation de signaux non TTL. Un certain nombre d'interfaces série utilisent une isolation galvanique des signaux externes (généralement d'entrée) de la masse du circuit de l'appareil, ce qui permet de connecter des appareils sous différents potentiels. Ci-dessous, nous considérerons les interfaces RS-232C, RS-422A, RS-423A, RS-485, boucle de courant, MIDI, ainsi que le port COM.

2.1. Méthodes de transmission série

La transmission de données en série peut être effectuée en modes asynchrones ou synchrones. À asynchrone  chaque octet est précédé de bit de départ  signaler au destinataire le début du colis, suivi de bits de données  et peut-être par bit  (parité). Complète le package bit d'arrêt garantissant une pause entre les colis (Fig. 2.1). Le bit de début de l'octet suivant est envoyé à tout moment après le bit d'arrêt, c'est-à-dire que des pauses d'une durée arbitraire sont possibles entre les transmissions. Un bit de départ, qui a toujours une valeur strictement définie (0 logique), fournit un mécanisme simple pour synchroniser le récepteur en fonction du signal de l'émetteur. Il est entendu que le récepteur et l'émetteur fonctionnent au même taux de change. Le générateur d'horloge interne du récepteur utilise un compteur de diviseur de fréquence de référence, remis à zéro au moment de la réception du bit de démarrage. Ce compteur génère des portes internes par lesquelles le récepteur capture la réception ultérieure

bits. Idéalement, les portes sont situées au milieu des intervalles de bits, ce qui permet de recevoir des données même avec un léger décalage entre les vitesses du récepteur et de l'émetteur. Il est évident que lors du transfert de 8 bits de données, un contrôle et un bit d'arrêt, la différence de vitesse maximale autorisée, à laquelle les données seront reconnues correctement, ne peut pas dépasser 5%. Compte tenu des distorsions de phase et du fonctionnement discret du compteur de synchronisation interne, une déviation de fréquence inférieure est en fait autorisée. Plus le rapport de division de la fréquence de référence de l'oscillateur interne est faible (plus la fréquence de transmission est élevée), plus l'erreur dans la liaison des portes au milieu de l'intervalle de bits est grande et les exigences de correspondance de fréquence deviennent plus strictes. Plus la fréquence d'émission est élevée, plus l'influence des distorsions de front sur la phase du signal reçu est importante. L'interaction de ces facteurs conduit à des exigences accrues pour la cohérence des fréquences du récepteur et de l'émetteur avec une augmentation de la fréquence d'échange.

Le format d'envoi asynchrone vous permet d'identifier les éventuels erreurs de transmission:

»   Si une différence est reçue qui signale le début de l'envoi et que le niveau d'unité logique est fixé au stroboscope de bit de démarrage, le bit de démarrage est considéré comme faux et le récepteur revient à l'état de veille. Le récepteur peut ne pas signaler cette erreur.

«Si pendant le temps alloué au bit d'arrêt, un niveau zéro logique est détecté, une erreur de bit d'arrêt est enregistrée.

  Si la parité est appliquée, après l'envoi du bit de données est transmis bit de contrôle.  Ce bit complète le nombre de bits de données simples à pair ou impair, selon l'accord accepté. La réception d'un octet avec une valeur de bit de contrôle non valide corrigera l'erreur.

Le contrôle du format permet de détecter un saut de ligne:

dans ce cas, un zéro logique est accepté, qui est d'abord traité comme un bit de départ et zéro bit de données, puis la commande de bit d'arrêt est déclenchée.

Une série est acceptée pour le mode asynchrone taux de change standard:  50, 75, 110, 150,300,600,1200,2400,4800,9600, 19 200, 38 400, 57 600 et 115 200 bit / s. Parfois, au lieu d'une unité de mesure «bps», un «baud» est utilisé, mais lorsque l'on considère les signaux transmis binaires, c'est incorrect. En bauds, il est habituel de mesurer la fréquence des changements d'état de ligne, et avec une méthode de codage non binaire (largement utilisée dans les modems modernes) dans un canal de communication, les débits (bps) et les changements de signal (baud) peuvent différer plusieurs fois (pour plus de détails, voir l'annexe A )

La quantité bit de données  peut être 5, 6, 7 ou 8 (les formats 5 et 6 bits ne sont pas largement distribués). La quantité bit d'arrêt  il peut être 1, 1,5 ou 2 («un bit et demi» signifie uniquement la longueur de l'intervalle d'arrêt).

Échange asynchrone  dans PC implémenté à l'aide Port COM avec  en utilisant le protocole RS-232C.

Synchrone  le mode de transmission suppose une activité constante du canal de communication. L'envoi commence par un octet de synchronisation, immédiatement suivi d'un flux de bits d'information. Si l'émetteur n'a pas de données à transmettre, il remplit la pause en envoyant en continu des octets de synchronisation. Évidemment, lors du transfert de grandes quantités de données, la surcharge de synchronisation dans ce mode sera inférieure à celle en asynchrone. Cependant, en mode synchrone, une synchronisation externe du récepteur avec l'émetteur est nécessaire, car même un petit écart de fréquence entraînera une distorsion des données reçues. La synchronisation externe est possible soit en utilisant une ligne distincte pour transmettre le signal de synchronisation, soit en utilisant un codage de données auto-synchronisé, dans lequel des impulsions de synchronisation peuvent être extraites du signal reçu à partir du signal reçu. Dans tous les cas, le mode synchrone nécessite des lignes de communication ou des équipements terminaux coûteux. Pour PC, il existe des cartes spéciales - des adaptateurs SDLC (coûteux) qui prennent en charge le mode d'échange synchrone. Ils sont principalement utilisés pour la communication avec les grandes machines IBM (mainframes) et ne sont pas largement utilisés. Parmi les adaptateurs synchrones, les adaptateurs d'interface V.35 sont actuellement utilisés.

Sur niveau physique  l'interface série a différentes implémentations qui diffèrent dans la façon dont les signaux électriques sont transmis. Il existe un certain nombre de normes internationales connexes: RS-232C, RS-423A, RS-422A  et RS-485. Dans la fig. La figure 2.2 montre les schémas de connexion des récepteurs et émetteurs, ainsi que les restrictions sur la longueur de ligne (L) et le débit de données maximum (V).

Lignes d'interface asymétriques RS-232C  et RS-423Aont la plus faible immunité en mode commun, bien que l'entrée différentielle du récepteur RS-423A  adoucit quelque peu la situation. Les meilleurs paramètres ont une interface point à point RS-422A  et son tronc (bus) analogique RS-485,  travailler sur des lignes de communication symétriques. Ils utilisent des signaux différentiels avec une paire de fils (torsadée) séparée pour transmettre chaque signal.

Dans les normes listées, le signal apparaît potentiel.  Il existe des interfaces série où le courant circulant dans le circuit commun émetteur-récepteur - la «boucle de courant» et le MIDI sont informatifs. Pour les communications à courte distance, des normes infrarouges sans fil ont été adoptées. Le plus répandu sur PC était le plus simple des standards - standard RS-232Cimplémenté par les ports COM. Dans l'automatisation industrielle est largement utilisé RS-485,  aussi RS-422A,  trouvé dans certaines imprimantes. Il existe des convertisseurs de signaux pour faire correspondre ces interfaces connexes.

2.2. Interface RS-232C

L'interface est conçue pour connecter des équipements transmettant ou recevant des données (OOD -  équipement terminal de données ou ADF -  équipement de transmission de données; DTE - Data Terminal Equipment),  à l'équipement terminal du canal de données (AKD; DCE - Équipement de communication de données).  L'ADF peut être un ordinateur, une imprimante, un traceur et d'autres équipements périphériques. Le rôle d'AKD est généralement un modem. Le but ultime de la connexion est de connecter deux périphériques ADF. Un schéma de connexion complet est illustré à la Fig. 2.3. L'interface vous permet d'exclure un canal de communication distant avec une paire d'appareils ADF en connectant des appareils directement à l'aide d'un câble null modem (Fig. 2.4).

La norme décrit les signaux de contrôle d'interface, le transfert de données, l'interface électrique et les types de connecteurs. La norme fournit des modes d'échange asynchrones et synchrones, mais les ports COM prennent uniquement en charge mode asynchrone.  Fonctionnellement RS-232C  équivalent à CCITT V.24 / V.28 et C2, mais ils ont des noms de signaux différents.

2.2.1. Interface électrique

Standard RS-232C  utilise des émetteurs et des récepteurs asymétriques - le signal est transmis par rapport au fil commun - la masse du circuit (des signaux différentiels symétriques sont utilisés dans d'autres interfaces - par exemple, RS-422). Interface NE FOURNIT PAS DE DÉCONNEXION ÉLECTRIQUE  appareils. L'unité logique correspond à la tension entrée récepteur  dans la plage de -12 ...- 3 V. Pour les lignes de signal de commande, cet état est appelé ON  («On»), pour les lignes de données série - MARK.  La plage logique de +3 ... + 12 V correspond au zéro logique. Pour les lignes de signal de commande, l'état est appelé Éteint  («Off»), et pour les lignes de données série - ESPACE  La plage de -3 ... + 3 V est la bande morte, qui détermine l'hystérésis du récepteur: l'état de la ligne ne sera considéré comme modifié qu'après avoir franchi le seuil (Fig. 2.5). Les niveaux de signal aux sorties des émetteurs doivent être dans les plages -12 ...- 5 V et +5 ... + 12 V pour représenter respectivement l'unité et zéro. La différence de potentiel entre les masses de circuit (SG) des appareils connectés doit être inférieure à 2 V, avec une différence de potentiel plus élevée, une perception incorrecte du signal est possible. L'interface suppose la disponibilité TERRE PROTECTRICE  pour les appareils connectés, si les deux sont alimentés par le courant alternatif et ont des filtres de ligne.

Connecter et déconnecter les câbles d'interface  des appareils auto-alimentés doivent être produits lorsque l'alimentation est coupée.  Sinon, la différence des potentiels déséquilibrés des appareils au moment de la commutation peut s'avérer être appliquée aux circuits d'interface de sortie ou d'entrée (ce qui est plus dangereux) et désactiver le microcircuit.

Pour l'interface RS-232C  microcircuits de récepteur tampon spécialement conçus (avec hystérésis et émetteur de signal bipolaire). Si les règles de mise à la terre et de commutation ne sont pas respectées, elles sont généralement les premières victimes des effets pyrotechniques. Parfois, ils sont installés dans des "lits", ce qui facilite le remplacement. Brochage de la puce de conditionnement du signal RS-232C  montré dans la fig. 2.6. Souvent, les circuits tampons sont inclus directement dans l'interface LSI. Cela réduit le coût du produit, économise de l'espace sur la carte, mais en cas d'accident se transforme en pertes financières importantes. Il est peu probable de désactiver les microcircuits d'interface en court-circuitant les circuits de signaux: le courant de court-circuit des émetteurs ne dépasse généralement pas 20 mA.

Standard RS-232C  régit types de connecteurs utilisés.

Sur l'équipement ADF  (y compris sur les ports COM) il est habituel d'installer fourchettes  (homme - «papa») DB-25P  ou une option plus compacte - DB-9P.  Les connecteurs à neuf broches n'ont pas de contacts pour les signaux supplémentaires requis pour un fonctionnement synchrone (la plupart des connecteurs à 25 broches n'utilisent pas ces contacts).

Sur l'équipement AKD (modems) installer douilles(femme - «mère») DB-25Swm DB-9S.

Cette règle suppose que les connecteurs AKD  peut se connecter à des connecteurs ADF  directement ou via des câbles de transition «directs» avec une prise et une fiche, dans lesquels les contacts sont connectés «un à un». Les câbles adaptateurs peuvent également être des adaptateurs avec des connecteurs 9 à 25 broches (Fig. 2.7).

Si l'équipement ADF  est connecté sans modems, les connecteurs de l'appareil (fiches) sont interconnectés câble null modem  (Zero-modem ou Z-modem), qui a des prises aux deux extrémités, dont les contacts sont connectés en croix selon l'un des circuits représentés sur la Fig. 2.8.

Si sur n'importe quel appareil ADF  une prise de courant est installée - c'est un signe presque absolu qu'elle doit être connectée à un autre appareil avec un câble direct, similaire à un câble de connexion modem. La prise est généralement installée sur les appareils pour lesquels une connexion à distance via modem n'est pas fournie.

Dans le tableau. 2.1 montre le but des contacts des connecteurs des ports COM (et de tout autre équipement ADF).  Les broches du connecteur DB-25S sont définies par la norme EIA / TIA-232-E, le connecteur DB-9S est décrit par la norme EIA / TIA-574. Pour les modems, le nom des circuits et des contacts est le même, mais les rôles des signaux (entrée-sortie) sont inversés.

Sous-ensemble de signaux RS-232C  liés au mode asynchrone, nous considérons du point de vue du port COM du PC. Il convient de rappeler que l'état actif du signal («on») et unité logique  les données transmises correspondent potentiel négatif  (en dessous de -3 V) du signal d'interface, et l'état est "off" et zéro logique - positif  (au-dessus de +3 V). Le but des signaux d'interface est donné dans le tableau. 2.2.

1 * - une boucle de multicartes 8 bits.

2 * - une boucle de multicartes 16 bits et de ports sur les cartes mères. 3 * - une variante d'une boucle de port sur les cartes mères. 4 * - une boucle large vers le connecteur à 25 broches.

2.2.2. Contrôle du flux de données

Pour contrôler le flux de données (Flow Control), deux options de protocole peuvent être utilisées - le matériel et le logiciel. Parfois, le contrôle de flux est confondu avec l'accusé de réception, mais ce sont des méthodes différentes pour atteindre un objectif - coordonner le taux de transmission et de réception. Remerciements(Prise de contact) signifie l'envoi d'une notification concernant la réception de l'article, contrôle de débit  implique l'envoi d'une notification de l'impossibilité d'une réception ultérieure de données.

Protocole de contrôle de flux matériel RTS / CTS (Hardware Flow Control) utilise le signal CTS, ce qui vous permet d'arrêter la transmission de données si le récepteur n'est pas prêt à les recevoir (Fig. 2.9). L'émetteur "libère" l'octet suivant uniquement lorsque la ligne CTS est activée. Il est impossible de retarder un octet qui a déjà commencé à être transmis par le signal CTS (cela garantit l'intégrité de l'envoi). Le protocole matériel fournit la réponse la plus rapide de l'émetteur à l'état du récepteur. Les microcircuits d'émetteur-récepteur asynchrones ont au moins deux registres dans la partie réceptrice -

décalage, pour recevoir l'envoi suivant, et stockage, à partir duquel l'octet reçu est lu. Cela permet l'échange de protocole matériel sans perte de données.

Le protocole matériel est pratique à utiliser lors de la connexion d'imprimantes et de traceurs, s'ils le prennent en charge (Fig. 2.10). Pour la connexion directe (sans modems) de deux ordinateurs, le protocole matériel nécessite une connexion croisée des lignes RTS - CTS.

Si le protocole matériel n'est pas utilisé, le terminal émetteur doit avoir un état «on» sur la ligne CTS avec le cavalier RTS - CTS. Sinon, l'émetteur sera silencieux.

Protocole logiciel de contrôle de flux XON / XOFF  suppose un canal de données bidirectionnel. Le protocole fonctionne comme suit: si l'appareil recevant les données détecte les raisons pour lesquelles il ne peut plus les recevoir, il envoie un caractère d'octet via le canal série inverse Xoff  (13h). L'appareil opposé, ayant accepté ce symbole, interrompt la transmission. Lorsque l'appareil récepteur est à nouveau prêt à recevoir des données, il envoie un caractère

Xon  (llh) en acceptant que l'appareil opposé reprend la transmission. Le temps de réponse de l'émetteur à un changement de l'état du récepteur par rapport au protocole matériel est augmenté au moins au moment où le symbole est transmis (XON  ou XOFF)  plus le temps de réponse du programme de l'émetteur pour recevoir un caractère (Fig. 2.11). Il s'ensuit que les données sans perte ne peuvent être reçues que par un récepteur ayant un tampon supplémentaire de données reçues et signalant l'indisponibilité à l'avance (ayant de l'espace libre dans le tampon).

L'avantage du protocole logiciel est qu'il n'est pas nécessaire de transmettre des signaux de contrôle d'interface - le câble minimum pour l'échange bidirectionnel ne peut avoir que 3 fils (voir Fig. 2.8a). Un inconvénient, en plus de nécessiter un tampon et un temps de réaction plus long (ce qui réduit les performances globales du canal en raison de l'attente du signal XON)  est la difficulté de mettre en œuvre un mode d'échange full duplex. Dans ce cas, les symboles de contrôle de flux doivent être extraits (et traités) du flux de données reçu, ce qui limite l'ensemble des symboles transmis. Option de câble minimum pour connecter une imprimante (traceur) avec protocole XON / XOFF  montré dans la fig. 2.12.

En plus de ces deux protocoles standard communs pris en charge par PU et OS, il y en a d'autres. Certains traceurs série utilisent le contrôle logiciel, mais envoient des caractères non standard XON / XOFF,  mais les mots  (Lignes ASCII). Un tel échange n'est pratiquement pas pris en charge au niveau du support système du protocole (ces traceurs «parlent» directement avec le programme d'application). Bien sûr, vous pouvez écrire un pilote de port COM (intercepteur INT 14h)  mais la nécessité de traiter les messages texte à partir du périphérique de sortie ne fait généralement pas plaisir au programmeur système. Le câble de connexion correspond à celui illustré à la fig. 2.12.

2.3. Interface de boucle de courant

Une option courante pour une interface série est une boucle de courant. Dans ce document, le signal électrique n'est pas le niveau de tension par rapport au fil commun, mais courant  dans une ligne à deux fils reliant le récepteur et l'émetteur. Une unité logique (état «on») correspond à un flux de courant de 20 mA, et un zéro logique correspond à un manque de courant. Une telle représentation des signaux pour le format décrit d'envoi asynchrone permet de détecter un saut de ligne - le récepteur remarquera l'absence d'un bit d'arrêt (le saut de ligne agit comme un zéro logique constant).

La boucle actuelle suppose généralement isolation galvanique circuits d'entrée du récepteur à partir du circuit de l'appareil. La source de courant dans la boucle est l'émetteur (cette option est appelée l'émetteur actif). Il est également possible de recevoir l'alimentation du récepteur (récepteur actif), tandis que la clé de sortie de l'émetteur peut également être isolée galvaniquement du reste du circuit de l'émetteur. Des options simplifiées existent sans isolation galvanique, mais c'est déjà un cas dégénéré de l'interface. La boucle de courant isolée galvaniquement permet de transmettre des signaux sur des distances allant jusqu'à plusieurs kilomètres. La distance est déterminée par la résistance de la paire de fils et le niveau d'interférence. Étant donné que l'interface nécessite une paire de fils pour chaque signal, seuls deux signaux d'interface sont généralement utilisés. Dans le cas d'un échange bidirectionnel, seuls les signaux des données transmises et reçues sont utilisés, et la méthode du programme est utilisée pour contrôler le flux XON / XOFF.  Si un échange bidirectionnel n'est pas requis, utilisez une ligne de données et pour contrôler le flux, la ligne de retour est utilisée pour le signal CTS (protocole matériel) ou la ligne de données venant en sens inverse (protocole logiciel).

Convertir les signaux RS-232C  dans la boucle de courant est possible à l'aide d'un simple circuit (Fig. 2.13). Ici, l'imprimante est connectée via une boucle de courant au port COM avec un contrôle de flux matériel. Pour obtenir le signal bipolaire requis pour les signaux d'entrée du port COM, l'alimentation est appliquée à partir de l'interface.

Avec un logiciel approprié, une seule boucle de courant peut fournir une communication bidirectionnelle semi-duplex entre deux appareils. En même temps, chaque récepteur «entend» à la fois les signaux de l'émetteur de l'autre côté du canal et les signaux de son émetteur. Ils sont considérés par les paquets de communication simplement comme un écho. Pour une réception sans erreur, les émetteurs doivent fonctionner en alternance.

2.4. Interface MIDI

Interface d'instruments de musique numérique MIDI(Musical Instrument Digital Interface) est une interface série asynchrone bidirectionnelle avec une fréquence de transmission de 31,25 Kbps. Cette interface, développée en 1983, est devenue la norme de facto pour l'interfaçage des ordinateurs, des synthétiseurs, des appareils d'enregistrement et de reproduction, des mélangeurs, des appareils d'effets spéciaux et d'autres équipements électro-musicaux.

L'interface s'applique une telle boucle 10 mA (peut-être 5 mA) avec isolation galvanique du circuit d'entrée. Cela élimine la connexion des «terrains de circuit» des appareils connectés via un câble d'interface, éliminant les interférences extrêmement indésirables pour les équipements sonores. La fréquence d'interférence est également réduite par le choix de la fréquence de transmission, qui coïncide avec l'une des valeurs des fréquences de quantification adoptées dans l'enregistrement sonore numérique.

Package asynchrone  contient un bit de départ, 8 bits d'information et 1 bit d'arrêt, il n'y a pas de parité. Le bit haut de l'envoi est une indication de commande / données. Sa valeur nulle indique la présence de sept bits de données dans les bits les moins significatifs. À une seule valeur, les bits contiennent code d'équipe  et les bits sont numéro de chaîne.  Les commandes peuvent être adressées à un canal particulier ou diffusées sans adresse. Le dernier groupe comprend les commandes de démarrage, d'arrêt et d'horodatage qui synchronisent les appareils (système de synchronisation Synchronisation MIDI  et MTS - MIDI Time Code).

Une interface définit trois types de ports: MIDI-In, MIDI-Out nMIDI-Thru.

Port d'entrée MIDI-In  représente l'entrée de l'interface "boucle de courant 10 mA", isolée galvaniquement du récepteur par un optocoupleur avec une vitesse d'au moins 2 μs. L'appareil surveille le flux d'informations à cette entrée et répond aux commandes et données qui lui sont adressées.

Port de sortie MIDI  représente la sortie d'une source de courant de 10 mA couplée galvaniquement à un circuit d'appareil. Les résistances de limitation protègent les circuits de sortie contre les dommages lorsqu'ils sont court-circuités à la terre ou à une source 5 V. Un flux d'informations de cet appareil est émis. Le flux peut contenir un flux d'entrée traduit.

Port de transit MIDI Thru  (facultatif) sert à relayer le signal d'entrée.

En tant que connecteurs, des connecteurs DIN à 5 broches sont utilisés, ce qui est courant dans les équipements audio domestiques. Des prises sont installées sur tous les appareils et des fiches sont installées sur les câbles. Tous les câbles de connexion MIDI sont unifiés (Fig. 2.14). Broche 2 - blindage du câble - se connecte au fil commun uniquement du côté de l'émetteur (sur les connecteurs Sortie MIDI  et MIDI-Thru).

Dans l'étiquetage des entrées et sorties indiquées à proximité des connecteurs, il existe différentes interprétations. Certains fabricants écrivent «In» ou «Out» conformément à la fonction de connecteur de cet appareil (et c'est correct), puis tout câble connecte «In» et «Out». Pour d'autres, la signature devrait indiquer la fonction de l'appareil connecté. Ensuite, le câble connectera les connecteurs avec les désignations "In" - "In" et "Out" - "Out".

L'interface vous permet de combiner un groupe de jusqu'à 16 appareils dans un réseau local. La topologie doit obéir à la règle:

entrée Entrée MIDI  un appareil doit être connecté à la sortie Sortie MIDI  ou MIDI Thru  d'un autre. Lors de la planification d'un réseau MIDI, vous devez être guidé par les flux d'informations et les communications des appareils. Les dispositifs de contrôle - claviers, séquenceurs (en mode lecture), sources de synchronisation - doivent être devant ceux contrôlés. Si les appareils ont besoin d'un échange bidirectionnel, ils sont connectés en anneau. Il est possible d'utiliser des multiplexeurs spéciaux qui vous permettent de basculer logiquement plusieurs flux d'entrée en une seule sortie. Un cas dégénéré d'un anneau est une connexion bidirectionnelle de deux appareils. Plusieurs options de connexion sont illustrées à la Fig. 2.15.

Le PC possède un port MIDI sur la plupart des adaptateurs audio; ses signaux sont émis vers les broches inutilisées (12 et 15) du connecteur de l'adaptateur de jeu. La connexion d'appareils MIDI nécessite adaptateur adaptateur  implémente l'interface "boucle actuelle". L'adaptateur adaptateur est généralement intégré dans un câble spécial, dont le circuit est illustré à la Fig. 2.16. Certains modèles de PC ont des adaptateurs intégrés et des connecteurs MIDI standard à 5 broches.

Le PC utilise des ports compatibles MIDI pour le contrôleur MPU-401  (Roland) en mode UART. Dans l'espace d'entrée / sortie MPU-401  occupe deux adresses adjacentes MPU  (généralement 330h) et MPU + 1:

  Port DONNÉES  (adresse MPU + 0) -  écriture et lecture d'octets transmis et reçus via l'interface MIDI. Port STATUT / COMMANDE  (adresse MPU + 1) -  lire les commandes d'état / d'écriture (écriture - uniquement pour le mode intelligent). Les bits suivants sont définis dans l'octet d'état:

Bit 7 - DSR  (Ensemble de données prêt) - disponibilité (DSR-0)  reçu des données à lire. Le bit est mis à "I" lorsque tous les octets reçus sont lus dans le registre de données.

Bit 6 - DRR  (Data Read Ready) - préparation (DRR \u003d 0)UART pour écrire dans le registre de données ou les commandes. La condition de disponibilité pour l'écriture ne se produit pas si le récepteur a un octet de données non lu.

Sur certaines cartes mères, des contrôleurs d'interface LSI sont utilisés dans lesquels l'UART utilisé pour le port COM peut être réglé sur le mode de port MIDI en configurant via le BIOS.

Partagez ceci