Forum: Mikrocontroller und Digitale Elektronik ESP8266 bootet nicht


von ESPnoob (Gast)


Lesenswert?

Hallo!
Ich hab ein ESP8266-12F mit esp-link geflasht und einen IR-Kopf an Tx/Rx 
angeschlossen.
Komischerweise bootet der ESP aber nur wenn ich TX abklemme.
Hat jmd eine Idee woran das liegen könnte?

Die restliche Beschaltung:
EN high
GPIO 0 low

von Andreas B. (bitverdreher)


Lesenswert?

GPIO15 muß auf GND.

von Andreas B. (bitverdreher)


Lesenswert?

sehe gerade: GPIO0 soll nur auf GND während des programmierens, sonst 
auf Vcc.

von ESPnoob (Gast)


Lesenswert?

Ja danke!
Hab' mich geirrt; GPIO15 ist eh auf GND, nicht 0.
However bootet er ja normal sobald ich Tx abklemme.

von ESPnoob (Gast)


Lesenswert?

GPIO 0 hate ich auf VCC, so hat er aber nicht gebootet, deswegen hab 
ichs abgetrennt und dann bootete er, bis ich Tx angeschlossen habe.

von Stefan F. (Gast)


Lesenswert?

> GPIO15 ist eh auf GND, nicht 0.

GND = 0 = Low.

von Sascha W. (sascha-w)


Lesenswert?

Hallo,

wenn der TX-Pin zu stark belastet ist und der ESP nach dem Reset dadurch 
Low erkennt, bootet er nicht - schein normal zu sein. Zieht denn dein 
IR-Kopf an dem Pin so viel Eingangsstrom?

Sascha

von ESPnoob (Gast)


Lesenswert?

Ich meinte dass ich 15 auf low hab, nicht 0 auf low.
Eingangsstrom müsste ich messen.
Wenn ja, gibt's eine Lösung außer irgendeine Pufferstufe?

von Frank S. (hobbyist)


Lesenswert?

Nein, die GPIO dürfen nur mit wenigen mA belastet werden. (Irgendwas mit 
12mA habe ich im Hinterkopf)

Du wirst also einen "Treiber" dazwischen schalten müssen.

von ESPnoob (Gast)


Lesenswert?

Die Messung sagt es fließen 70uA wenn ich verbunden booten möchte und 
320uA wenn ich nach dem booten verbinde.

von ESPnoob (Gast)


Lesenswert?

Hab jz nachgesehen; da hängt direkt der Eingang eines Schmittt. dran.
Der sollte laut DB aber nur 1u ziehen.

von Rene K. (xdraconix)


Lesenswert?

Nochmal langsam, das ist recht verwirrend deine Beschreibungen, gehe mal 
von low und 0 etc.. weg und benutze GND und VCC:

Immer:
1
CH_PD/EN -> Pull-Up   (10k) an VCC


Zum Betrieb:
1
GPIO0  -> Pull-Up   (10k) an VCC 
2
GPIO2  -> Pull-Up   (10k) an VCC
3
GPIO15 -> Pull-Down (10k) an GND

Zum seriellen Laden:
1
GPIO0  -> Pull-Down (10k) an GND 
2
GPIO2  -> Pull-Up   (10k) an VCC
3
GPIO15 -> Pull-Down (10k) an GND

GPIO15 muss eigentlich immer auf GND gezogen sein, es sei denn du 
bootest von SD-Card.

Was hast du für einen "IR-Kopf" an RX/TX? Wie ist der Verschaltet? Da 
Hilft auch mal ganz deutlich ein Schaltplan!

von C3PO (Gast)


Lesenswert?

Der TX pin darf beim start nicht LOW sein. Wenn er es ist bootet der ESP 
im "Test Mode".

Man muss daher neben gpio 0,2 und 15 auch auf den Logikpegel am TX pin 
(gpio 1) beim booten achten.

von Stefan F. (Gast)


Lesenswert?

> Der TX pin darf beim start nicht LOW sein

Das ist mir noch gar nicht aufgefallen, aber ich konnte das Problem 
tatsächlich nachvollziehen.

Steht das irgendwo im Datenblatt?

von Rene K. (xdraconix)


Lesenswert?

C3PO schrieb:
> Der TX pin darf beim start nicht LOW sein. Wenn er es ist bootet der ESP
> im "Test Mode".
>
> Man muss daher neben gpio 0,2 und 15 auch auf den Logikpegel am TX pin
> (gpio 1) beim booten achten.

Danke für die Infos, ist mir tatsächlich auch noch nie aufgefallen. Gilt 
das für alle ESP8266? Auch für die ESP-01 Modelle (TX == GPIO1)?

Wenn dem wirklich so wäre, dann müsste ich tatsächlich etwas in meiner 
Software-Lib ändern, da ich den ESP-01 mitunder über einen µC 
programmiere, der diesen Resetet und in den Serial Mode setzt - und in 
dem Zustand des Resets der RX/TX Pin aus Richtung µC undefiniert ist.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

> Gilt das für alle ESP8266? Auch für die ESP-01 Modelle (TX == GPIO1)?

Vermutlich ja, denn alle ESP8266 Module enthalten den selben ESP8266 
Chip.

von ESPnoob (Gast)


Lesenswert?

Also...

Beschaltung:
VCC/GND an LM1117 mit Puffer-C
GPIO15 <-> GND
EN <-> VCC

GPIO0 ist NICHT auf VCC, da er dann GARNICHT bootet.

Geflash ist esp-link.
Die Schaltung an Rx/Tx ist der IR-Schreib-/Lesekopf von 
wiki.volkszaehler.org:

