ESP32 Boot Mode Schaltung

OP #6611649
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?
Angehängte Dateien:
#7229465
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.
#7229639
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!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren