Forum: Mikrocontroller und Digitale Elektronik ESP8266MOD als SPI Slave? Firmware?


von holm (Gast)


Lesenswert?

Servus,
wie hier schon mal erwähnt möchte ich gerne einen Z280 basierenden 
Computer mit einer Netzwerkschnittstelle versehen und ihn hauptsächlich 
als FTP Client mit dem LAN verbinden. DHCP und DNS gehören wohl dazu. 
Ich habe vorläufig vor auf einer ECB Universalplatine mit einem Wiznet 
W5500 Modul zu hantieren und habe mit zu dem Zweck ja schon ein SPI 
Master Interface für den Z280 gebastelt. Zwischenzeitlich habe ich auch 
einige irgendwann mal mit bestellte ESP8266 Module hervor gekramt..mit 
denen das ja per Wifi auch möglich sein sollte.
Probleme bereitet hier allerdings die asynchrone RS232 Verbindung mit 
115200 Baud bei der auch ein Interface mit Zilog ESCC 85230 bei 12Mhz 
CPU- und 6Mhz Bustakt ins schwitzen kommt und die Segel streicht (8 
Bytes RX FIFO), dabei habe ich das noch nicht mal mit Interrupts 
versucht, sondern nur im PIO Mode am Statusregister "lauschend". Es gibt 
zwar eine ESP8266 Firmware mit 9600 Baud (in Fakt hatte ich prompt diese 
auf dem Modul von AI-Thinker) aber dann kann man die Netzwerkerei ja 
auch gleich ganz sein lassen und ein Kermit verwenden..

Meine Frage ist deshalb ob es für den ESP32 auf dem ESP8266 evtl. eine 
Firmware gibt bei der das Teil als SPI Slave betrieben werden kann. 
Überläufe sollten dann nur auftreten wenn die Haupt-CPU die Daten aus 
dem ESP nicht abholt, nicht aber bei der Übertragung. Ist was derartiges 
bekannt?
Ich bin zar über eine Arduino Library gestolpert bei der im Context 
"Support für ESP8266" vorkommt, dabei handelt es sich aber um einen 
Wiznetmodul der zusätzlich an einem ESP8266 angeschlossen wird um eine 
Ethernet to Wifi Bridge für was auch immer zu bilden.

Ich möchte jetzt nicht die Espressiv IDE installieren und das selbst 
versuchen, das wären hier zu viele Baustellen auf einmal....

Gruß,
Holm

von Michael U. (amiga)


Lesenswert?

Hallo,

ich könnte jetzt nur vorschlagen: ArduinoIDE + ESP6266 Erweiterung 
installieren. Als Modul einen D1 mini nehmen, weil genug Pins 
rausgeführt sind und die ISB-bridge zum Programmieren gleich drauf ist.
Und dann eben durchkramen...
Die Beispiel in der IDE geben brauchbare Ansätze, FTP-Client habe ich 
für mich mal als primitiv-Version zusammengebastelt, Datenübertagung per 
SPI wäre kein wirkliches Problem.

PS: bist DER Holm?

Gruß aus Berlin
Michael

von holm (Gast)


Lesenswert?

Michael U. schrieb:
> PS: bist DER Holm?
...das fragt wohl jetzt Jeder? Du bist zumindest der Zweite...
Micha, ja, ich habe meinen Account hier gecancelt. Zu viel dummes Getue 
seitens der Mods. Die haben extra wegen mir "präventive Löschungen" 
erfunden.
"Lieber Gott laß es Hirn regnen, oder Steine, Hauptsache Du triffst 
Jemanden".

Ich habe im Prinzip so ein ESP Board herumliegen, allerdings Vendor 
AI-Thinker und auch deren Firmware drauf. Läßt sich das umflaschen?
Es steht auch ESP8266MOD auf dem Blech.. ist also ein -12 mit der selben 
Anzahl GPIOs. Also Sowas hier:

ebay.de/itm/322715945383

..mit einem einfach Breakout Bord unten drunter, allerdings in blau und 
nicht shwarz. Dann habe ich Sowas nochmal mit einem CH340 und USB Buchse 
drauf..in schwarz..steht sogar D1 Mini drauf :-)
IMHO sagt die Farbe was aus über die Flash Größe.
Des Weiteren habe ich noch mehrere ESP-01 in schwarz. Gerümpel ist also 
schon da.

