ESP8266 mit CH340 lässt sich nicht flashen

OP #7514363
Lesenswert?

Hallo zusammen,

Ich habe mir eine eigene Platine für ein Matrix-Led Display erstellt. Das Herz ist ein ESP-12f (ESP8266), welcher über einen CH340 geflasht werden soll. Ein Screenshot der Schaltung ist im Anhang (Stromversorgung & Displays nicht dargestellt).

Leider kann der CH340 nicht mit dem ESP kommunizieren:

1
A fatal esptool.py error occurred: Failed to connect to ESP8266: Timed out waiting for packet header

Was ich bereits versucht habe:

  • Schaltplan x-mal gecheckt auf Richtigkeit
  • Flash-Parameter geprüft
  • Manuellen Flash-Modus erzwungen (IO0 auf GND beim Start): Modus funktioniert (entsprechende Nachricht vom ESP wird gesendet)
  • Pins am ESP per Oszi geprüft:
    • RXD & TXD: auf beiden findet beim Flashversuch Kommunikation statt
    • EN/RST: meines Erachtens i.O. unter Berücksichtigung der Vorraussetzungen für erfolgreiches booten (Espressif Dokumentation)
    • IO0/Flash-Pin: wohl als Clock-Out konfiguriert (26 MHz Signal)

Besonders der letzte Punkt macht mich stutzig. Basierend auf dem letzten Kommentar von hier: https://www.esp8266.com/viewtopic.php?f=160&t=16248&start=4 ... habe ich die TX Leitung vom CH340 getrennt, jedoch mit gleichem Ergebnis.

Ich hoffe jemand hier hat keine Tomaten vor den Augen wie ich und erkennt den Fehler...

Danke schonmal.

#7514392
Lesenswert?

Hast du eine Möglichkeit rx und tx am ESP zu Brücken? Damit könntest du mit jedem Terminal Programm (putty, hterm) mal testen ob such das ankommt was du erwartest. Check das mal...

Wenn der ESP in den Bootloader wechselt, sieht ja dannach aus wenn du die Meldung bekommst kannst ja eigentlich nur sein das er nix empfängt.

Die Kunstschaltung mit Reset und dem IO Pin funzt bei CH340 manchmal nicht wirklich gut, im Zweifelsfall manuell in den Bootloader wechseln.

OP #7514404
Lesenswert?

Wenn ich RX und TX brücke bekomme ich keine Antwort. Der ESP ist währenddessen aber aktiv, eventuell zieht der das high oder low? TX vom CH340 hat definitiv Aktivität, aber näher analysiert habe ich das noch nicht.

Manueller Bootloader geht, aber flashen kann ich in dem Modus trotzdem nicht. Wobei die Reset Schaltung am Flash-Start ja eh wieder ihr eigenes Ding macht.

#7514426
Lesenswert?

Spätestens wenn du den Reset dauerhaft auf low ziehst hält er die Füße still.. Da er ja im Bootloader steht halte ich es fur maximal unwahrscheinlich das er RX auf low zieht... Solange du das Echo nicht bekommst wird es auch nix mim flashen,

Hatte mal nen ähnlichen Fall, am Ende hab ich den ESP ausgelötet und dann festgestellt das der CH340 oder die leiterbahn /pad kaputt war

OP #7514437
Lesenswert?

Also... ich habe jetzt nochmal ein paar Sachen versucht:

  • TX/RX überbrückt und mit Oszi beobachtet: Nachrichten per USB werden korrekt über TX übermittelt
  • an RX kommen die Signale an (ESP zieht weder high noch low), aber über USB sehe ich davon nichts
  • Reset-Pin während o.g. zusätzlich auf low gezogen -> kein Unterschied

Der Reset Pin ist tatsächlich unbeschaltet, der ESP hat intern einen Pull-Up, siehe im Datenblatt Seite 13: https://docs.ai-thinker.com/_media/esp8266/docs/esp-12f_product_specification_en.pdf

Eine zweite identische Platine funktioniert genauso wenig, daher würde mich ein Defekt vom CH340 wundern.

Edit: achja, habe auch die RX und TX Leitung durchgepiepst, kein Defekt an der Stelle

OP #7514467
Lesenswert?

Dieter S. schrieb:

Ja, das Echo sollte schon kommen. Was mir aber noch aufgefallen ist, du verwendest den EN-Pin, im Wemos-Schaltbild wird der RST-Pin verwendet.

Ja, das geht wohl beides. Ich habe bei einer früheren Platine mit gleichem Problem auch mal umgelötet von EN auf RST, hat keinen Unterschied gemacht.

zum flashen: GPIO0 auf LOW gwzogen?

ja, das macht die Transistorschaltung nach dem CH340 automatisch, sieht aufm Oszi plausibel aus

EN (Pin3) auf HIGH gezogen? Warum C6 an EN?

ja, siehe Antwort drüber. C6 wird im Zusammenhang mit der Transistorschaltung empfohlen für bessere Stabilität

http://stefanfrings.de/esp8266/index.html

OP #7528656
Lesenswert?

So, ich habe wieder Zeit gefunden mich damit zu beschäftigen. Ich habe alles mögliche versucht, komme aber immer noch nicht weiter...

  • EN -> 10k Pull-Up
  • GPIO15 -> 10k Pull-Down
  • GPIO2 -> 10k Pull-Up
  • GPIO0 -> 10k Pull-Up

Momentan ist alles o.g. gleichzeitig drin, keine Veränderung. Das einzige was sich je verändert hat war, als ich GPIO2 per 10k auf low gezogen habe, dann hat die interne LED beim flashen anders geblinkt. Das flashen war aber trotzdem nicht erfolgreich, gleicher timeout wie auch sonst.

Mit jeder Veränderung bin ich noch ratloser als vorher :(

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