Forum: Mikrocontroller und Digitale Elektronik CH340 Spezi gesucht. DTR Pull-Up?


von Micha W. (blackxiiv)


Lesenswert?

Moin,

Folgende Aufgabe: Ich muss auf UART "xxx" (wirklich xxx) sofort nach dem 
Power-up/Reset meines DUT/Prüflings (LANTRONIX Device) senden um ins 
Setup zu kommen.

Meine Idee: Ich habe mir überlegt, dazu mein DUT über den DTR-Pin vom 
CH340* zu resetten. Ich hänge an meinen Prüfling eine USB-UART-Bridge 
(CH340C/G), mache mein TeraTerm (Terminal Programm) auf und starte ein 
Macro. Dieses Macro stellt den UART ein 
(Baudrate/Start/Data-Bits/Stop/Flow) und togglt den DTR-Pin (das kann 
TeraTerm über Kommando: "setdrt on/off" und der CH340* supportet das 
laut datasheet) vom CH340* um das DUT zu resetten. Ich sende so lange 
"xxx" (ohne CR/LF) bis ich irgendwas im Terminal empfange/etwas im 
RX-Buffer habe. Sobald ich was im RX-Buffer habe, weiß ich, dass ich im 
Setup bin, weil wenn nichts ankommt bootet mein DUT durch oder ist 
kaputt. Die Idee habe ich mir im Arduino-Nano-Schematics abgeschaut, 
weil dieser ja auch immer resettet werden muss, wenn ich ein neues 
Sketch aufspiele.

Nun die Frage: Kann mir jemand sicher sagen ob der DTR-Pin am CH340* 
einfach ein HIGH/LOW-Driver oder ob das Open-Collector ist? Der Pull-Up 
beim Arduino-Schematics ist wohl primär für den ATmega328, damit /Reset 
nicht getriggert ist im Betrieb. Hat jemand eine Ahnung ob der CH340* 
nur nach GND ziehen oder auch nach VCC ziehen kann?