Von der Arduino Software habe ich überhaupt keinen Plan, Ich habe bisher 
Arduino Sketches immer "entnazifiziert" benutzt, also den Arduino-Kram 
ausgebaut und plain Ansi C programmiert.

Angelesen habe ich mir das man das Ding entweder mit der Espressiv IDE, 
möglichst 1.54, der Arduino IDE, irgendwelchem Node-MCU Kram und LUA 
programmieren können soll. Ich habe mir "Kolbans book on ESP8266" 
besorgt und stochere gerade da drin herum....

Nach Deiner Aussage läuft das darauf hinaus das ich mich in die Dinger 
auch noch einarbeiten muß..wollte ich eigentlich vermeiden. Ich wollte 
bis ende März zum Robotrontechnik-Forumtreffen in Gariz was fertig 
haben, primär habe ich mir ja dazu die Wiznet Module ausgesucht, 
speziell den W5500 und dachte das man WLAN evtl. gleich mit erschlagen 
könnte.. Ich scheitere nur an der seriellen Schnittstelle mit 115200 
Baud.

Gruß,
Holm

von Michael U. (amiga)


Lesenswert?

Hallo,

so über alles: Du mußt Dich nicht in die ArduinoIDE einarbeiten, sie hat 
hier nur den Vorteil, daß Du wohl 90% Deiner Wünsche schon fertig als 
nutzbare Libraries dabei hat und damit kaum Arbeit hast. Die ArduinoIDE 
kann man portable installieren, allerdings kann ich hier nur für Windows 
sprechen, mit Linux habe ich mich nicht sonderlich befasst.
IDE als ZIP runterladen, Archir irgendwohin entpacken, NICHT die IDE 
starten.
Dann einen Ordner "portable" im IDE-Ordner anlegen und die IDE starten. 
Damit bleibt alles in diesem Ordner, den kann dann z.B. auch einfach auf 
einen anderen Rechner kopieren und dort starten, man hat dann alles 
dabei.

Für den ESP8266 dann von github noch die Boardmanager URL ind ie IDE 
kopieren und den ESP8266 Kram installieren:
https://github.com/esp8266/Arduino

Zum PS: viel ist in den Jahren nicht pasiert, der "Dolch" steht also 
immernoch im Keller...
Ich habe Dir mal eine Mail geschickt, ob Deine Mailadresse noch stimmt.

Gruß aus Berlin
Michael

von holm (Gast)


Lesenswert?

Michael U. schrieb:
> Hallo,
>
> so über alles: Du mußt Dich nicht in die ArduinoIDE einarbeiten, sie hat
> hier nur den Vorteil, daß Du wohl 90% Deiner Wünsche schon fertig als
> nutzbare Libraries dabei hat und damit kaum Arbeit hast. Die ArduinoIDE
> kann man portable installieren, allerdings kann ich hier nur für Windows
> sprechen, mit Linux habe ich mich nicht sonderlich befasst.
> IDE als ZIP runterladen, Archir irgendwohin entpacken, NICHT die IDE
> starten.
> Dann einen Ordner "portable" im IDE-Ordner anlegen und die IDE starten.
> Damit bleibt alles in diesem Ordner, den kann dann z.B. auch einfach auf
> einen anderen Rechner kopieren und dort starten, man hat dann alles
> dabei.

Ich werde das mal probieren, hier dümpelt noch eine VM mit XP herum.
Ich müßte mich nur mal damit beschäftigen das usb Device zur VM 
durchzureichen.

>
> Für den ESP8266 dann von github noch die Boardmanager URL ind ie IDE
> kopieren und den ESP8266 Kram installieren:
> https://github.com/esp8266/Arduino
>
> Zum PS: viel ist in den Jahren nicht pasiert, der "Dolch" steht also
> immernoch im Keller...
> Ich habe Dir mal eine Mail geschickt, ob Deine Mailadresse noch stimmt.
>
> Gruß aus Berlin
> Michael

Ich habe derzeit 3 Dolche hier (uhh, krieg ich jetzt Besuch von einem 
SEK?)
das ist also Alles Andere als eilig. Meine Schwägerin ist mittlerweile 
aus Berlin nach Brieselang gezogen, arbeitet aber immer noch da..sollte 
also auch später kein Problem sein :-)

