ESP8266-01S - programmieren mit separater Spannungsquelle und USB Adapter

Gast #7874128
Lesenswert?

Guten Tag, beim Programmieren/Flashen eines ESP8266-01S stellt sich bei mir folgendes Problem ein:

Ausgangssituation:

  • ESP-01S hat ja keine eigene Entwicklungsumgebung, nutze einen USB to Serial Adapter, Spannungsversorgung von 3.3V kommt stabil von einer separaten Spannungsquelle (stabilisierter 3.3V Spannungsregler) und nicht direkt von dem USB Adapter. TX und RX vom ESP sind entsprechend mit dem Adapter verbunden; zusätzlich ist der Adapter mit dem gemeinsamen GND der Spannungsquelle und ESP GND verbunden. GPIO0 vom ESP ist vor der Aktivierung der Spannung mit GND fest verbunden.

Problem: Das Flasehn funktioniert nur, wenn der USB Adapter zuerst angeschlossen wird bevor die (externe) Spannungsversorgung aktiviert wird. Schließe ich zuerst die externe Spannung an und dann den Adapter in die USB Schnittstelle meldet der ESP bzw. die Arduino IDE, dass keine Verbindung zustande kommt. GND ist stets wie oben beschrieben mit ESP GND und ESP GPIO0 und Adapter GND verbunden.

Wieso spielt hier die Reihenfolge (Erst Adapter dann separate Spannungsquelle anschließen) eine Rolle ?

Gast #7874226
Lesenswert?

Sherlock 🕵🏽‍♂️ schrieb:

weil der USB Adapter mangels Stromversorgung die TXD (Ausgang des ESP) Leitung herunter zieht. Der ESP reagiert darauf, darfst du nicht machen.

Verstehe ich jetzt nicht wirklich, kannst du das bitte etwas erläutern. Es funktioniert ja gerade nur dann, wenn der USB Adapter ZUERST an die USB Schnittstelle angeschlossen wird. Zu dem Zeitpunkt und danach (bis die externe Spannungsquelle angeschlossen wird) ist der ESP noch spannungslos und bekommt nur TX/RX (HIGH Zustand vom Adapter) geliefert (beide Pins sind per Messung am Adapter HIGH, da der Adapter die beiden Pins intern hochzieht, zudem hat der ESP01s interne Pull-Ups, die aber zu dem Zeitpunkt noch gar nicht zum Tragen kommen). Erst dann wird die externe Spannungsquelle aktiviert und der ESP bekommt seine Versorgung. Dann bleiben TX und RX nach wie vor HIGH (durch die internen Pull-Ups). Insofern verstehe ich den Einfluss der Reihenfolge nicht. Neben GND sind nur TX und RX des ESP mit dem Adapter verbunden und diese sind HIGH (vom Adapter geliefert und nach Stromversorgung auch vom ESP durch interne Pull Ups).

Habe mal das Schaltbild mit dem Adpater angehängt...

Angehängte Dateien:
Gast #7874230
Lesenswert?

Dieter S. schrieb:

Ich habe u.a. dazu 1k Widerstände in die Leitungen (RX und TX) gesetzt. Dann passiert das nicht. Hier mein Programmer für den ESP8266-01: https://forum.arduino.cc/t/zeigt-her-eure-geilen-projekte/359167/783 Der FTDI arbeitet mit 5V

Ich nutze keinen FTDI sondern einen 3.3V USB to Serial Adapter , wobei die Spannungsversorgung des Adapters nicht den ESP versorgt sondern lediglich die TX und RX Signale (mit 3.3V des Adapters). Die von dir erwähnten Widerstände sind nur für 5V relevant, trifft bei mir nicht zu. (Schaltbild und Adapter s. Post vorher)

Gast #7874254
Lesenswert?

David schrieb:

Verstehe ich jetzt nicht wirklich, kannst du das bitte etwas erläutern. Es funktioniert ja gerade nur dann, wenn der USB Adapter ZUERST an die USB Schnittstelle angeschlossen wird.

Häng mit dessen internen Schutzdioden zusammen. Wie bei fast allen CMOS IC leiten die Dioden Überspannung (alles was größer als Versorgungsspannung) vom RxD Eingang zum Vdd Pin ab.

In deinem Fehlerfall ist die Versorgungsspannung des USB Chips Null Volt, also darf an seinem RxD Eingang nicht viel mehr als Null Volt anliegen. Tut es aber bei dir, nämlich 3,3V, denn das ist der Ruhepegel vom seriellen Port (dem TxD Ausgang des ESP).

Die Schutzdioden sind nicht hochohmig. Sie belasten den ESP stark, ziehen das Signal runter, und darauf reagiert der ESP, indem er nicht Bootet.

Es funktioniert ja gerade nur dann, wenn der USB Adapter ZUERST an die USB Schnittstelle angeschlossen wird. Zu dem Zeitpunkt und danach (bis die externe Spannungsquelle angeschlossen wird) ist der ESP noch spannungslos und bekommt nur TX/RX (HIGH Zustand vom Adapter) geliefert

Beim ESP (in umgekehrte Richtung) ist das ausnahmsweise erlaubt, weil dessen Eingänge eine besondere Schutzschaltung haben. Sie erlauben etwas nehr als 3,6V auch während die Versorgungsspannung Null Volt ist.

"Parasitäre Speisung durch ESD Dioden" ist in dem Zusammenhang ein interessantes Thema.

Gast #7874284
Lesenswert?

Sherlock 🕵🏽‍♂️ schrieb:

David schrieb:

Verstehe ich jetzt nicht wirklich, kannst du das bitte etwas erläutern. Es funktioniert ja gerade nur dann, wenn der USB Adapter ZUERST an die USB Schnittstelle angeschlossen wird.

Häng mit dessen internen Schutzdioden zusammen. Wie bei fast allen CMOS IC leiten die Dioden Überspannung (alles was größer als Versorgungsspannung) vom RxD Eingang zum Vdd Pin ab.

Sherlock, vielen Dank für die tolle, ausführliche und verständliche Erklärung. Habe ich jetzt verstanden. War mir völlig neu. Damit genügt es auch nicht, den GPIO0 Eingang des ESP auf Masse zu legen, um beim Booten in den Flash Modus zu gelangen, sondern man muss auch in jedem Fall gewährleisten, dass TX/RX auf HIGH liegen. Das habe ich so auch noch in keiner Doku gelesen. Vielen Dank nochmals, das war eine große Hilfe !!!

Gast #7874288
Lesenswert?

Dieter S. schrieb:

David schrieb:

Die von dir erwähnten Widerstände sind nur für 5V relevant,

Nicht nur. Die verhindern auch das ungünstige herunterziehen der Leitungen. Dabei ist egal welcher Chip auf dem USB Serialwandler ist. Mein Tipp, ein Versuch ist es Wert.

Danke auch dir Dieter, die Erklärung zusammen mit der von Sherlock, macht die Ursache des Problems verständlich. Werde ausprobieren, ob die zusätzlichen Widerstände in den TX/RX Verbindungen die Reihenfolge, wie man die Peripherie beim Flashen anschließt, dann egal macht.

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