Danke und Grüße (:

von Yalu X. (yalu) (Moderator)


Lesenswert?

DTR ist genauso wie TXD und RTS ein Push-Pull-Ausgang, braucht also
keinen Pull-Up-Widerstand. Open Collector wäre höchstens dann sinnvoll,
wenn DTR primär als Reset-Signal gedacht wäre. Dann würde er aber nicht
DTR, sondern RSTOUT o.ä. heißen.

von Micha W. (blackxiiv)


Lesenswert?

Danke!

Wird DTR denn von irgendwas gesetzt/resettet außer von meiner 
USB-UART-Bridge, wenn ich nur RXD/TXD verbunden habe?
Denn heißt ja "Data Terminal Ready" - ich gehe davon aus, dass nur meine 
Bridge diesen Status ändern kann. Richtig?

Grüße! (:

: Bearbeitet durch User
von Manfred (Gast)


Angehängte Dateien:

Lesenswert?

Micha W. schrieb:
> ich gehe davon aus, dass nur meine
> Bridge diesen Status ändern kann.

So ist das, das per USB angeschlossene Terminal setzt DTR.

Schaue Dir mal das Schaltbild eines China-Arduino Nano oder Uno an: Der 
Reset vom AT328 ist bei low aktiv. Das sitzt ein Widerstand nach Plus 
(pull-up) und der DTR des CH340 hängt über einen Kondensator mit 100nF 
dran.

Blöd ist, dass die (meisten?) CH340-China-Platinchen aus dem A*Umfeld 
den DTR nicht auf die Stiftleiste führen.

Ich kenne einen kommerziellen Programmieradapter, wo ein FT2232 
eingesetzt ist, also zwei V24 emuliert werden. Die eine dient 
ausschließlich der Datenübertragung, von der zweiten Schnittstelle 
werden nur zwei Statusleitungen verwendet, um das Zielgerät zu steuern. 
Erfordert natürlich, selbst die passende PC-Software zu erstellen.

von Micha W. (blackxiiv)


Lesenswert?

Jipp, die 100nF sind da, damit der /Reset sicher losgelassen wird sobald 
die Betriebsspannung steht.

Die USB-UART-Platinen (CP2102 usw) kenne ich auch zu gut. Ich baue 
meinen Prototyp auf 1,27mm Lochraster auf und darum auch der CH340. Ich 
würde auch gern den FTDI nutzen aber das Rastermaß ist beim CH340 ideal, 
er ist billig, funktioniert ohne externen XTAL und ich habe keine Lust 
jedes Mal das "IgnoreHardwareSerNum" in die Regestriy zu hacken, wenn 
man ein Massenprodukt hat - zumal Kundenmesstechnick das oft nicht 
zulässt ;) Der CH340 zählt keine VCPs hoch solange man am gleichen 
USB-Port bleibt :P

Naja, meine "Software" sind halt einfache Macros. Man könnte fast sagen 
"quick'n'dirty".

Grüüßee (:

von Manfred (Gast)


Lesenswert?

Micha W. schrieb:
> Jipp, die 100nF sind da, damit der /Reset
> sicher losgelassen wird sobald die Betriebsspannung steht.

Nicht nur: Der CH340 liefert sowohl aktiv high als auch low, was Deine 
Ursprungsfrage war. Was nun, wenn der Resettaster betätigt wird oder der 
ISP-Programmer zugreifen will, während der DTR auf H steht?

Da dient der C primär dazu, Kollisionen zu verhindern!

> würde auch gern den FTDI nutzen

Ich nicht: Deren Kram ist teuer und sie sind vor wenigen Jahren mit 
Computersabotage aufgefallen, Zerstörung illegaler Nachbauten.

> er [CH340] ist billig, funktioniert ohne externen XTAL

Warum ist auf den Chinaplatinen dann ein Quarz drauf?

> und ich habe keine Lust jedes Mal das "IgnoreHardwareSerNum"
> in die Regestriy zu hacken

Das Teil heißt "Registry".

Heisst das, Du kennst einen Weg, die Hochzählerei der Portnummern zu 
verhindern? Wenn ja, hätte ich gerne Details dazu.

> Der CH340 zählt keine VCPs hoch

Das finde ich sehr angenehm, hier haben alle Arduinos und Portadapter 
immer die selbe ComPort-Nummer - ich habe mehrere Adapter von USB nach 
Sub-D mit CH340.

von Micha W. (blackxiiv)


Lesenswert?

Manfred schrieb:
> Micha W. schrieb:
>> Jipp, die 100nF sind da, damit der /Reset
>> sicher losgelassen wird sobald die Betriebsspannung steht.
>
> Nicht nur: Der CH340 liefert sowohl aktiv high als auch low, was Deine
> Ursprungsfrage war. Was nun, wenn der Resettaster betätigt wird oder der
> ISP-Programmer zugreifen will, während der DTR auf H steht?
>
> Da dient der C primär dazu, Kollisionen zu verhindern!

Habe ich nicht bedacht - Punkt für dich ;)

>> würde auch gern den FTDI nutzen
>
> Ich nicht: Deren Kram ist teuer und sie sind vor wenigen Jahren mit
> Computersabotage aufgefallen, Zerstörung illegaler Nachbauten.
>
>> er [CH340] ist billig, funktioniert ohne externen XTAL
>
> Warum ist auf den Chinaplatinen dann ein Quarz drauf?

Weiß ich auch nicht... meine Arduino-Nano-Clone haben nen CH340C drauf 
ohne Cristall (SMD-Pads für den Crystal sind aber da). Ob das der CH340G 
auch kann weiß ich nicht. Ich vermute bei höheren Baud-Raten wird man 
dann Bit-Fehler finden.

>> und ich habe keine Lust jedes Mal das "IgnoreHardwareSerNum"
>> in die Regestriy zu hacken
>
> Das Teil heißt "Registry".

Danke <3

>
> Heisst das, Du kennst einen Weg, die Hochzählerei der Portnummern zu
> verhindern? Wenn ja, hätte ich gerne Details dazu.
>
windows-start-menue, ausführen/einfach eingeben "regedit"
dann im pfad 
"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\UsbFlags 
rechtsklick auf "UsbFlags" und "eintrag hinzufügen" oder so (sry, 
arbeite mit linux) und binär-wert hinzufügen. Der Name des Werts heißt 
"IgnoreHWSerNum0403601000". Der Wert darin ist "00" oder "0000" . Du 
kannst dahinter dann "01" eintragen.
Das nächste FTDI232-Device meldet sich dann als Com23 an. Alle anderen 
FTDI232 sollten sich am gleichen Port auch mit Com23 melden.

>> Der CH340 zählt keine VCPs hoch
>
> Das finde ich sehr angenehm, hier haben alle Arduinos und Portadapter
> immer die selbe ComPort-Nummer - ich habe mehrere Adapter von USB nach
> Sub-D mit CH340.

Was machen da eigentlich die Arduino Rev3 dinger, die den ATmega16U* als 
USB-UART-Bridge haben? Alle der gleiche Port?

Gruß, michi (:

von Micha W. (blackxiiv)


Lesenswert?

FTDI232 die schon mal am rechner waren, melden sich natürlich als deren 
alter COM an! Um alle FTDI232 ob alt/jungfräulich gleich zu melden ist 
(wohlwollend formuliert) richtig sackstand! Dazu musst du dann alle 
alten regestry-einträge löschen, wenn du weißt welcher FTDI-Chip welche 
ID hatte :P
Das macht Spaß (:

von Micha W. (blackxiiv)


Lesenswert?

Manfred schrieb:

> Heisst das, Du kennst einen Weg, die Hochzählerei der Portnummern zu
> verhindern? Wenn ja, hätte ich gerne Details dazu.

https://www.ftdichip.com/Support/Knowledgebase/index.html?ignorehardwareserialnumber.htm

Für diverse Fälle :)
Grüüßee (:

von Manfred (Gast)


Angehängte Dateien:

Lesenswert?

Micha W. schrieb:
>> Da dient der C primär dazu, Kollisionen zu verhindern!
> Habe ich nicht bedacht - Punkt für dich ;)

Genau deswegen sprechen wir hier!

>> Warum ist auf den Chinaplatinen dann ein Quarz drauf?
> Weiß ich auch nicht...
> meine Arduino-Nano-Clone haben nen CH340C drauf
> ohne Cristall (SMD-Pads für den Crystal sind aber da).

Meine nicht.

>> Du kennst einen Weg, die Hochzählerei der Portnummern zu
>> verhindern? Wenn ja, hätte ich gerne Details dazu.
>>
> "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\UsbFlags
> rechtsklick auf "UsbFlags" und "eintrag hinzufügen"..

Danke, abgespeichert, schaue ich mir bei Gelegenheit an.

>>> Der CH340 zählt keine VCPs hoch
>> Das finde ich sehr angenehm, hier haben alle Arduinos und
>> Portadapter immer die selbe ComPort-Nummer

> Was machen da eigentlich die Arduino Rev3 dinger,
> die den ATmega16U* als USB-UART-Bridge haben?
> Alle der gleiche Port?

Ich habe keine Ahnung, meine A* waren von Anfang an Chinesen.
Der UNO ist mechanisch selten dämlich und die Nanos waren unverschämt 
teuer.

Micha W. schrieb:
> Um alle FTDI232 ob alt/jungfräulich gleich zu melden ist
> (wohlwollend formuliert) richtig sackstand!
> Dazu musst du dann alle alten regestry-einträge löschen,

Ich bedauere: Registry

Nicht nur FTDI, auch SiliconLabs zählen hoch.

Micha W. schrieb:
> 
https://www.ftdichip.com/Support/Knowledgebase/index.html?ignorehardwareserialnumber.htm
> Für diverse Fälle :)

Ja Mist, hätten wir das vor ein paar Jahren gewusst, hätte das auf dem 
Prüfplatz der Fertigung die regelmäßige Fummelei erspart.

von Micha W. (blackxiiv)


Lesenswert?

Manfred schrieb:
> Micha W. schrieb:
>>> Da dient der C primär dazu, Kollisionen zu verhindern!
>> Habe ich nicht bedacht - Punkt für dich ;)
>
> Genau deswegen sprechen wir hier!
>
>>> Warum ist auf den Chinaplatinen dann ein Quarz drauf?
>> Weiß ich auch nicht...
>> meine Arduino-Nano-Clone haben nen CH340C drauf
>> ohne Cristall (SMD-Pads für den Crystal sind aber da).
>
> Meine nicht.

