Electronique > Réalisations > Interface USB-RS232 003 (USB/COM-TTL)

Dernière mise à jour : 11/10/2026

Présentation

Ce circuit permet de disposer de 4 ports COM virtuels simultanés sur un seul port USB, pour des communications TTL, RS232, RS422 ou RS485.

   
interface_usb-rs232_003_pcb_3d_front    
   

Le montage s'articule autour d'un circuit intégré spécialisé FT4232 et tire son alimentation soit du port USB soit d'un bloc alim externe. Il est vu par l'ordinateur sur lequel il est connecté, comme un quadruple port com virtuel (VCP, Virtual Com Port) appartenant à la classe USB "CDC" (Communication Device Class). Les quatre paires entrées/sorties (Tx et Rx) se font au niveau TTL (3V3 ou 5V), l'ajout de convertisseurs externes de tension (drivers de ligne) est donc requis si on souhaite se conformer aux normes RS232, RS422 ou RS485 (contrairement à ce que peut laisser penser le titre de cet article, le montage n'est pas uniquement dédié aux communications RS232).

   

Schéma 

Le montage est basé sur un mini-module FT4232H-56Q-MINI-MODULE de marque FTDI, lui-même basé sur un FT4232H.

   
interface_usb-rs232_003
   
Le circuit intégré FT4232 est un petit pavé noir doté d'un grand nombre de broches très rapprochées qui peut décourager quand on souhaite le fixer soi-même sur un circuit imprimé fait maison. Pour ma part, j'ai choisi d'utiliser un module tout fait, sur lequel repose le petit canard noir en question associé à deux connecteurs sympatiques au pas de 2,54 mm, c'est le fameux mini-module FT4232H-56Q-MINI-MODULE.

Remarque : le mini-module FT4232H que je possède est en révision REV-1.0. Cette version a par la suite fait l'objet de plusieurs retouches (correction et clarification du nom des broches des connecteurs, notamment). A ma connaissance, il existe 8 versions de ce mini-module, REV1.0 à REV1.8. Sur le mini-module REV-1.0, on voit deux cavaliers JP1 et JP2 qui ont disparu sur les versions suivantes. JP1 permet d'établir une liaison entre le +5V venant du bus USB (VBUS, broche 1 du connecteur CN3) et l'entrée alimentation VCC (broche 3 du connecteur CN3). Le cavalier JP2 quant à lui permet de connecter les multiples lignes VIO au +3V3 (broches 3, 5 et 7 du connecteur CN2). Pour mes tests, j'ai laissé ces deux cavaliers en place (ensemble alimenté par le 5V du port USB et VIO connecté au +3V3). 

Ayant déjà utilisé ce mini-module plusieurs fois avec des fils très rapprochés et pas toujours faciles à localiser (risque élevé d'erreur de branchement - ce qui m'est évidement arrivé), j'ai décidé de réaliser un circuit imprimé pour le supporter et y ajouter des connecteurs plus espacés et plus faciles à utiliser (connecteurs COM1/TRx1 à COM4/TRx4). Tant qu'à faire, j'y ai ajouté des LED pour visualiser les échanges en émission et en réception des données. Mais peut-on pour cela câbler de simples LED directement sur les lignes Tx et Rx des divers ports COM ? La réponse est oui, mais...

Visualisation des données avec des LED
La solution la plus simple consiste à câbler des LED directement sur les lignes Rx et Tx, avec bien sûr des résistances de limitation de courant. Comme les lignes sont au niveau logique haut au repos et passent au niveau logique bas en présence (et au rythme) des données, il convient de câbler chaque LED avec sa cathode sur la ligne de données et son anode sur le rail positif d'alimentation. Cette manière de faire impose l'utilisation de résistances de limitation de courant de valeur élevée, afin de ne pas faire s'écrouler les données quand les LED s'illuminent, ce qui implique l'utilisation de LED haute luminosité si on veut voir quelque chose... Si cela peut à la rigueur convenir pour des données transmises à faible vitesse (par exemple 9600 bauds) on constate qu'à haute vitesse (par exemple 250000 bauds) les LED s'allument si brièvement qu'on les voit à peine briller. Cette solution simple ne me convient pas et j'ai décidé pour cette raison d'ajouter des monostables pour rallonger la durée d'allumage des LED. En procédant ainsi, les LED s'allument franchement même si les données transmises ou reçues sont très brèves et transitent très rapidement. Les monostables utilisés ici sont de type 4528 ou 4538 au format CMOS (CD4538 par exemple) ou TTL/CMOS (74HC4538 par exemple) et la durée des créneaux de sortie est d'environ 50 ms.

