Le câble · rév. B

Un câble qui respecte les règles de l'ALDL.

La ligne de données ALDL est un fil unique que chaque module a seulement le droit de tirer au niveau bas. La plupart des câbles faits maison forcent contre elle. Celui-ci non – et il résiste à 12–24 V sur la broche de données.

La requête sur le fil · 8192 baudsF4 57 01 00 B4

Chaque octet : un bit de start (bas), huit bits de données, bit de poids faible en premier, un bit de stop (haut) – 122 µs par bit. La requête entière dure 6,1 ms ; le calculateur moteur répond avec 67 octets.

Les câbles tout faits ne sont pas vendus pour le moment. Fabriquez-en un à partir de la liste des composants ci-dessous – ou utilisez un câble FTDI standard avec la modification rapide décrite à la fin de cette page.

schéma

Le problème de la plupart des câbles faits maison

La ligne ALDL GM à 8192 bauds est un fil unique à collecteur ouvert : dans l'ECM (et dans le CCM, l'ABS …), une résistance d'environ 10 kΩ la tire à +5 V, et chaque module la tire au niveau bas avec un transistor pour émettre un bit à 0. Au repos = niveau haut. Chacun a le droit de la tirer au niveau bas ; personne n'a le droit de la forcer au niveau haut.

Le fameux « câble à 20 $ » relie les broches TXD et RXD du FT232R entre elles, directement sur la broche M. TXD est une sortie push-pull qui force la ligne au niveau haut dès qu'elle est au repos ; chaque bit à 0 de l'ECM devient donc un bras de fer entre le transistor de l'ECM et la sortie du FTDI. Selon les composants, le « niveau bas » obtenu se situe entre 0,5 et 1,5 V – pile aux seuils du récepteur – et vous obtenez des erreurs de trame et des données parasites, d'autant plus que le CCM est bavard. Le même câble fatigue aussi la sortie de l'ECM.

Deux autres pièges classiques :

  • FT_Prog « Invert TXD/RXD » – correct uniquement pour les adaptateurs RS-232 (DB9) équipés d'un transceiver inverseur. Sur une carte FT232R TTL, TX se retrouve au niveau bas au repos (ce qui maintient tout le bus de la voiture à la masse – le CCM enregistre alors le code 41) et RX lit des données inversées.
  • Cartes en 3,3 V / cavalier VCCIO sur 3,3 V – la ligne est en 5 V ; utilisez des E/S en 5 V.

Conception recommandée (rév. B)

