Forum: Mikrocontroller und Digitale Elektronik Spikes auf SPI


von Geri (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen

Bei meiner SPI-Verbindung mit einem Sensor treten auf der CS-Leitung 
Spikes auf, wenn der Sensor angeschlossen ist.
Soviel ich sehe, passieren diese bei fallender Flanke der Taktleitung. 
SCLK und CS liegen auf dem Verbindungskabel nicht nebeneinander. Anbei 
ein Screenshot wie es an der SPI aussieht.

Was könnte der Grund sein? Momentan sind die Leitungen ohne weitere 
Hardware miteinander verbunden. CS könnte ich auch mit einem Pullup 
ausführen. Ich habe mit zwei unterschiedlichen Mikrocontroller-Boards 
getestet und festgestellt, dass das Problem bei einem Board nicht 
auftritt.
Wenn ich andererseits ohne den Sensor teste, dann sind keine Störungen 
auf der SPI vorhanden.


Beste Grüße

Geri

von Ralph (Gast)


Lesenswert?

Sieht doch soweit ganz gut aus.

Der CS hat den Peak jeweils nach 16 Bit.

Dieser Peak ist dann notwendig wenn der Slave für jedes Byte/Wort einen 
Wechsel des CS benötigt.

Es gibt auch Slaves die auf diesen Peak während einer laufenden 
Überragung allergisch reagieren.

Zu finden ist das in der SPI Implementierung / Konfiguration.

von Geri (Gast)


Lesenswert?

Hallo Ralph

Der Peak nach 16 bit ist OK. Beim letzten Word sind aber mehr Peaks


Beste Grüsse

Geri

von (prx) A. K. (prx)


Lesenswert?

Meist wird CS durch Software gesteuert. Und wenn die Software Peaks 
produziert, dann sieht man Peaks im Analyzer. Der Rest ist 
Kaffeesatzlesen, mangels jedweder zielführender Information.

von Geri (Gast)


Lesenswert?

Hallo zusammen

- CS wird durch meinen Setzen einer Portleitung durch mein Programm 
erzeugt

- Das Programm schreibt ohne Unterbrechung durch ein anderes Programm 4 
Words nacheinander und wartet dann wieder.

- Controller: C167

- Aufgefallen ist mir noch, dass die Spikes immer beim Schreiben des 
zweiten und/oder vierten Words auftreten. Im Beispiel oben, war es z.B: 
nur beim Vierten.

- Ich meine, die Spike erscheinen immer an der gleichen Stelle, jedoch 
nicht immer.

- Das Problem ist nur dann, wenn der Sensor angeschlossen ist, tritt bei 
einem anderen Mikrocontroller-Board jedoch nicht auf.

Nehmen wir einmal an, man kann die Ursache(n) nicht finden, kann man 
durch schaltungstechnische Massnahmen die Situation evtl. noch etwas 
verbessern?

Welche Informationen sind für

Beste Grüsse

Geri

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

A. K. schrieb:
> Der Rest ist
> Kaffeesatzlesen, mangels jedweder zielführender Information.

Dazu gehört z.B. auch eine Beschreibung der Entkoppelmassnahmen am 
steuernden MC, bzw. ein Schaltplan. Auch wäre eine Angabe der 
Kabellängen durchaus hilfreich.

von ♪Geist (Gast)


Lesenswert?

Die Spikes kommen von MTSR und MRST, würde ich sagen (Übersprechen). 
Lass mal Schaltplan/Layout sehen, da kann man es besser beurteilen. Bzw, 
wenn du einen STM32 im Einsatz hast probiere mal die Flankensteilheit 
auf 2MHz runter zu drehen. Hast du an MISO/MOSI externe Pull-ups?

von Geri (Gast)


Lesenswert?

Hallo Matthias und ♪Geist

Layoutdaten habe ich leider keine. Es handelt sich um das Eval-Board 
MCBXC167 von Keil. Die SPI-Leitung ist direkt auf eine Stiftleiste 
geführt.

Die Kabellänge zwischen Sensor und Board beträgt 75 mm. Kürzer geht 
nicht.
Die Verbindung erfolgt über Flachbandkabel wobei die Taktleitung neben 
der MTSR liegt.

Pullups sind keine vorhanden

Wie liesse sich evtl. entkoppeln.

Was für Ursachen könnten es prinzipiell sein?

1.) Übersprechen am Flachbandkabel
2.) Übersprechen an den Leiterbahnen
3.) Leitungsströme kurzzeitig zu hoch
4.) anderes schnelles Signal ungünstig zu einer SPI-IO-Leitung on Board
5.) Hardwarezugriff (z.B. Zugriff auf das externe RAM)
6.) externe Störungquellen
7.) SPI-Speed zu hoch für das vorhandene Design
...