Remarque : le schéma montre des portes logiques de type 7404 (U2 et U3) barrées, solution qui permet de se passer des monostables et de leur couple résistance condensateur associé. C'est la solution plus simple sans les monostables que j'avais envisagée au départ et que j'ai abandonnée par la suite. L'idée était de fournir plus de courant aux LED pour un éclairage plus efficace, mais malheureusement le résultat n'est pas terrible quand les données transitent très vite, car la sensibilité de l'oeil aux phénomènes lumineux brefs reste ce qu'elle est. Malgré l'abandon de cette solution, j'ai laissé l'empreinte des deux circuits intégrés U2 et U3 (boîtier CMS cachés sous le module FTDI) pour d'éventuels tests (bien sûr sans les monostables).

 
Test du mini module de FTDI
Le mini module FT4232H-56Q-MINI-MODULE a été testé à de nombreuses reprises avec mon logiciel ComTools. 
   
comtools_ports_001a
   
Sur un de mes ordinateurs, les quatre ports COM du mini-module FTDI ont été "positionnés" par Windows de COM7 à COM10 et ont fonctionné correctement à des vitesses basses (9600 bps) et élevées (entre 250 kbps et 2 Mbps). Trois types de tests ont été menés avec sortie Tx et entrée Rx d'un même port ou entre des ports différents (Tx port A avec Rx port B, par exemple) :

Les tests en RS485 ont été réalisés avec des modules équipés de MAX13487 et MS2548 (configurés pour direction automatique).
Les tests en RS422 ont été réalisés avec des modules équipés de MAX490 (bi-directionnel, aucune broche pour la direction).
Le câble de 5 m torsadé non blindé est tiré d'un vieux câble Ethernet sacrifié pour l'occasion.
   
interface_usb-rs232_003_modules_rs422-rs485
Divers modules pour liaisons RS422 et RS485...

    

Module FTDI configuré en SPI ou I2C (MSSP) ?
Les deux premiers ports A et B du mini-module FT4232 peuvent être configurés en modules MSSP SPI ou I2C ou en modules UART, alors que les deux autres ports C et D ne peuvent qu'être configurés en mode UART. A l'écriture de ces lignes, j'ai uniquement utilisé les 4 ports en mode UART.

   

Prototype

En attente de réalisation. Pour l'instant, je continue d'utiliser le mini-module FT4232 tel quel, en faisant bien attention où je branche les fils (car bien sûr, je me suis trompé au moins une fois et par chance je n'ai rien grillé).

   

Circuit imprimé (PCB)

Réalisé en double face.

   
interface_usb-rs232_003_pcb_components_top  
   
Typon (dessin PCB) au format PDF

L'accès aux lignes Tx et Rx de chacun des quatre ports est nettement plus clair grâce aux quatre connecteurs arrières J1 à J4. Les LED de visualisation du traffic de données sont toutes regroupées sur l'avant du PCB, difficile de mal interpréter ce qui se passe.
Le connecteur J5/VIO fait doublon avec celui présent sur le mini-module FTDI, je ne l'utilise pas. Son rôle est de spécifier le niveau logique haut des lignes de données Tx et Rx (3V3 ou 5V). Le connecteur J6/VDD doit se trouver dans une position identique que le connecteur VIO (pour mes essais, j'ai utilisé le 5V venant du bus USB).
Les deux composants U2 et U3 (portes logiques 7404) ne seront pas soudés sur le prototype à venir.

   

Historique

11/10/2026
- Première mise à disposition.