PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SPI: SCK auf MISO sichtbar



Jaecko
09.01.2012, 15:36
Moin.

Wo fängt man am Besten das Suchen an, wenn man per Oszi auf MISO auch SCK sieht?

Hardwareaufbau:ATMega2560; daran per SPI:

MCP2515 (CAN), fest verdrahtet (SMD onboard)
Wiz812 (LAN), über kurze Kabelverbindung
SD-Card (Über Pegelwandler von Display3000, ebenso mit kurzer Kabelverbindung). Die Version ist die aktuell erhältliche mit 3x 2x6 Pinheader.


Problem: CAN und LAN alleine funktionieren. Hängt man den Pegelwandler der SD-Karte hin, geht nichts mehr: Die Karte selbst kann nicht initialisiert werden, die LAN-Verbindung geht auch nicht mehr (d.h. Anfragen vom Browser enden mit "Keine Antwort").
Die erste Vermutung eines Softwarefehlers (in einem anderen Thread) hat sich nicht bestätigt; da funktioniert alles.
Auch die korrekte Beschaltung der verschiedenen CS klappt; es wird nur die CS-Leitung runtergezogen, deren Teilnehmer angesprochen wird.

Das Wiz812 läuft mit 3V, Eingänge (SCK, MOSI, CS) sind 5V-kompatibel, MISO wird über ne einfache Schaltung von 3,3V auf 5V gelegt (mit einem FET BSS138, wie man ihn auch für I2C-Pegelwandler verwendet). Klappt soweit auch. (Ok, ganz 5V kriegt man nicht, aber zumindest mehr als die mindestens nötigen 0,7Vcc = 3,5V für sichere High-Erkennung)

Schaut man sich mal SCK (gelb) und MISO (cyan) im Oszi an, schaut das ja eigentlich ganz zufriedenstellend aus:

http://cihome.de/forendaten/rn/sd_off.gif

Das ist eine zyklische Abfrage des Status des Wiz812.

Schaltet man jetzt von dem SD-Modul die Enable-Leitung auf High, d.h. die Pins sind nicht mehr Tristate, schaut die ganze Sache schon anders aus:

http://cihome.de/forendaten/rn/sd_on.gif

Steckt man jetzt noch die Karte rein:

http://cihome.de/forendaten/rn/sd_on_card.gif

Klar, dass eine Kommunikation per SPI damit kaum noch möglich ist.

Kann jemand aus diesen Oszibildern was rauslesen?

mfG

021aet04
09.01.2012, 16:42
Wie sieht die Entstörung aus? Hast du irgendwo Kondensatoren o.Ä.?

MfG Hannes

Jaecko
09.01.2012, 16:49
Kondensatoren gibts an jedem Verbraucher und Vcc-GND-Paar (die klassischen 100n Kerkos); der SD-Slot hat auf der Platine zusätzlich noch zwischen 5V-GND sowie 3,3V-GND (Onboard-Spannungsregler) nen 4,7µ Kerko.

EarlGrey
09.01.2012, 17:50
Laufen vielleicht die MISO und das SCK -Leitungen nebeneinander? Das Problem hatte ich auch und das ließ sich mit einer Masseleitung dazwischen beheben.

Jaecko
09.01.2012, 18:20
MISO, MOSI, SCK laufen direkt nebeneinander; ist bei SPI ja auch bei den Controllern so "üblich".
Habs versuchsweise aber mal versucht, die Kabel räumlich getrennt hinzuführen bzw. geschirmte zu verwenden. Ändert nichts.

Allerdings hab ich wieder was neues rausgefunden: Wenn ich nur eine der 3 Leitungen MOSI, MISO, SCK vom SD-Slot an den SPI häng, dann bleibt das Signal sauber. MOSI und SCK miteinander gehen auch. Sobald aber MISO und eine der beiden anderen mit dranhängen => Chaos.


Keine verbunden: sauber
Nur MOSI: sauber
Nur MISO: sauber
Nur SCK: sauber
MOSI + MISO: Müll
MOSI + SCK: sauber
MISO + SCK: Müll
MOSI + MISO + SCK: Müll

Macht das Sinn?

PICture
09.01.2012, 18:59
Hallo!


Macht das Sinn?

