Ich versuche gerade, eine Verbindung zwischen einem STM32 als SPI Master und einem ESP8266 als SPI Slave herzustellen. Für den ESP verwende ich die Arduino SPISlave-Library, die leider vollkommen undokumentiert ist. Im Code habe ich die Größe der Datenwörter von 32 Bit auf 16 Bit reduziert, da der STM32 nur mit 16 Bit umgehen kann. Mit dieser Änderung kann ich Daten senden, allerdings kommt beim ESP etwas völlig anderes an. Auf der STM32-Seite gibt es die Parameter CPOL, CPHA, NSS Pulse und MSB/LSB, aber keine Kombination scheint zu funktionieren. Weiß jemand, was die SPISlave-Library erwartet? Da ich mich weder mit Arduino noch mit dem ESP so richtig auskenne, verstehe ich den Library-Code auch nicht wirklich. Eigentlich würde ich auch lieber das Hardware-SPI über das Espressif SDK verwenden, aber in der Beschreibung habe ich keine HSPI-Funktionen gefunden.
Gast
#5980658
Hast du dir den Beispiel-Code angesehen? https://github.com/esp8266/Arduino/tree/master/libraries/SPISlave/examples Zu deinem Problem schreibt jemand "Unfortunately the "Examples->SPISlave->SPISlave_Test" did not work for me. The Slave could read the master but its reply seems corrupted. Luckily I found a working version in the ESP8266 Community Forum" https://cmheong.blogspot.com/2018/03/spi-master-slave-programs-with-esp8266.html Vielleicht kann der Typ Dir helfen.
Stefanus F. schrieb: > Hast du dir den Beispiel-Code angesehen? Ja, habe ich, aber der hilft nur beschränkt, da ich ja die HAL-Funktion des STM32 verwende. > Vielleicht kann der Typ Dir helfen. So wie ich das verstehe, war bei ihm nur ein Zeichen korrupt. Bei mir sind aber alle Zeichen betroffen.
Peter M. schrieb: > kann ich Daten senden, allerdings kommt beim ESP etwas völlig anderes > an. Und was ist tatsächlich auf dem Bus los? Hast du das, was da überhaupt übertragen wird, mal mit einem Speicheroszi oder Logikanalyzer kontrolliert? Eine serielle Schnitte ohne solche Messgeräte in Betrieb zu nehmen ist wie "Autofahren nach Gehör".
Lothar M. schrieb: > Und was ist tatsächlich auf dem Bus los? Guter Punkt, und sehr überraschend. Wie man sieht, passiert auf CLK rein gar nichts, was mich dann doch am Master zweifeln läßt. Hier dessen Initialisierung:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
Und dann ist der Aufruf einfach
1 | |
2 | |
3 | |
Wieso wird kein Takt erzeugt? Wartet der Master auf irgendein Signal vom Slave?
Hier der Mitschnitt vom Logik Analyzer.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.

