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?
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?
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.
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?
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.
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.
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?
ekon schrieb: > Irgendwelche Ideen an was das liegen könnte? Signale genau falschrum verbunden? Das wäre das naheliegendste...
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.
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.
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.