La connexion RS232 pour la mise au point

Une liaison RS232 est souvent nécessaire pour mettre au point un logiciel en assembleur. Elle permet de visualiser des valeurs et ainsi de mettre au point les algorithmes.

Elle doit être isolée, si possible (cas particulier des montages directement sur secteur), et ponctionner le minimum de courant sur l'alimentation de la cible (cas d'un microcontrôleur alimenté par le secteur).

Du côté PC on prendra l'alimentation sur les lignes EIA-232 existantes. Le débit devra être le plus élevé possible, et viser le 115200 Bauds ultime ont est capable l'UART d'un PIC moderne.

Quelques rappels

Les niveaux data (Rx, Tx) EIA-232 sont inversés (un=tension basse, zéro=tension haute). Les excursions varient entre +/-3.5V et +/-7V voire +/-12V selon la norme (EIA-232 ou EIA-562) et les drivers utilisés. Les niveaux les plus courants sont +/-4.5V à +/-8V, la capacité en courant d'une sortie RS232 est d'au moins 7mA en court circuit.

Voir par exemple http://www.epanorama.net/circuits/rspower.html

Le signal DTR en sortie PC peut être positionné à +V (écrire 1 dans le registre base+4 bit 0) pour alimenter le circuit d'interface, côté Tx cible (ou Rx PC)

 

Le signal RTS en sortie PC est réservé pour l'émission des données du PC vers la cible (Tx PC ou Rx cible).


Les seuils de détection en entrées sont compatibles TTL, toujours positifs compris entre 0.8 et 2V, et l'impédance d'entrée est de l'ordre de 5k. Ainsi, une entrée RS232 fonctionnera très bien avec un signal logique 0-5V TTL ou CMOS. On voit ci contre le schéma d'un étage d'entrée standard RS232 de l'ancienne époque, avant les MAX232 et autres.

 

Interface non-isolée

La plus simple, sauf qu'on désire drainer le minimum de courant de la cible, tout en montant à plus de 100kHz en signal utile. L'interface doit se satisfaire d'une alimentation entre 4 et 12V. Le plus simple est d'utiliser des buffers CMOS genre 4069B.

Le signal DTR est utilisé pour fabriquer une tension 5V locale avec une zener et un shunt de 330 Ohms. Cette valeur peut être réduite à 100 Ohms pour des interfaces à faible tension. La LED verte indique la présence de cette tension.

Le Signal Tx alimente, au travers d'une résistance et d'une protection, un inverseur.

Le canal Rx ne demande rien à la cible, et une diode est installée sur la ligne Vdd pour éviter que les inverseurs ne commutent au repos, si la tension de la cible est plus faible que les 5.1V locaux.

Cà fonctionne parfaitement, je l'utilise à 38400 Bauds (doit un SPBRG=6 @4MHz avec un PIC)

 

Version autonome faible débit

 

Sur la ligne Tx on utilise un optocoupleur 6N139 alimenté sous 350µA, qui offre un transfert supérieur à 1000%, soit un courant de sortie supérieur à 3.5mA. Mais le prix à payer est une performance en débit très faible, car le courant LED est si faible que l'effet Miller l'emporte, le signal en sortie est un joli triangle au dessus de 200Hz, avec une résistance de polarisation optimale sur la broche 7 à 2 MOhms. Autant dire qu'on ne pourra pas dépasser 150 voire 300 bauds au maximum.

 

Sur la ligne Rx, on a plus de courant disponible, 10mA sans problème, un optocoupleur standard avec un transfert à 20% est bien suffisant, mais là encore la limitation du courant consommé en aval va jouer sur le temps de montée, et la limitation en débit va apparaître vers quelques kHz.

 

200 Hz avec 2.2Meg

100 Hz sans Rpolar

 

Le comportement s'améliore franchement en utilisant l'optocoupleur en émetteur commun, suivi d'un transistor pour inverser le signal. Avec un tel schéma on monte sans problème à 4800 bauds.

 

Version alimentée fort débit

Si on cherche des débits plus forts, il faut avoir plus de courant. Alimenter la LED Tx avec 10mA au moins, avoir un pullup Rx plus faible et utiliser des opto rapides 6N136. Cela impose une alimentation externe qui vienne renforcer le 5V local de la cible.

 

Les performances ne sont pas bonnes pour la ligne Rx, l'utilisation d'un opto en émetteur suiveur n'est pas optimale. Il vaut mieux l'utiliser en émetteur commun, mais dans ce cas, il faut commander la LED sur signal positif, en baissant le courant car et la capacité en sortie de courant des IO d'un circuit µcontrôleur est faible.

 

 

Biblio liaison RS232