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.
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.
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.
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) :
- Test #1
- simple boucle entre sortie Tx et entrée Rx, sans conversion de niveau
(et donc en TTL 3V3 ou 5V) à vitesse basse (9600 bauds) et élevée (2
Mbps), fil de liaison très court et non blindé
- Test #2
- boucle entre sortie Tx et entrée Rx de ports différents, en passant
par des adaptateurs RS485 (module Tx A configuré en émission et
module Rx B configuré en réception),
vitesse 250 kbps, liaison en fils torsadés non blindés de longueur 5
mètres
- Test #3
- boucle entre sortie Tx et entrée Rx d'un même port, en passant par
des adaptateurs RS422, vitesse 250 kbps, liaison en fils torsadés non
blindés de longueur 5 mètres
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.
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.
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.