Foto folgt ;)

> Micha W. schrieb:
>> Um alle FTDI232 ob alt/jungfräulich gleich zu melden ist
>> (wohlwollend formuliert) richtig sackstand!
>> Dazu musst du dann alle alten regestry-einträge löschen,
>
> Ich bedauere: *Registry*

Ja - Registry. Ich tippe das noch ein paar mal, dann hab ich's... 
Registry, Registry,Registry (:

> Nicht nur FTDI, auch SiliconLabs zählen hoch.
>
SiLabs hatte ich nich nicht viele. aber kann ich morgen mal 
ausprobieren.

> Micha W. schrieb:
>>
> 
https://www.ftdichip.com/Support/Knowledgebase/index.html?ignorehardwareserialnumber.htm
>> Für diverse Fälle :)
>
> Ja Mist, hätten wir das vor ein paar Jahren gewusst, hätte das auf dem
> Prüfplatz der Fertigung die regelmäßige Fummelei erspart.

Ich habe das an unseren Prüfplätzen 2012 eingerichtet :/
Aber Hey - Nero hat Rom auch nicht an einem Tag abgebrannt :P

von TO (Gast)


Angehängte Dateien:

Lesenswert?

Nachreichung meine Nano-Clones ohne XTAL am USB-UART

von Max M. (maxmicr)