Réf.ComposantRôle
U1Module FTDI FT232RL authentique, cavalier VCCIO = 5 V (ou FTDI TTL-232R-5V)USB ⇄ UART TTL, logique 5 V, pas de sabotage par le pilote
Q1NPN 2N3904 (CMS : MMBT3904)inverseur : TXD au repos HAUT → Q1 passant → Q2 bloqué
Q2NPN 2N3904, 40 V (CMS : MMBT3904 ; un PN2222A convient)étage de sortie à collecteur ouvert – ne fait jamais que tirer la ligne au niveau BAS, comme tous les modules GM
Q3MOSFET canal N BSS138 50 V (SOT-23) ou BS170 (TO-92)isolateur RX : grille sur +5 V, source → RXD, drain → DATA
R1150 Ω, 0,5 Wrésistance série de Q2
R210 kΩ RXD → +5 Vniveau de repos de RX (sur l'établi, voiture hors tension)
R310 kΩbase de Q1
R4 + SW110 kΩ + interrupteur entre A et Bactivation du diagnostic pour les ECM 1982–88 (160 bauds) uniquement ; sur OFF à partir de 1989
R510 kΩ TXD → +5 VTXD au niveau haut pendant le démarrage du FTDI ou quand il est débranché → ligne libérée
R610 kΩ collecteur de Q1 → +5 Vcommande de base de Q2
R722 kΩbase de Q2 – valeur volontairement élevée, limite le courant de court-circuit
C1100 nFdécouplage du 5 V
D1TVS SMAJ24A, unidirectionnelle – bague (cathode) sur DATA, anode sur GNDpointes de tension uniquement (ESD, allumage) ; ne conduit pas jusqu'à 24 V
JP1sélecteur à 3 positionsM (1990–95), E (1982–88), E+M (1989)
J1fiche ALDL GM 12 broches1995 : DLC 16 broches, données sur la broche 9, masse sur 4+5

Fonctionnement

  • TX – au repos, TXD est au niveau HAUT, Q1 conduit, Q2 est bloqué : la ligne est libérée. Un bit à 0 (TXD BAS) bloque Q1, R6+R7 alimentent la base de Q2 et Q2 tire DATA au niveau bas à travers R1. Deux inversions = la même logique que la sortie TX du FTDI : aucune inversion FT_Prog n'est donc utilisée. Niveau bas ≈ 0,1 V + R1 × courant du bus (≈ 0,2–0,4 V avec une résistance de rappel du bus de 2–10 kΩ).

    Polarité (identique en rév. A et en rév. B – les deux sont non inverseuses) :

    État de l'UARTTXDrév. A : sortie du 74LVC1G07rév. B : Q1rév. B : Q2Ligne DATA
    repos / bit de stop / bit à 1HAUThaute impédance (libérée)passantbloquéHAUT (rappel du bus)
    bit de start / bit à 0BAStire au niveau basbloquépassantBAS

    Un transistor seul ou un étage à drain ouvert seul inverserait (base HAUTE → ligne BASSE) ; le 74LVC1G07 contient un buffer + un drain ouvert (non inverseur ; le petit losange de son symbole signale la sortie à drain ouvert, ce n'est pas une bulle d'inversion), et la rév. B utilise Q1 pour annuler l'inversion de Q2. Un étage inverseur maintiendrait le bus au niveau BAS chaque fois que l'UART est au repos – voir « Pourquoi la polarité compte ».

  • RX – Q3 est le classique adaptateur de niveau à MOSFET. Quand quelque chose tire DATA au niveau bas, la diode intrinsèque de Q3 puis son canal tirent RXD au niveau bas ; quand DATA est au niveau haut (5 V, voire 24 V), Q3 est bloqué et R2 maintient RXD à 5 V. RXD ne voit donc jamais que 0–5 V, et il voit la vraie ligne : chaque octet que nous émettons revient (écho), et VetteALDL le vérifie octet par octet.
  • Hors tension – USB débranché, Q1/Q2 n'ont aucune commande de base et la grille de Q3 est à 0 V : le câble est réellement invisible pour la voiture (la rév. A chargeait encore le bus via R3 et l'entrée RXD).
  • Le rebouclage sur l'établi fonctionne sans la voiture : Q2 tire au niveau bas le fil DATA non raccordé, Q3 le transmet à RXD.

Pourquoi la polarité compte

Au repos, une UART est au niveau HAUT (mark) et un octet commence par un bit de start BAS ; la ligne ALDL est elle aussi au niveau HAUT au repos, et les modules la tirent au niveau BAS. La ligne doit donc suivre TXD directement. Si un étage inversait :

  • le bus serait maintenu au niveau BAS pendant tout le temps où l'application n'émet pas – le CCM perd l'ECM (code 41), le combiné perd les données de l'ECM et plus personne ne peut dialoguer ;
  • chaque octet arriverait inversé à la voiture (bit de start HAUT = pas de bit de start) : rien ne serait compris ;
  • « corriger » cela avec l'option FT_Prog « Invert TXD » est fragile : avant que le FTDI ne charge son EEPROM (branchement, réinitialisation USB, ordinateur portable débranché), la ligne serait de nouveau tirée au niveau BAS.

Le débogueur de connexion détecte ce problème sur l'établi (étape 2 : ligne bloquée au niveau bas / écho inversé) et dans l'EEPROM (étape 1 : « lignes inversées »).

Que se passe-t-il si du 12 V (ou plus) arrive sur la broche de données ?

L'ECM lui-même ne met jamais 12 V sur la ligne de données ALDL (voir plus bas), mais une mauvaise broche, une fiche décalée d'un cran, la broche G de test de la pompe à carburant sur les voitures 1984–89, la broche 16 (batterie) du DLC 16 broches ou un défaut du faisceau peuvent le faire.

