STM32F765 & SPI-Overrun

Gast #5779868
Lesenswert?

Hallo.
Ich verwende einen STM32F765VIH6 und empfange über SPI als Slave einen 
"Stream" von 15 x 16Bit mit einer Baudrate von ca. 3MHz. Diese 15 Words 
werden alle 230us wiederholt. Die Words hole ich per Interrupt ab. Das 
Abholen des Words im Interrupts benötigt ca. 300ns.

Leider gehen mir immer wieder mal einzelne Words verloren. Von 10Mio. 
Words gehen 10-15 Words verloren.

Wenn ich es richtig sehe, wird dann das OVR Flag gesetzt. Dies würde 
zwar Erklären, dass die Hardware den Buffer verwirft. Allerdings 
verstehe ich nicht warum OVR auftritt.

Der INT hat die höchste Priorität, hab die Baudrate von 5MHz bis auf 
2.5MHz runtergesetzt und die Wartezeit zwischen den Words so angepasst, 
dass die Words (fast) gleichmäßig innerhalb der 230us verteilt sind.
Hat alles nichts an der Häufigkeit des Fehlers geändert.

Die Signale (MOSI,SCK,NSS) sehen per Oszi auch korrekt aus. Wenigstens 
in den Augenblicken, in denen ich messe. Auf Grund der geringen 
Fehlerhäufigkeit kann ich natürlich nicht sagen, ob dies auch im 
Fehlerfall so ist.

Mir gehen gerade die Ideen aus, was es sein könnte.

Kann mir jemand einen Tipp geben?

Vielen Dank, Pepe.
Gast #5779922
Lesenswert?

Ich kenne die ST32 nicht, aber aus dem Bauch heraus:

überholen sich Interrupts ?

Könnte hinter einem OverRun das Problem stecken, daß
du eigentlich 2 davon hast.

Paßt die Anzahl der ggf auch impliziten Disable Irq
mit der Anzahl der Enable Irq überein.

Muß man zu Beginn einer IRQ Prozedur die Flags sichern ?

Kannst du genau ermitteln, wieviel Zeichen du verlierst
und wieviel OVR du bekommst ? Müßte exakt übereinstimmen.

Mario
#5780216
Lesenswert?

Pepe schrieb:
> Aber bei dieser Häufigkeit tue ich mich
> auch hart zum richtigen Augenblick was zu messen.

warum?

Setze einen GPIO auf High sobald Du das OVR-Flag siehst. Das Oszi dann 
mit diesem GPIO triggern. Den Triggerpunkt im Oszi ganz nach rechts 
setzen, dann siehst Du alles was vor dem Trigger auftritt.

> Die Words hole ich per Interrupt ab.

Was spricht gegen DMA? Dann bist Du von der IRQ-Geschwindigkeit und 
-Priorität unabhängig.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren