Forum: Mikrocontroller und Digitale Elektronik ESP32 Boot Mode Schaltung


von Welle 🧐 S. (w3llschmidt)


Angehängte Dateien:

Lesenswert?

Ich habe mir mal ein eigenes ESP32 Dev Board zusammengestrickt.
Leider funtioniert die Programmierung mit dem esptool.py nicht.
Der SOC resetet nicht und geht auch nicht in den Download.

DTR und RTS werden vom Programmieradapter sauber gesendet.

Könntet ihr mal über die Schaltung schauen?

von Christopher J. (christopher_j23)


Lesenswert?

Der 10k Pullup an IO0 kommt mir irgendwie spanisch vor. Der gehört 
eigentlich an den EN. Zusätzliche 100nF von EN nach GND schaden auch 
nicht.

von Welle 🧐 S. (w3llschmidt)


Lesenswert?

Hi Christopher,

ja, danke - den Pullup hab ich rausgenommen. Keine Ahnung wo ich das
gesehen habe.

von Welle 🧐 S. (w3llschmidt)


Angehängte Dateien:

Lesenswert?

Hmm, ich habe jetzt einfach mal platt DTR an EN und RTS an DIO gelötet.
Funktioniert 1A.

Wozu das rumgehampel mit den Transistoren?

von Yves G. (ygoe)


Lesenswert?

> Wozu das rumgehampel mit den Transistoren?

Das dürfte daran liegen, dass die DTR- und RTS-Leitung von verschiedenen 
Terminalprogrammen und in verschiedenen Situationen unterschiedlich 
genutzt werden. Wenn der USB-Adapter nicht initialisiert ist (z.B. nur 
Stromversorgung angeschlossen aber kein USB-Host) oder wenn der PC den 
Serial Port nicht geöffnet hat, sind beide Signale Idle HIGH. Ein 
Terminal, mit dem du mit dem Gerät kommunizieren möchtest, könnte sie 
durch die Verbindung aber Active LOW setzen. Außerdem wechseln diese 
Signale kurz nach dem Anschließen des USB-Adapters an den PC öfter hin 
und her. All das habe ich heute mehrfach beobachtet, als ich meine 
Schaltung analysiert habe.

Das blöde ist jetzt, wenn jemand das Signal auf LOW setzt, das du fest 
mit dem EN-Eingang des ESP32 verbunden hast, dann ist der Chip im Reset 
und kommt da auch nicht mehr raus, bis die Verbindung wieder geschlossen 
wird. Die Idee, die ich so verstanden habe, ist, dass mit diesem 
XOR-Gatter (oder sowas ähnlichem) beide Leitungen (EN und IO0) HIGH 
gehalten werden, wenn entweder beide Signale (DTR und RTS) gleichzeitig 
HIGH oder gleichzeitig LOW sind. Also die beiden Zustände, die auftreten 
können, wenn man nichts besonderes macht. Nur wenn die Signale 
unterschiedlich gesetzt werden, passiert was.

Soweit die Theorie. In der Praxis scheint das auf den üblichen 
Dev-Boards wohl zu laufen. Jedenfalls hatte ich da nie Probleme. Beim 
nach Schema nachgebauten Aufbau wackelt es aber immer wieder. Uploads 
starten nicht oder der Chip resettet mehrmals beim Anschließen oder beim 
Schließen des Serial-Monitors. Ich bin mir noch nicht sicher, wie ich 
damit umgehe. Vielleicht lasse ich diese Beschaltung in fertigen 
Produkten auch einfach weg und verlange für Firmware-Uploads das Stecken 
eines Jumpers und manuelles Ab- und Anstecken des USB-Kabels.

von Manfred (Gast)


Lesenswert?


von Yves G. (ygoe)


Lesenswert?

Danke für den Link. Die wesentlichen Informationen sind ziemlich 
versteckt in dem langen Thread.

Ich habe meinen Aufbau jetzt geändert. Den 100nF-Kondensator zwischen 
IO0 und GND habe ich behalten, den Kondensator zwischen EN und GND habe 
ich auf 10µF vergrößert. Ohne den kleinen geht's nicht. Und beim großen 
haben 4,7µF auch nicht gereicht. Ich hatte beim Verbinden oder Trennen 
mit PuTTY sonst immer wieder mal Resets. Außerdem mehrere Resets beim 
Anschließen an den PC-USB-Port. Mit diesen Keramik-Kondensatoren (und 
natürlich den beiden Transistoren) läuft es nach einigen Tests stabil!

von Manfred (Gast)


Lesenswert?

Yves G. schrieb:
> Danke für den Link. Die wesentlichen Informationen sind ziemlich
> versteckt in dem langen Thread.

Ist doch schön, zu hören, dass es geholfen hat.
Danke für Deine Rückmeldung.

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.