Lesenswert?

Aus dem schlecht übersetzten Datenblatt:

"For CH340G  T  R chip, the crystal X2, capacitors C6 and C7 for clock 
oscillation circuit."
"For CH340C  E  B chip, no crystal X2 and capacitor C6 and C7."

Allerdings:

"CH340G  CH340T  CH340R transmission signal baud rate error is less 
than 0.3%"

"CH340C  CH340E  CH340B transmission signal baud rate error is less 
than 1%."

: Bearbeitet durch User
von Harald (Gast)


Lesenswert?

Micha W. schrieb:
> Weiß ich auch nicht... meine Arduino-Nano-Clone haben nen CH340C drauf
> ohne Cristall (SMD-Pads für den Crystal sind aber da). Ob das der CH340G
> auch kann weiß ich nicht.

Das ist doch ganz einfach: Frühe und einfache USB2Serial Designs hatten 
allesamt einen Quarz, FTDI zu Anfang auch. Irgendwann hat es sich 
durchgesetzt, dass man aus dem SOF-Signal des USBs (welcher GENAU jede 
1ms zuschlägt) den internen primitiven RC-Oszillator nachregelt. Das ist 
einfach ein Zähler, der zwischen zwei SOF einen gewissen Wert erreichen 
soll. Gespeist wird dieser Zähler vom internen RC-Oszillator. Wenn der 
Wert jetzt zu hoch oder zu niedrig ist, wird der RC-Oszillator 
entsprechend korrigiert. Führt zu einem gewissen Jitter, ist aber 
tolerabel.

Die ersten CH340 waren mit Quarz, die neuen Revisionen gibt es auch 
ohne. Beide Versionen findet man heute auf dem Markt.

>Ich vermute bei höheren Baud-Raten wird man dann Bit-Fehler finden.

Ein schlechter Baudratengenerator schlägt bei allen Bitraten (also auch 
bei niedrigen Baudraten) durch, einfach mal den Gedanken durchspielen.

von Harald (Gast)


Lesenswert?

Hier noch die Versionen, die existieren (evtl. gibt es auch noch mehr)
https://www.mpja.com/download/35227cpdata.pdf

von Manfred (Gast)


Lesenswert?

Max M. schrieb:
> "For CH340G  T  R chip, the crystal X2, capacitors C6 and C7 for clock
> oscillation circuit."
> "For CH340C  E  B chip, no crystal X2 and capacitor C6 and C7."

Das passt: Der USB-Adapter 13.07.2020 21:46 liegt hier auf dem Tisch, da 
ist ein -G drauf.

