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?
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
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.
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.
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
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?
> gibt es dafür "belastbarere" Quellen
Ja, meine Bestätigung HIER.
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.
@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!
> 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.