Natürlich, (bin nur AVR-Anfänger) ! :)

So weit ich bisher weiss, ist MISO ein Augang und MOSI ein Eigang. Es könnte sein, dass durch unbekannnte Phasenverschiebung sich ein Oszillator bildet.

Es sollte helfen am besten MOSI mit nur auf einem Ende mit GND verbundenen Schirm Kabel stromlos abzuschirmen (einfach probieren). ;)

lorcan
10.01.2012, 08:12
Kannst du mehr zum Pegelwandler sagen? Bzw. den Typ nenen? Ich denke das da der Fehler liegt, wenn ansonsten alles funktioniert.

Jaecko
10.01.2012, 15:38
Moin.

Auf die Idee mit dem Oszillator bin ich garnicht gekommen. Aber könnte gut sein, v.a. weils ja passt, dass MOSI + SCK von der gleichen "Klasse" sind (Aus Sicht des SD-Slot gesehen Eingänge), MISO wäre dann ein Ausgang.
Der Pegelwandler-IC ist ein MAX3392, wenn ich das richtig seh.

Mit Abschirmen hab ich jetzt einiges versucht, aber leider brachte da kaum was Erfolg. Vergleichbar mit dem Fall eines Eies; Obs aus 2,0m oder 1,9m fällt, am Ende hat man trotzdem Matsch.

Es gibt aber wieder was neues vom Messen:
Ich hab die SPI-Frequenz mal runtergeschraubt aufs Minimum.
Jetzt sieht man, dass sich da nicht nur einfach SCK auf MISO durchschlägt. Sobald SCK high ist, ist auf MISO ein Störsignal mit grob 20-21 MHz drauf.
Das war vorher durch die hohe SPI-Frequenz nicht sichtbar und hat eben ausgesehen, wie SCK-Pulse; wie mans auch aufm 3. Bild im 1. Beitrag sieht.

PICture
10.01.2012, 16:05
Störungsuche ist immer das Schwerigste. Man sollte die Störungsquelle lokaliesieren versuchen, z.B. durch Abschirmung der gestörter Schaltung. Ich sehe beispielweise auf meinen aktiven Tastköpfen eine Trägerfrequenz (60 ... 70 MHz) eines für mich unsichtbaren tschechischen FM Radiosenders. :p

Am einfachsten könnte man versuchen alle HF Störungen mit mehreren Kerkos um 100 pF kurzschliessen (am besten SMD). ;)

Jaecko
10.01.2012, 19:55
So, zuerst mal eine gute Nachricht: Fehlerquelle gefunden (hoff ich zumindest), Ursache weiterhin unklar (s.u.)

Das mit den Kerkos hab ich kurz vor dem Post auch schon versucht; allerdings mit 47pF, hat aber am Erscheinungsbild nicht wirklich was geändert. Ausgelötet hab ich die jetzt nicht mehr; schadet sicher nicht.

Störungssuche kann auch mal "einfach" sein, wenns Funktionale/Softwarefehler sind. Am ekelhaftesten sind EMV/Schwingungsdinge, idealerweise noch temperaturabhängig...


Jetzt zur Fehlerquelle:
Das SD-Modul besitzt ja einen eigenen Spannungsregler (TS2951) 5V => 3,3V. Ich hab jetzt rein versuchsweise mal die 5V abgetrennt und 3,3V von "aussen" hingehängt (über LM317), die ich sowieso auch fürs Wiz812 hab. Und siehe da: perfekte Signalform. LAN geht jetzt auch mit steckender und aktiver Karte (nur beim Init der Karte hackt noch was; beim Setzen der Block Length = 512 kommt keine Antwort von der Karte...)

Das lässt ja in mir nun die Vermutung kommen, dass der Spannungsregler nen Hau hat, und das obwohl mit dem Board-Eigenen Spannungsregler die 3,3V auch nicht anders aussehen als die externen. Eine Temperaturabhängigkeit ist auch nicht zu erkennen; Also alle ICs mit Kältespray geduscht erzeugt auch nichts auffälliges.

PICture
10.01.2012, 20:08
Die Suche einer Ursache bei bekanntem Problem ist für mich schon reine Zeitverlust. Sogar neue Sachen (z.B. IC's) könnten Fehler enthalten (siehe Murphygesetze). ;)