Ein Nano mit Quarz hat auch einen CH340-G, vier andere im Bestand mit 
Quarz sind ungestempelt :-( USB wird generell bei Eingang getestet, ich 
spiele ein erweitertes Blink auf.

Auf dem Bild von TO  14.07.2020 09:07 meine ich, ein C zu lesen, wo kein 
Quarz dran ist.

Damit hast Du geholfen, Quarz oder nicht Quarz zu klären und Micha W. 
kann die Falle vermeiden, den falschen Untertyp einzusetzen.

von Robert (Gast)


Lesenswert?

TO schrieb:
> Nachreichung meine Nano-Clones ohne XTAL am USB-UART

Zeige doch auch mal die andere Seite. Es gibt Versionen des Nano, die 2 
Quarze auf der Oberseite haben.

von Harald (Gast)


Angehängte Dateien:

Lesenswert?

Robert schrieb:
> Zeige doch auch mal die andere Seite. Es gibt Versionen des Nano, die 2
> Quarze auf der Oberseite haben.

Siehe Bilder, noch Fragen?

von TO (Gast)


Angehängte Dateien:

Lesenswert?

Nachreichung Nano-Clone-Top.#
Nicht über den Zustand wundern. Bei uns gehen regelmäßig Nanos in der 
Ausbildung kaputt. Lehrlinge haben das unglaubliche Talent Schlüsse mit 
Messspitzen herzustellen und die ATmegas zu himmeln. Ich bekomme dann 
die kaputten Boards und sammel mir die USB-UART-Bridges für diverse 
Testadapter runter.


Harald schrieb:
> Hier noch die Versionen, die existieren (evtl. gibt es auch noch
> mehr)
> https://www.mpja.com/download/35227cpdata.pdf

Dieses Datenblatt habe ich später dann auch gefunden - dann war alles 
klar zum Thema Quarz und wie viele Varianten es gibt und auch 
unterschiedlich auf den Klonen zu finden sind.

von Manfred (Gast)


Angehängte Dateien:

Lesenswert?

TO schrieb:
> Lehrlinge haben das unglaubliche Talent ...

Ich habe mir mal ein paar Adapterplatinen gekauft, die kamen als lose 
Bauteile. Die Schraubklemmen habe ich nicht bestückt, aber ich kann dran 
rumbraten und den Nano umstecken. Wäre das eine Empfehlung an Eure 
Lehrwerkstatt?

von TO (Gast)


Lesenswert?

Coole Idee zum Basteln.
In unserer Ausbildung wird aber sehr viel mit Lochraster/Streifenraster 
Euro-Platinen gearbeitet. Daher nehmen die auch immer den Nano - beim 
Uno könnte man ja einfach den ATmega mit DIP-Package tauschen - aber 
"irgendwer" ist ja auf die geniale Idee gekommen beim Uno auf einer 
Seite nen 1/20" RM Step an der Konnektierung reinzunageln :/

von Max M. (maxmicr)


Lesenswert?

Wer bastelt denn noch mit Lochraster wenn Custom-PCBs inzwischen 
günstiger sind?

von Harald (Gast)


Lesenswert?

Max M. schrieb:
> Wer bastelt denn noch mit Lochraster wenn Custom-PCBs inzwischen
> günstiger sind?

Löten auf Lochraster ist zwar old-school und uncool, bringt aber viel 
für Löterfahrung und Fingerfertigkeit. Man darf eben nur nicht 
ausschließlich auf diesen Methoden verharren, zeitgemäße 
Konstruktionsweisen gehören auch zur Ausbildug, klar!

von Manfred (Gast)


Lesenswert?

TO schrieb:
> Coole Idee zum Basteln.
> In unserer Ausbildung wird aber sehr viel mit
> Lochraster/Streifenraster Euro-Platinen gearbeitet.

Auf Deinen Bildern sind am Nano keine Stiftleisten eingelötet, 
stattdessen sieht man, dass direkt dran herumgebraten wurde - deshalb 
mein Vorschlag mit der Adapterplatte.

Max M. schrieb:
> Wer bastelt denn noch mit Lochraster wenn Custom-PCBs inzwischen
> günstiger sind?

Na ich, für Einzelstücke malt man keine Leiterplatte. Da die Schaltung 
ja noch nicht erprobt ist, kann ich auf Lochraster Fehler besser 
korrigieren.

von TO (Gast)


Angehängte Dateien:

Lesenswert?

Manfred schrieb:
> Auf Deinen Bildern sind am Nano keine Stiftleisten eingelötet,
> stattdessen sieht man, dass direkt dran herumgebraten wurde - deshalb
> mein Vorschlag mit der Adapterplatte.

Das ist ein Board aus nem Projekt mit 3D-Druck. Da wurde die Platine 
ohne Leisten eingepasst.

Hier noch ein paar Bilder zum halb fertigen Adapter für den Test der 
Module, die ich eingangs erwähnte.

gruß (:

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.