Forum: Mikrocontroller und Digitale Elektronik ESP8266/ESP8285 - XPD und Reset, Programmieren


von wireless (Gast)


Lesenswert?

Damit der ESP sich aus dem Deep Deep Sleep aufwecken kann, müssen XPD 
und Reset extern verbunden werden. Zum Flashen muss diese Verbindung 
aber wieder geöffnet werden. Ich suche eine low cost Lösung, bei der die 
Verbindung default geschlossen ist, aber zum Flashen automatisch 
geöffnet werden kann.
Das Billigste wäre wohl die Verbindung der Pins über einen Widerstand, 
der beim Flashen "überstimmt" wird - weiss jemand, wie niederohming die 
Verbindung sein muss, um zuverlässig zu funktionieren?

von Achim M. (minifloat)


Lesenswert?

wireless schrieb:
> Ich suche eine low cost Lösung, bei der die
> Verbindung default geschlossen ist, aber zum Flashen automatisch
> geöffnet werden kann.

Ist GPIO16/XPD beim Flashen Hochohmig?
=> wahrscheinlich Nein, denn sonst würde es eine Schottkydiode tun.

Jumper?
=> zu umständlich

Wenn nicht, dann zwei Dioden und ein NPN oder ein Logiclevel-NMOS.
Ein CMOS-Analogschalter wäre Ideal. Die gibt es auch SMD als 
Einzelgatter.
GPIO0 kann beim Flashen ja dauerhaft GND gezogen werden.
Ungefähr sowas schwebt mir da vor:
1
  3.3v VCC o--*----*--------*-----+
2
              |    |        |     |
3
             10k  10k      10k   10k
4
              |    |        |     |
5
     GPIO0 o--*    |        |     |
6
              |    |        |     |
7
       RST o--)----)----*---)-----*
8
              |    |    |   |     |
9
              |    |    \|__|     |
10
              |    | Q1 V|  *     |
11
              |    |    |   |     |
12
GPIO16/XPD o--)----*----+   |     |
13
              |             |     |
14
             _|_           _|_    |
15
             _V_ D1        _V_ D2 |
16
              |             |     |
17
              *-------------+     |
18
              |                   |
19
              *                   *
20
              / S1                / S2
21
              * Flashen           * Reset
22
              |                   |
23
       GND o--*-------------------+

mfg mf

PS: jaja der NPN ist extra sch***e gezeichnet

von Joachim S. (oyo)


Lesenswert?

Keine Ahnung, ob das für Deine konkrete Schaltung eine Option darstellt, 
aber:
Für den zum Flashen nötigen Reset kann man m.W.n. zwischen nRESET und 
CH_PD wählen; statt direkt den nRESET-Pin zu steuern, könntest Du 
stattdessen den CH_PD-Pin steuern und Dir so jegliche zusätzliche 
Bauteile sparen.

von Stefan F. (Gast)


Lesenswert?

Wenn du den Timer-Ausgang mit dem Reset Eingang verbindest und dann noch 
per Taster den Reset Eingang auf Low ziehst, bekommst du genau genommen 
einen Kurzschluss.

Allerdings bewirkt der Reset, dass der Timerausgang hochohmig wird. Der 
Kurzschluss ist also nur von sehr kurzer Dauer.

Meine Erfahrung ist, dass der Chip davon keinen Schaden nimmt. 
Sicherheitshalber könnte man eine Diode dazwischen schalten, oder einen 
Widerstand.

Auf jeden Fall ist es nicht notwendig, die Verbindung ganz zu trennen, 
um Firmware hochzuladen.

von Klaus (Gast)


Lesenswert?

Joachim S. schrieb:
> Für den zum Flashen nötigen Reset kann man m.W.n. zwischen nRESET und
> CH_PD wählen; statt direkt den nRESET-Pin zu steuern, könntest Du
> stattdessen den CH_PD-Pin steuern und Dir so jegliche zusätzliche
> Bauteile sparen.

Ich benutze schon immer und nur CH_PD zum Flashen, war in der ersten 
Anleitung, die ich in die Hände bekam, so beschrieben.

MfG Klaus

von wireless (Gast)


Lesenswert?

Danke für die hilfreichen Antworten. Einfach CH_PD zu nutzen wäre 
attraktiv, gibt es dafür "belastbarere" Quellen, dass das sicher und 
immer funktioniert?

von Stefan F. (Gast)


Lesenswert?

> gibt es dafür "belastbarere" Quellen

Ja, meine Bestätigung HIER.

von Joachim S. (oyo)


Lesenswert?

Falls das für Dich belastbar genug ist: im Quellcode von "esptool.py", 
das mittlerweile von Esprissif persönlich maintained wird, findet sich 
z.B. bestätigt, dass das zum Resetten des ESPs verwendete RTS-Signal 
wahlweise mit nRESET oder CH_PD verbunden werden kann:
1
        # issue reset-to-bootloader:
2
        # RTS = either CH_PD/EN or nRESET (both active low = chip in reset
3
        # DTR = GPIO0 (active low = boot to flasher)
Und wie Klaus benutze auch ich CH_PD statt nRESET bei manchen 
ESP8266-Schaltungen zum Flashen, bislang ohne Probleme.

von wireless (Gast)


Lesenswert?

@stefanus: Nichts für ungut, aber eine offizielle Angabe und ein 
"funktioniert bei mir" ist noch was anderes ;)
@oyo: Sowas meinte ich, danke

Ich habe auch noch was gefunden. Das DB vom ESP8285 scheint das nicht zu 
erwähnen, aber im DB des ESP8266EX wird das auch beschrieben:
1
Pin7 CH_EN can also be used as a reset pin. ESP8266EX will power off when CH_EN pin
2
is held low and the input level is below 0.6V and stays for at least 200 μs.

Ich würde sagen, das Thema ist damit erledigt, danke allen!

von Stefan F. (Gast)


Lesenswert?

> Nichts für ungut, aber eine offizielle Angabe und ein
> "funktioniert bei mir" ist noch was anderes

Ganz recht. Den offiziellen Angaben des Chipherstellers kannst du 
weniger glauben, als meinen Angaben. Denn sie sind unvollständig, 
ungenau und oft auch einfach falsch.

Ich erinnere nur an die Stromaufnahme im Deep Sleep Modus, um nur einen 
Klopper zu nennen. (Erst waren es max. 10µA, dann max. 20µA und jetzt 
sind es "typisch" 20µA aber bei 2,5V). Vor zwei Jahren war der Chip noch 
"Ultra Low Power", jetzt nur noch "Energy Efficient".

Es ist nicht so dass der Chip schlechter wurde, sondern das Datenblatt 
wurde ehrlicher. Was die Händler jedoch nicht davon abhält, komplette 
Module immer noch mit "max 10µA" anzupreisen. Wie soll das gehen, wenn 
der Chip alleine schon mehr Strom aufnimmt?

> ESP8266EX will power off when CH_EN pinis held low

Das ist nur halb richtig. Wenn der Pin bereits beim Anlegen der 
Stromversorgung Low ist, zieht der Chip ca 25mA. Wenn man ihn jedoch 
NACH dem Booten auf Low legt, zieht der Chip nur noch ca 20µA.

Für das Flashen der Firmware spiel dieses Detail keine Rolle, aber für 
den Batteriebetrieb danach schon. Die richtigen Angaben findest du auf 
meiner Homepage.

Sorry wenn ich so hart klinge. Normalerweise poche ich immer darauf, die 
Datenblätter zu lesen und sich darauf zu verlassen. Aber beim ESP8266 
ist das leider genau die falsche Taktik.

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.