Forum: Mikrocontroller und Digitale Elektronik ESP8266 kommunieziert nicht mit dem Flash


von Felix (Gast)


Lesenswert?

Hallo alle zusammen,

ich habe folgendes Problem:

Ich habe mir ein ESP8266 Board selber aufgebaut, es entspricht 
eigentlich komplett dem Layout des ESP-12 Modules. Da ich aber für meine 
Anwendung einen recht begrenzten Bauraum habe, habe ich dieses selber 
auf einer Platine aufgebaut. Nun startet der ESP auch und ich kann über 
die serielle Schnittstelle die Boot Message empfangen. Leider nur diese. 
Ich kann kein Programm in den Flashspeicher schreiben und wenn ich einen 
Flashspeicher anlöte, der schon mit einem Programm beschrieben ist, kann 
der ESP dieses nicht starten. Ich denke das ich irgendeinen sehr groben 
Fehler gemacht haben muss und der ESP einfach nicht mit dem 
Flashspeicher reden will.

Die Anbindung zwischen Flashspeicher und ESP ist ja bei den meisten 
Modulen die gleiche. Er wird fast immer über die SPI Schnittstelle die 
auch für die SD-Karte vorgesehen ist angebunden. Dafür sind die 
Leitungen SD_CMD, SD_CLK, SD_D0, SD_D1, SD_D2 und SD_D3 mit dem Flash 
verbunden. Genauso habe ich es auch gemacht. Aber egal ob ich den DOUT, 
DIO, QOUT oder QIO Modus verwende (alle werden vom FLashspeicher 
unterstützt mit bis zu 108Mhz) und auch wenn ich mit 20Mhz, 40Mhz oder 
auch 80Mhz Flashe, es gibt immer eine Fehlermeldung.
Das esptool.py sagt: "A fatal error occured: Timed out waiting for 
Packet content"
Das ESP8266 DOWNLOAD TOOL V3.6.4 sagt: "[ERROR]: ESP8266 Chip flash 
download error esp_write_flash"
Und die Arduino Umgebung sagt: "warning: espcomm_send_command: didn't 
receive command response
warning: espcomm_send_command(FLASH_DOWNLOAD_BEGIN) failed
Beim Hochladen des Sketches ist ein Fehler aufgetreten
error: espcomm_upload_mem failed"

Das hochladen der Stub funktioniert und ausgeführt wird diese auch, aber 
spätestens bei der Kommunikation mit dem Flash scheitert das ganze.
Bei der Stromversorgung habe ich schon jede mögliche Variante 
ausprobiert, zu guter letzt sogar mit zwei AA Batterien. Auch habe ich 
alle Datenleitungen zwischen ESP und Flashspeicher durchgeklingelt und 
auch alle möglichen Permutationen der Datenleitungen ausprobiert (ich 
habe nämlich festgestellt, das z.b. in meinem ESP-01 Modul SD_D0 nicht 
mit IO0 des Flash verbunden ist, sondern mit IO1 und SD_D1 mit IO0, 
gleiches gilt auch für SD_D2 und SD_D3, diese sind auch mit IO3 und IO2 
verbunden. Auch fehlte in meinem ESP-01 Modul der 200Ohm Widerstand, den 
habe ich auch schon testweise überbrückt, aber ohne Erfolg.). An 
Flashspeicher IC's habe ich auch mehrere ausprobiert, neue frisch 
gekaufte genauso wie welche die ich schon mit dem ESP-01 Modul geflashed 
habe, aber auch die Funktionieren nicht (wenn ich sie wieder zurück auf 
das ESP-01 Modul löte, dann funktionieren diese auch wieder).


Hatte vielleicht schon einmal jemand ein ähnliches Problem oder generell 
eine Idee wie ich weiter Vorgehen söllte?
Über ein paar Tips von euch würde ich mich sehr freuen.

Gruß Felix

von Perfektionist (Gast)


Lesenswert?

Zeig mal Schaltplan und Platinen-Layout (als Bild)

Da muss ja irgendwo der Wurm drinnen sein, wenn derselbe Flash-Chip auf 
anderen Boards funktioniert.

von Felix (Gast)


Angehängte Dateien:

Lesenswert?

Ja, da hast du vollkommen recht. Das komische ist nur, das ich alle 
Verbindungen schon Durchgeklingelt habe, also da kann eigentlich kein 
Fehler sein. Ich habe auch gerade mit dem Oszi nachgeschaut, es kommen 
auch schöne Rechteckimpulse auf allen Datenleitungen und auch auf der 
Clock-leitung an.
Da ich gerade unterwegs bin und nur ein kleines Taschen Oszi bei mir 
habe, kann ich leider nicht genauer die Daten analysieren, aber auf den 
ersten Blick scheint es alles zu funktionieren.

Ein Bild von dem Layout habe ich gerade nicht zur Hand, aber den 
Schaltplan sende ich gleich mit. Des weiteren habe ich auch schon mit 
feinem Kupfer Lackdraht die Anschlüsse für die Datenleitungen (also 
SD_D0, SD_D1, SD_D2 und SD_D3) untereinander Vertauscht, aber auch ohne 
Erfolg. Ich habe nämlich Festgestellt, das die Datenleitungen laut 
Schaltplan wie folgt angeschlossen werden müssen:

SD_CMD -> CS
SD_CLK -> CLK
SD_D0 -> IO1
SD_D1 -> IO0
SD_D2 -> IO3
SD_D3 -> IO2

Da mir das aber ein wenig komisch vorkam, habe ich auch mal folgende 
kombination ausprobier:

SD_CMD -> CS
SD_CLK -> CLK
SD_D0 -> IO0
SD_D1 -> IO1
SD_D2 -> IO2
SD_D3 -> IO3

Hilft leider auch nicht.

von Perfektionist (Gast)


Lesenswert?

Hmm...

ESP -> Flash

20 -> 1
21 -> 6
22 -> 2
23 -> 5
18 -> 7
19 -> 3

von Andreas B. (bitverdreher)


Lesenswert?

Perfektionist schrieb:
> Hmm...

Genau so.

Felix schrieb:
> Über ein paar Tips von euch würde ich mich sehr freuen.

Dein Flash hat vertauschte Datenleitungen.

von Stefan F. (Gast)


Lesenswert?

An GPIO15 (MTDO) gehört ein Pull-Down Widerstand.
An GPIO1 (TxD) gehört ein Pull-Up Widerstand.
An VCC+GND gehört zusätzlich ein 100µF (oder 220µF) Elko.

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.