Forum: Mikrocontroller und Digitale Elektronik H7 beachtet NSS nicht korrekt im slave?


von Max F. (fpgaaa)


Angehängte Dateien:

Lesenswert?

Ich beobachte gerade etwas merkwürdiges:

Meine SPI (MASTER FPGA, SLAVE STM32) Verbindung inkl. NSS, läuft an sich 
hervorragend.
Wenn ich nun das FPGA im Betrieb rekonfiguriere, fängt sich diese 
Verbindung nicht mehr ein und es besteht ein entsprechender bit offset 
(Synchronisationsfehler wie man es ohne NSS erwarten würde).

Sysclk im FPGA ist 100MHz, timings siehe Anhang. (bitte nur den plot mit 
MISO beachten)

Wieso synchronisiert der STM nicht auf das NSS Signal?

: Bearbeitet durch User
von Max F. (fpgaaa)


Lesenswert?

Noch niemand den STM32H7 im SPI slave betrieben?

von J. S. (jojos)


Lesenswert?

Da gibt es min zwei ausführliche Appnotes, das ist beim H7 sehr 
kompliziert. Habe bisher nur den SPI Master benutzt.

von Max F. (fpgaaa)


Lesenswert?

J. S. schrieb:
> zwei ausführliche Appnotes

Ich kenne aktuell nur das AN5543 (Enhanced methods to handle SPI 
communication on STM32 devices): Bezüglich NSS:
SPI is a synchronous interface and it demands proper synchronization 
between the nodes to ensure a correct
data handling. The only synchronization signals featured by SPI are 
NSS/SS, hence the user must be vigilant of
any desynchronization symptoms.

Damit bin ich zu 100% einverstanden, deshalb nutze ich auch NSS :P.

Hast du mir bitte den link zum entsprechend anderen Appnote?

von J. S. (jojos)


Lesenswert?


von Malte _. (malte) Benutzerseite


Lesenswert?

Als Workaround eventuell NSS als GPIO konfigurieren und dann per Polling 
oder Interrupt den SPI resetten und neu initialisieren? Kostet natürlich 
etwas Rechenzeit.
Ansonsten ist dein Anwendungsfall vermutlich eher eine Nische mit 
entsprechend wenig Leuten die dir helfen können.

von Max F. (fpgaaa)


Lesenswert?

Malte _. schrieb:
> Als Workaround eventuell NSS als GPIO konfigurieren und dann per Polling
> oder Interrupt den SPI resetten und neu initialisieren? Kostet natürlich
> etwas Rechenzeit.
> Ansonsten ist dein Anwendungsfall vermutlich eher eine Nische mit
> entsprechend wenig Leuten die dir helfen können.

Die Busauslastung ist relativ hoch, müsste dafür die SCK frequenz 
relativ stark erhöhen (kommt aber an die limite des STM welcher max ca. 
30 MHz im slave bidirectional), damit NSS high time genügend lang würde 
um die Daten per ISR rauszuholen und den SPI zu reseten. Hätte auch eine 
gewaltige CPU Last zur Folge. Dem DMA Kontroller scheint die aktuelle 
Zeit für den transfer zu genügen (evtl. auch nur dank den FIFOs im SPI, 
aber es läuft).
Der Link FPGA-> STM funktioniert scheint nach ersten Erkenntnissen (mit 
Einbezug des NSS) korrekt. Die Antwort MISO des STMs ignoriert NSS.

Alternativ als workaround wäre ein Master/Slave Tausch möglich. Ist aber 
eine discouraged Lösung.

: Bearbeitet durch User
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.