https://wiki.volkszaehler.org/_media/hardware/controllers/ir_schreib_lesekopf_ttl_neu_v1_stromlaufplan.png?w=600&tok=937c8e

Wie gesagt, hinge da am Tx des ESP nur der Eingang des Schmitt-Triggers.

Wenn ich den ESP boote und dann Tx an den Schmittt. hänge funktioniert 
alles.
Mit von haus aus angeschlossenem Tx kann ich aber nicht booten.
In den Eingang des Schmittt. fließen bei 3,3V ~320uA falls das relevant 
ist.

von Stefan F. (Gast)


Lesenswert?

> ~320uA falls das relevant ist.

Ich denke, das ist relevant. Die internen Pull-Up und Pull-Down 
Widerstände des ESP Chips sind recht hochohmig. Packe einfach einen 
externen 2,2k Ohm Pull-Up Widerstand dazu, dann sollte es klappen.

von Rene K. (xdraconix)


Lesenswert?

ESPnoob schrieb:
> Beschaltung:
> VCC/GND an LM1117 mit Puffer-C
> GPIO15 <-> GND
> EN <-> VCC
>
> GPIO0 ist NICHT auf VCC, da er dann GARNICHT bootet.

GPIO2... Was ist mit GPIO2???

Rene K. schrieb:
> Zum Betrieb:
> GPIO0  -> Pull-Up   (10k) an VCC
> GPIO2  -> Pull-Up   (10k) an VCC
> GPIO15 -> Pull-Down (10k) an GND



> GPIO0 ist NICHT auf VCC, da er dann GARNICHT bootet.

Und du bist dir sicher das er überhaupt arbeitet und sein Programm aus 
dem Flash zieht und nicht einfach dann bloß in den Serial Mode geht?!

von ESPnoob (Gast)


Lesenswert?

GPIO2 muss laut db high oder floating sein, hab auf floating vertraut 
was prinzipiell funktioniert.
Kann die Rx/Tx Beschaltung die Notwendigkeit der GPIO2-Beschaltung 
verändern?

Nein, da bin ich nicht sicher, muss ich überprüfen.


2k2 als pull-up an Tx meinst du?

von Rene K. (xdraconix)


Lesenswert?

Das ist der "Boot-Code" - wenn er, wie du sagst, bei GPIO0 auf VCC nicht 
anspringt. Dann geht er halt nicht in den normalen Modus - sprich dein 
Programm was du darauf geflasht hast läuft nicht. Und er geht in den 
Serial Mode.


1
                                  | GPIO 0 | GPIO 2 | GPIO 15
2
----------------------------------|--------|--------|---------
3
Flash Startup (Normal)            |   1    |   1    |   0
4
UART Download Mode (Programming)  |   0    |   1    |   0
5
SD-Card Boot                      |   0    |   0    |   1

von Stefan F. (Gast)


Lesenswert?

Nach den aktuellen Erkenntnissen sollten man die Tabelle ergänzen:
1
                                             (TxD)
2
                                  | GPIO 0 | GPIO 1 | GPIO 2 | GPIO 15
3
----------------------------------|--------|--------|--------|---------
4
Flash Startup (Normal)            |   1f   |   1f   |   1f   |   0
5
UART Download Mode (Programming)  |   0    |   1f   |   1f   |   0
6
SD-Card Boot                      |   0    |   1f   |   0    |   1

f bedeutet: "oder floating"

von Rene K. (xdraconix)


Lesenswert?

Stefan, so sehr ich deine Arbeit schätze und immer mal wieder bei dir 
stöbern gehe :-D Aber ich hab gerade mal, da ich hier nur mit ESP-01 
Modulen arbeite, eines "floaten" lassen. Es ging nicht - es tat sich 
rein garnichts. :-)

Es mag ja sein das es eventuell funktioniert. Aber auf einen floateten 
Pin als Zustandsgeber kann man sich einfach nicht verlassen - weiß man 
was man sich da einfängt?! Nein, lieber einen festen definierten Zustand 
herstellen. Bei ungenutzten µC Pins - okay - die lasse ich meistens in 
meinen Layouts (soweit nicht anders im DB angegeben ist) auch offen, 
aber ich würde nie einen Zustandspin, sei es eine I²C Adresse oder eben 
ein BootPin, offen lassen.

: Bearbeitet durch User
von ESPnoob (Gast)


Lesenswert?

Um das klarzustellen:
Mit der oben genannten Beschaltung bootet er esp-link IMMER und 
funktioniert auch normal.

Außer wenn Tx beschaltet ist.

von ESPnoob (Gast)


Lesenswert?

So, jetzt hab ich ungeschickterweise meinen 3V3 Regler geschrottet und 
kann ihn diese Woche nicht ersetzen.
Ich hoffe ich kann in einer Woche auch nauch auf eure Hilfe zählen.

Danke vorerst!

von DraconiX (Gast)


Lesenswert?

Was zum Geier machst du da bloß?! ? Wie kann man denn bitte einen 3V3 
LDO schrotten? Die haben doch zu 90% ne Overcurrent- und 
Shortcurcuit-Protection?! Also wie bekommt man sowas kaputt?

von Stefan F. (Gast)


Lesenswert?

> Aber auf einen floateten  Pin als Zustandsgeber
> kann man sich einfach nicht verlassen

Absolut richtig. Sobald an einem Pin auch nur 1cm Draht hängen, sollte 
man ihn nich tmehr floaten lassen. Der ESP8266 hat zwar intern Pull-Up 
Widerstände aber die sind arg hochohmig.

> Wie kann man denn bitte einen 3V3 LDO schrotten?

Auf Steckbrett passiert es ganz schnell, daß man ihn verpolt.

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.