Forum: Mikrocontroller und Digitale Elektronik Übertragungsproblem SPI


von ekon (Gast)


Lesenswert?

Hallo zusammen,
ich nehme gerade meine erste SPI Schnittstelle in Betrieb und habe 
Probleme. Als Hardware habe ich einen Arduino DUE (ATSAM3X8E) als SPI 
Master und ein SPI Device (Hilscher netx51).
Ich habe im ersten Schritt nur das Clock Signal und Chip Select 
verbunden! MISO und MOSI ist nicht am SPI Device angeschlossen. Mit 
meinem Oszi kann ich nun alle Signale am Oszi messen. Alles funktioniert 
super. Chip select, Clock und MOSI gehen richtig raus und auf der MISO 
Leitung stehen ebenfalls gültige und richtige Daten an. Sobald ich aber 
nun die MISO Leitung an meinen Arduino DUE anschliesse, kann ich keine 
Signale mehr auf MISO und MOSI messen. Chip Select und Clock sind nach 
wie vor ok.
Irgendwelche Ideen an was das liegen könnte?

von Felix Adam (Gast)


Lesenswert?

Wie hast du die denn verbunden? Zum netX51 finde ich nur 
Übersichtsblätter, aber keinerlei Datenblatt. Wäre es möglich, das mal 
hier zu verlinken und den Schaltplan zu posten?

Normalerweise wird MISO mit MISO und MOSI mit MOSI verbunden. Das hast 
du auch so gemacht?

von ekon (Gast)


Angehängte Dateien:

Lesenswert?

Ja, genauso habe ich es verbunden. Das habe ich auch schon öfters 
überprüft. Das passt auf jeden Fall. Ich habe Controllerpin A25 (MISO) 
mit Ader 10 verbunden und Controllerpin A26 (MOSI) mit Ader 9. Ich habe 
dazu noch folgende Ideen:
- Sowohl Arduino wie auch das SPI Device laufen mit 3.3V. Könnte dies 
Probleme machen, da auf dem SPI Stecker (am Arduino) 5V mit drauf sind, 
oder sollte SPI ebenfalls mit 3.3V problemlos funktionieren?
- Irgendwelche Potentialprobleme in der Schaltung? Allerdings relativ 
unwahrscheinlich, da ich das SPI Device über die 3.3V 
Spannungsversorgung aus dem Arduino Board versorge und ausser SPI sonst 
gar nichts mehr angeschlossen habe
- Eventuell MISO und MOSI Pin falsch konfiguriert. Ich bin aber der 
Meinung, daß ich im Programm die Pins auf Peripherie konfiguriert habe 
und nicht über PIO Controller.

von Felix Adam (Gast)


Lesenswert?

ekon schrieb:
> - Sowohl Arduino wie auch das SPI Device laufen mit 3.3V. Könnte dies
> Probleme machen, da auf dem SPI Stecker (am Arduino) 5V mit drauf sind,
> oder sollte SPI ebenfalls mit 3.3V problemlos funktionieren?

Solange 5V nirgends an die 3,3V-Logik angeschlossen wird, ist das kein 
Problem. Wenn beide Halbleiter mit 3,3V arbeiten, dann ist das so 
richtig.

> - Irgendwelche Potentialprobleme in der Schaltung? Allerdings relativ
> unwahrscheinlich, da ich das SPI Device über die 3.3V
> Spannungsversorgung aus dem Arduino Board versorge und ausser SPI sonst
> gar nichts mehr angeschlossen habe

Vielleicht. Komisch ist, dass beim Verbinden von MOSI und MISO (während 
CLK und GND bereits verbunden sind) plötzlich nichts mehr passiert. 
Könnte es sein, dass der Takt noch vorhanden ist, die Pegel der beiden 
Leitungen aber auf Masse bleiben, weil Nullen ausgegeben werden?
Hast du den richtigen SPI-Mode?


> - Eventuell MISO und MOSI Pin falsch konfiguriert. Ich bin aber der
> Meinung, daß ich im Programm die Pins auf Peripherie konfiguriert habe
> und nicht über PIO Controller.

Passt aber nicht dazu, dass was zu sehen ist, solange nur CLK und GND 
verbunden sind, oder?

von ekon (Gast)


Angehängte Dateien:

Lesenswert?

Also der Takt ist immer ok, auch wenn ich die MISO Leitung anschliesse 
(Chip select auch). ich glaube nicht daß ich nullen ausgebe und auch 
nicht das ich nullen zurückbekomme. Ich kann es definitiv am Oszi sehen, 
daß sobald ich den Pin verbinde die Leitung auf 0 bleibt. Es scheint so 
auf der MISO Leitung als wolle das SPI Device teilweise eine 1 setzen, 
aber dies nicht "schafft". Ich kann dies an einem leichten Zappeln am 
Anfang sehen wo normalerweise eine 1 zurückkommen sollte.
Laut Datenblatt soll das Device mit SPI Mode 3 betrieben werden. Dies 
mache ich auch (siehe Statusflags im Anhang). Ich habe aber gerade auch 
mal eben alle anderen SPI Modes durchgespielt. Es ändert sich nichts.

von Felix Adam (Gast)


Lesenswert?

Wurde der MISO-Pin am Controller vielleicht als Ausgang gesetzt (falls 
das überhaupt geht)?

Prüfung ginge mit einem Pullup-Widerstand gegen 3,3V. Ich vermute mal, 
3k..10k wären okay. Aber erstmal mit 10k anfangen.

von ekon (Gast)


Lesenswert?

Ok, den Test mach ich dann morgen. Einfach einen 10k Pullup Widerstand 
von MISO auf 3.3V. Wenn der Pin trotzdem auf 0V bleibt ist dieser wohl 
aus Ausgang definiert und auf False geschrieben. Richtig?

Generell müssten alle 4 Pins im PIO Status Register auf 0 sein, um hier 
sicherzustellen, daß Peripherie angewählt ist und nicht der PIO 
Controller den Pin schaltet.Zudem muss MISO im Output Status Register 
auf 0 sein und die anderen 3 Leitungen auf 1. Richtig?

von c-hater (Gast)


Lesenswert?

ekon schrieb:

> Irgendwelche Ideen an was das liegen könnte?

Signale genau falschrum verbunden? Das wäre das naheliegendste...

von ekon (Gast)


Lesenswert?

Ich bin mir sicher, daß die Belegung passt. Zudem hab ich die Kabel auch 
schon mal vertauscht um sicherzugehen, daß nicht was falsch in der einen 
oder anderen Doku drin steht. Das Problem bleibt aber... Leider.

von Felix Adam (Gast)


Lesenswert?

Ich fürchte, zu der Konfiguration des Controllers kann ich mangels 
Erfahrung leider nichts sagen.

Ich denke aber, dass der Pullup-Test zeigt, ob es das sein kann.

von ekon (Gast)


Lesenswert?

Hallo,
ich habe nun heute deinen Pullup-Test durchgeführt. Vielen Dank nochmals 
für den Tip. Es ist wirklich so, daß der MISO Pin immer auf Low bleibt!!

Das heißt jetzt für mich ich muss mein Programm durchforsten um den Pin 
auf Input zu schalten. Richtig?

von Felix Adam (Gast)


Lesenswert?

Ja, zum einen das. Schaue parallel aber auch mal nach Kurzschlüssen. 
Und, auch wenn schon öfters gemacht, kontrolliere besser nochmal, dass 
MOSI und MISO wirklich nicht vertauscht sind.

Obwohl der Test leicht ist, da beim Senden Daten aus MOSI kommen...

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.