Tension sur DATARév. BRév. A (74LVC1G07 + diode d'écrêtage)
12–16 V, au reposrien ne conduit (Q2 40 V, Q3 50 V, D1 tension de service 24 V) ; R2 maintient RXD à 5 Vla diode d'écrêtage absorbe des ampères d'une source à basse impédance et grille ; U2 (max. absolu 6,5 V) reçoit ~55 mA à travers R1 et meurt
12–16 V pendant l'émissioncourant de Q2 limité par sa commande de base à ~15–40 mA ; RX voit la ligne bloquée au niveau HAUT → erreur d'écho → l'application cesse d'émettrecomme ci-dessus
24 V (démarrage avec un booster)rien ne conduit (tension de service de D1 : 24 V)comme ci-dessus
pointes > 27 VD1 écrête (≤ 39 V à 10 A, sous les 40 V de Q2)écrêtage à ~6–7 V

Les anciens câbles « TX+RX reliés » et la modification rapide à la BAT85 décrite plus bas ne sont pas protégés : le 12 V serait injecté dans la broche TX du FTDI. Ne les utilisez que sur la bonne broche.

À quoi ressemble la ligne de données dans les modules de la voiture

La ligne ALDL GM à 8192 bauds (broche M, 1990–95 ; broche 9 sur le DLC 16 broches de 1995) n'est pas la ligne K/ligne L européenne ISO 9141 (12 V, utilisée p. ex. par Opel/Vauxhall – le Tech 1 a une cartouche KW2000 séparée pour cela). C'est un fil unique bidirectionnel :

  • chaque module (ECM, CCM, ABS, SIR, climatisation) possède une sortie à collecteur ouvert (NPN) qui tire le fil à la masse pour émettre un bit à 0 et le libère pour un bit à 1 ;
  • le fil est tiré au 5 V régulé de l'ECM par une résistance (de l'ordre de 10 kΩ ; la valeur exacte pour le 1227727 n'est pas documentée dans nos sources – mesurez-la si vous en avez besoin, voir plus bas) ;
  • chaque module écoute aussi ce même fil (une entrée à comparateur/transistor), si bien que chacun entend sa propre émission – c'est pour cela que le bus fonctionne en « ET câblé » et que notre câble ne doit que tirer au niveau bas.

La ligne à 160 bauds (broche E, 1982–88) est elle aussi une sortie 5 V à collecteur ouvert de l'ECM, mais elle n'émet (impulsions) qu'en présence de la résistance A–B de 10 kΩ. Certains autres systèmes GM de cette époque utilisaient une ligne série en 12 V (l'autotest du Tech 1 affiche même « LOW SPEED 12 V SERIAL DATA ») ; la rév. B fonctionne aussi avec eux, car Q2 et Q3 supportent 40/50 V.

Pour estimer la résistance de rappel de votre voiture : contact mis, moteur arrêté, câble débranché, mesurez la tension entre DATA (M) et la masse (A) – environ 5 V (le trafic du CCM la fait fluctuer). Placez ensuite une résistance de 10 kΩ entre M et A et mesurez à nouveau : R_pullup ≈ 10 kΩ × (5 V − V) / V. Faites vite – tant que la ligne est chargée, le CCM peut perdre l'ECM et mémoriser le code 41, que vous pourrez effacer ensuite.

Historique : rév. A

La rév. A utilisait un buffer à drain ouvert 74LVC1G07, 4,7 kΩ vers RX, une résistance de rappel de 47 kΩ et une diode d'écrêtage sur la ligne. Les schémas antérieurs au 26 septembre 2026 montraient cette diode à l'envers (anode sur DATA = bus maintenu à ~0,6 V) et comme une TVS de 5,0 V ; ces deux erreurs sont corrigées, et la rév. B remplace tout l'étage d'entrée, car la rév. A ne survit pas à 12 V sur la broche de données.

Modification rapide d'un câble existant à TX+RX reliés

Coupez TX, insérez une diode Schottky (BAT85/1N5817) : bague (cathode) côté TXD, anode côté ligne ALDL ; placez 4,7 kΩ en série sur RX ; carte en 5 V ; toutes les inversions FT_Prog sur OFF.

Non protégé contre le 12 V sur la broche de données (la diode transmettrait le 12 V à la broche TX du FTDI) – à n'utiliser que sur la bonne broche ; fabriquez la rév. B pour toute installation permanente.

ALDL 12 broches (prise de la voiture, vue depuis l'habitacle)

 F  E  D  C  B  A        A = masse           B = activation diagnostic (ECM)
 G  H  J  K  L  M        E = données 160 bauds (1982–89)   M = données 8192 (1990–95)
                         G–A = diagnostic combiné 1990–93 (JAMAIS sur 1984–89 : G = pompe à carburant)

Procédure de test

  1. Établi : VetteALDL → Débogueur de connexion, étapes 1 (PC et pilote) et 2 (rebouclage) – elles doivent être propres à 100 %.
  2. Voiture, contact coupé : étape 3 – le fil de données ne doit pas être sur une broche de masse.
  3. Contact mis : étape 4 – trafic du CCM visible, l'ECM répond.
  4. Au moindre résultat en rouge → Sessions et assistance → Créer l'archive d'assistance.