Nach meinen Beobachtungen besteht eine gewisse Systematik bei den 
Fehlern. Wie schon oben geschrieben, beim ersten und dritte Word konnte 
ich den Fehler nicht beobachten.

Vielleicht sollte ich einfach mal 8 Words schreiben und dann schauen was 
passiert...

Beste Grüße und vielen Dank für die Hilfe!

Geri
Was könnte man evtl. machen?

von Falk B. (falk)


Lesenswert?

Mal richtig messen (tm). Mit einem Ozilloskop, nicht Logicanalyzer. Dann 
sieht man, wie der vermeintliche Störpuls aussieht.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Falk Brunner schrieb:
> Mal richtig messen (tm). Mit einem Ozilloskop, nicht Logicanalyzer.
Und dann auch mal die Masse an verschiedenen Punkten messen (Ja richtig: 
Masse gegen Masse).
Das könnte hier auch ein hüsches Ground-Bouncing sein...

@  Geri
Hast du mal ein Bild vom Schaltungs- und Messaufbau 
(Masseklemme+Messpins)?

von Geri (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen

@Falk:):)
>Mal richtig messen (tm). Mit einem Ozilloskop, nicht Logicanalyzer. Dann
>sieht man, wie der vermeintliche Störpuls aussieht.

Habe mit dem Oszilloskop gemessen. Dort konte ich nur Peaks mit ca. 1.5 
V detektieren. Die Schaltschwelle des Logic Analyzers habe ich auf 2.5 V 
gestellt. Vielleicht zeigt der ja mehr an als tatsächlich der Fall

Das Taktsignal sieht meiner Meinung nach i.O. aus. "schöne" Flanke, 
geringes Überschwingen.

Wie du vielleicht hinweisen wolltest... Das SPI-Signal sieht eigentlich 
i.O. (fast schon top) aus.


@Lothar:
Die Masse sieht i.O. aus. Auch die 5V Versorgung. Anbei ein Bild des 
Messaufbaus.

Ich habe nun noch einen 100 ohm Serienwiderstand mit einem 470 pf 
Kondensator in die Taktleitung geschaltet. Die Peaks sind im Logic 
Analyzer nicht mehr zu sehen.
Die Flanken sind runder. Werde nun mal die SPI-Geschwindigkeit deutlich 
drosseln und testen.


Im SPI-Empfangsregister steht aber trotzdem der falsche Wert. Bei 
gleichem Controller auf einem anderen Board und gleicher Initialisierung 
funktioniert die Verbindung einwandfrei.


Beste Grüsse und vielen Dank nochmals

Geri

von Falk B. (falk)


Lesenswert?

@Geri (Gast)

>Habe mit dem Oszilloskop gemessen. Dort konte ich nur Peaks mit ca. 1.5
>V detektieren.

Ganz schön viel.

>Das Taktsignal sieht meiner Meinung nach i.O. aus. "schöne" Flanke,
>geringes Überschwingen.

Screenshot?

>Die Masse sieht i.O. aus. Auch die 5V Versorgung. Anbei ein Bild des
>Messaufbaus.

Nicht perfekt aber OK. Deine Namen MTSR sind ungewöhnlich, ich tippe mal 
auf master transmit sensor read? Bei den anderen Leuten heisst das MOSI, 
Master out, slave in. Egal.

>Ich habe nun noch einen 100 ohm Serienwiderstand mit einem 470 pf
>Kondensator in die Taktleitung geschaltet. Die Peaks sind im Logic
>Analyzer nicht mehr zu sehen.

Naja, das ist ein Würg Around. Der Takt ist es aber wahrscheinlich 
nicht, denn ann müsste bei jeder Taktflanke was passieren.

>Die Flanken sind runder.

Ja.

> Werde nun mal die SPI-Geschwindigkeit deutlich
> drosseln und testen.

Mach das, bringt aber nix. Denn die Anstiegszeiten sind die gleichen. 
Und die machen das Problem.

Möglicherweise koppelt auf deinem Board was über und nicht im Kabel. 
Masseverbindung ist an beiden Steckern OK?

>Im SPI-Empfangsregister steht aber trotzdem der falsche Wert. Bei
>gleichem Controller auf einem anderen Board und gleicher Initialisierung
>funktioniert die Verbindung einwandfrei.

Klingt nach Lötfehler oder ähnlichem. Kabel schlecht gecrimpt?

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.