Gruß,
Holm

von Stefan F. (Gast)


Lesenswert?

Die SPI Schnittstelle des ESP8266 hat hardwaremäßig keinen Slave Modus. 
Das ist der eigentliche Knackpunkt.

Du müsstest das per Bit-Banging in Software implementieren, dann wird 
aber die Basis-Firmware dazwischen funken, sobald sie sich mit der WLAN 
Schnittstelle beschäftigt.

Das kann nur so halbwegs funktionieren, während WLAN deaktiviert ist 
oder mit sehr niedriger Übertragungsrate (schätze < 1 kHz).

By the way: Die serielle Übertragungsrate kann man doch per AT-Befehl 
umkonfigurieren.

von holm (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Die SPI Schnittstelle des ESP8266 hat hardwaremäßig keinen Slave
> Modus.
> Das ist der eigentliche Knackpunkt.
>

Das ist eher als häßlich zu bezeichnen.

> Du müsstest das per Bit-Banging in Software implementieren, dann wird
> aber die Basis-Firmware dazwischen funken, sobald sie sich mit der WLAN
> Schnittstelle beschäftigt.
>
> Das kann nur so halbwegs funktionieren, während WLAN deaktiviert ist
> oder mit sehr niedriger Übertragungsrate (schätze < 1 kHz).
>
> By the way: Die serielle Übertragungsrate kann man doch per AT-Befehl
> umkonfigurieren.

Ja, das habe ich gestern auch gefunden (Du hast den Befehl leider bei 
Dir nicht aufgelistet). Es gibt die veraltete UART Version und die 
neuere BAUD Variante.
Damit kann ich die Dinger sicher benutzen, aber es wird langsamer als 
notwendig. Interessanter finde ich das dokumentierter Weise ein 
Handshaking zuschaltbar (gewesen?) sein soll.. da muß ich mal weiter 
lesen.

Gruß,
Holm

von Stefan F. (Gast)


Lesenswert?

holm schrieb:
> Du hast den Befehl leider bei Dir nicht aufgelistet

Weil der Befehl mehrfach geändert wurde.

von Michael U. (amiga)


Lesenswert?

Hallo,

naja, ich bin mir im Moment nicht sicher, ob eine andere Variante nicht 
in seinem Umfeld sinnvoller wäre, aber das müßte Holm klären.
Mein Liebling MCP23S17 kann zwar nur 10MHz SPI-Clock, aber selbst da 
wären schon rund 1MS/s in 8 oder 16 Bit parallel, auch bi-directiornal 
machbar.
Ein paar Bits für den Quittungskram sind am ESP8266 dann ja noch 
verfügbar.
Der zusätzliche Hardwareaufwnad wäre minimal. Der Z28ß ist mir selbst 
nei untergekommen, scheint aber 5V zu sein, damit wäre mit dem MCP23S17 
an 5V nur wenig Pegelwandlung auf der SPI-Seite zum ESP8266 nötig.
Naja, mal schauen, was Holm dazu denkt.

Ein Beispiel für einen SPI-Slave gibt es im ESP8266 Paket auch, ich habe 
da nicht viel über die Einschränkungen gefunden.

Gruß aus Berlin
Michael

von Stefan F. (Gast)


Angehängte Dateien:

Lesenswert?

Michael U. schrieb:
> Ein Beispiel für einen SPI-Slave gibt es im ESP8266 Paket auch, ich habe
> da nicht viel über die Einschränkungen gefunden.

Ich habe nochmal ins Datenblatt geschaut und muss zu meiner Schande 
gestehen, dass es genau anders herum ist, als ich schrieb. Dieses HSPI 
Interface kann nur den Slave Modus.

Dann wäre das ja doch verwendbar.

von holm (Gast)


Lesenswert?

Na guck an, dann wirds ja wieder interessant...

Aber mal Langsam. Ich habe auf einem ECB Board Sowohl einen selber 
gebastelten SPI-Master in einem CPLD (6,144Mhz Bustakt/2 als Clock Rate)
und auch einen Zilog ESCC Z85230, das ist ein ein wenig aufgepeppter 
Zilog SCC, der Nachfolger der SIO. Mit einem 7,3728Mhz Quarz ist 115200 
Baud das Ende der Fahnenstange ..im Asynchronmodus. Der TX hat wohl 4 
Bytes Buffer, der RX 8, mehr ist nicht. Das Ding hängt Momentan am 
ESP8266 (Empfänger über 680R mit einer ZD 3V6 gegen Masse).

Ich werde wie schon geschrieben im polled Mode nicht so recht Herr der 
Lage über die 115200..was mich eigentlich erstaunt, die Möglichkeit 
Hardware Flußkontrolle zu verwenden sollte das Problem aber eigentlich 
vertreiben, daher wäre die Verwendung der AT Firmware mit der ESCC 
eigentlich die billigste Variante...
Interrupt Betrieb der ESCC sollte an und für sich möglich sein, ich muß 
da noch ein Bisschen in den Details kramen. Die Z280 läuft in INT3 Mode, 
da gibts dann noch einen vectorisierten Mode (der unter CP/M wohl 
ausfällt, die Vectortabelle steht ab 0000 im RAM, im vektorisierten 
Modus würde das von 70..180hex gehen..unter CP/M ein Nono..allerdings 
hat das Ding ne MMU..
Wenn ich das richtig verstanden habe gibts einen festen Vector und die 
ESCC kann trotzdem einen liefern der dann auf dem Systemstack liegt wo 
man ihn zwecks Verzweigung abfragen kann..ist ne andere Baustelle, wird 
Euch nicht interessieren.

Ich habe vorhin
AT version:1.1.0.0(May 11 2016 18:09:56)
SDK version:1.5.4(baaeaebb)
compile time:Mar  9 2017 19:22:12

auf den ESP-12 und 2 ESP-01 die gerade aus der Tüte fielen geflasht, Ok
(Ich wußte gar nicht das ich einen ganzen Haufen von dem Zeug da 
habe..ich werde alt).
Momentan mache ich mir aber gerade einen Häßlichen dabei das passende 
AT-Command Set für die Firmware zu finden.(Stefan Du sagst es, mehrere 
geänderte Verionen die nciht unbedingt stimmen) Auf jeden Fall begreift 
die AT+UART=115200,8,1,0,0 ..die Letzte Ziffer als 3 schaltet wohl 
RTS/CTS ein,
..aber auf welchen Pins fällt das raus und was soll der Kuddelmuddel mit 
Reset des ESP durch RTS? Wie also mach ich da ne Flußkontrolle wenn RTS 
das Ding zurücksetzt?

Gruß,
Holm

von Stefan F. (Gast)


Lesenswert?

holm schrieb:
> aber auf welchen Pins fällt das raus und was soll der Kuddelmuddel mit
> Reset des ESP durch RTS

keine Ahnung.

von Michael U. (amiga)


Lesenswert?

Hallo,

die DTR/RTS-Geschichte greift nur, um automatisch aus dem ESPFlasher 
bzw. der ArduinoIDE in den Flashmode zu kommen.
Sonst muß eben ein Taster für Reset und GPIO0 angebaut werden und zum 
Flashen passend gedrückt werden.

Die Standard-Pins für das HardwareHandshake vom UART0 sind:

GPIO12  I/O/T  U0DTR
GPIO13  I/O/T  U0CTS
GPIO14  I/O/T  U0DSR
GPIO15  I/O/T  U0RTS

Geht also sowieso nur ein -12, weil die beim -01 garnicht zugänglich 
sind.
Ob die AT-Firmware das überhaupt unterstützt, weiß ich aber nicht, ich 
habe die nie benutzt.

Gruß aus Berlin
Michael

von holm (Gast)


Angehängte Dateien:

Lesenswert?

Dokumentiert ist die Funktionalität, ich werde mal damit spielen und nur 
CTS einschalten. Dazu muß ich mich aber durch das Interruptgewusel auf 
der Z280 wühlen, die ESCC kann genauso wie die SIO nicht auftomatisch 
RTS im Asynchronmodus abschalten (in den Sync Modi geht das!) sondern 
braucht die CPU dazu. Die ESCC kann aber bei halb vollem RX-Fifo bereits 
mit einem INT winken..

Gruß,
Holm

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.