SPI Übertragungsfehler

Gast #1546339
Lesenswert?

Tag miteinander!

Ich habe leider ein paar Probleme mit Fehlern bei der SPI Übertragung.

Ich übertrage 17byte große Pakete per SPI von einem ATmega644p (Master) 
zu einem ST91x (ARM9). Das gesamte Paket wird mit Slave Select gerahmt. 
Damit das möglich wurde (bzgl. ARM), musste ich CPHA auf 1 setzen. Die 
uC sitzen auf kleinen Boards und sind über ein ca. 5cm langes 
Flachbandkabel miteinander verbunden.

Wenn ich nun mit SPI Clock von 625kHz übertrage, werden im Schnitt ca. 7 
bis 9% der Pakete mit fehlerhafter Checksum (8bit) übertragen.

Bei 312.5kHz sind es noch immer 1 bis 3%. Da kommt dann immer noch von 
Zeit zu Zeit ein fehlerhafter Wert mit zufällig korrekter Checksum 
durch.

Meine Fragen sind also:
-Sind das nicht viel zu viele Fehler für solche 
Übertragungsraten/-längen?
-Kann man anhand dieser Angaben schon grobe Schnitzer meinerseits 
erkennen?
-Was kann ich tun, um die Übertragungsqualität zu verbessern?

Gruß
#1546396
Lesenswert?

@  Rumkugel (Gast)

>Damit das möglich wurde (bzgl. ARM), musste ich CPHA auf 1 setzen. Die

Sicher?

>uC sitzen auf kleinen Boards und sind über ein ca. 5cm langes
>Flachbandkabel miteinander verbunden.

Klingt kurz, kann aber bei schlechter Masseführung Probleme machen. 
Siehe Wellenwiderstand.

>-Sind das nicht viel zu viele Fehler für solche
>Übertragungsraten/-längen?

ABSOLUT!!! Das solten Fehlerraten DEUTLICH unter 1:1.000.000 drin sein!

>-Kann man anhand dieser Angaben schon grobe Schnitzer meinerseits
>erkennen?

Siehe oben. Möglicherweise ein Masse oder Terminierungsproblem.

>-Was kann ich tun, um die Übertragungsqualität zu verbessern?

Siehe Artikel Wellenwiderstand.

MFG
Falk
Gast #1546470
Lesenswert?

Danke erstmal für die schnellen Antworten.

Ein Oszi habe ich in den nächsten Tagen leider nicht zur Hand.
Motoren sind in der Nähe, (ca. 15cm) laufen aber noch nicht...
Die beiden Boards sind maschinell gefertigt/bestückt und die 
Flachbandkabel werden über angelötete Stiftleisten verbunden.

@Falk Brunner:

>>Damit das möglich wurde (bzgl. ARM), musste ich CPHA auf 1 setzen. Die

>Sicher?

laut Datenblatt STR91xFA ARM9:
>There are two cases depending on the data/clock timing relationship
>(see Figure 69):
>● If CPHA=1 (data latched on 2nd clock edge):
> NSS must be held low during the entire transmission. This implies that
> in single slave applications the NSS pin can be tied to VSS.
>● If CPHA=0 (data latched on 1st clock edge):
> NSS must be held low during byte transmission and pulled high between
> each byte to allow the slave to write to the FIFO register.

habe auch mittlerweile alle Konfigurationen durchprobiert. Wenn CPHA 0 
ist und ich versuche ein ganzes Paket zu verschicken, emfpängt der ARM 
(Slave) nur das erste Byte, also habe ich bei beiden CPHA auf 1.
CPOL bleibt bei beiden auf 0.


>Möglicherweise ein Masse oder Terminierungsproblem.

Was den Wellenwiderstand angeht, so vermute ich das Problem eigentlich 
woanders, schließlich hängt die Fehlerrate ganz offensichtlich mit der 
Übertragungsfrequenz zusammen. (bei 156.25Hz haben noch ca. 1% der 
Pakete eine falsche Checksum)
Andererseits gibt es bisher keine Terminierung und auch keine 
Masseleitung zwischen MISO und MOSI (stattdessen 5V). Da kann ich 
allerdings auch wenig dran ändern.

Gruß
Gast #1546525
Lesenswert?

>Vielleicht ist aber auch der falsche SPI-Modus eingestellt (Phase und
>Polatity).

Ich habe mal versuchshalber CPOL an dem ARM (nur an dem ARM!) umgedreht 
und bemerke zu meinem großen Erstaunen keinen Unterschied.
Die Pakete werden noch immer erkannt (leider noch immer mit ca. 1% 
falscher Checksum, also da keine Veränderung)

Wie kann das denn jetzt sein?
Eigentlich dürfte der doch nun gar nichts mehr erkennen, dachte ich..

Gruß
Moderator (Firma: Titel) Persönliche Seite #1546744
Lesenswert?

> ABSOLUT!!! Da sollten Fehlerraten DEUTLICH unter 1:1.000.000 drin sein!
FULL ACK.
Ich hatte mal Probleme mit unseren Softies. Die sagten, da würden im 
EA-Abbild meines SPI falsche Bits übertragen. Daraufhin habe ich 
Prüfprotokolle eingebaut und habe bei Übertragungsraten von 10MBit/s und 
etlichen tausend laufender Geräte bisher keinen einzigen 
Übertragungsfehler.
Ich würde also sagen: Falk, häng da ruhig mal noch drei Nullen dran, und 
mach 1:1.000.000.000 draus...  ;-)

> Vielleicht ist aber auch der falsche SPI-Modus eingestellt
Das war dann übrigens auch der Grund, warum Übertragunsfehler augetreten 
sind: unsere Softies haben mein Datenblatt nicht richtig gelesen und im 
SPI-Master den falschen Modus konfiguriert...  :-o

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