Guten Tag, ich möchte über die SPI-Schnittstelle meines Mikroconrollers Daten senden. Dazu habe ich eine Funktion namens spi_Write(). Das Problem ist, dass das übergebene Byte nicht gesendet wird. Ich schaue mit einem Oscilloskop die Leitungen MOSI und MISO an, aber das passiert garnichts. Nur Rauschen Die spi-Schnittstelle habe ich konfiguriert auf 650kHz. Das spi_Write(0b10011001) führe ich in einer Endlosschleife aus. Laut Datenblatt wird CS automatisch auf low gezogen bevor die Funktion spi_Write() ausgeführt wird. Hat Jemand eine Idee woran das liegen könnte?
Kaffeesatzleserei: du hast SPI nicht aktiviert. Erklär doch mal etwas mehr: welcher C, wie sieht dein Programm aus usw. usf., so wird das hier nix mit Hilfe
Ich habe mal SPI.transfer() gemacht. Das hat funktioniert. Ach ja, was machen die Clock und Slave-Select Leitungen? Auch nur Rauschen? Vielleicht sind die gar nicht angeschlossen, denn die Leitungen sollten ja einen definierten Pegel haben.
Ich benutze einen Picasso 4DGL Display mit integrierten Controller. Hier die Seite: http://www.4dsystems.com.au/prod.php?id=224 Interne Funktionen: http://de.scribd.com/doc/131001806/Datenblatt-PICASO-4DGL-Internal-Functions-REV6-2 Programmiert wird der Controller in C über USB Port. In dem Programm habe ich eine main-Funktion. In dieser wird die SPI-Schnittstelle konfiguriert: spi_Init(2,1,2); Eine Funktion extra zum aktivieren der spi-Schnittstelle gibt es im Datenblatt(Anhang) nicht. In der main Funktion habe ich eine while-Schleife, diese fürhrt eine Ausgabe an der spi-Schnittstelle aus. var senden := 0b10011001; spi_Write(senden); pin_HI(IO2_PIN); // Zur Sicherheit. CS Pin wieher auf high ziehen An den PINs MISO und MOSI sollten eig. die Signale rauskommen. Auf Seite 152 im Anhang gibt es eine Auswahl an Konfigurationen von spi. Welche Konfiguration nehme ich da am Besten?
Auf der SCK - Clock-Leitung habe ich schon ein Signal anliegen. Rechtecke in einem bestimmten Intervall. An der CS-Leitung habe ich eine konstannte Spannung anliegen. Da passiert nichts. An den MOSI/MISO-Pins liegt keine Spannung an.
Viktor schrieb: > Ich benutze einen Picasso 4DGL Display mit integrierten Controller. > Hier die Seite: http://www.4dsystems.com.au/prod.php?id=224 > > Interne Funktionen: > http://de.scribd.com/doc/131001806/Datenblatt-PICASO-4DGL-Internal-Functions-REV6-2 Schön. Damit ist klar wer der Empfänger ist. Aber wer ist der Sender? Beim SPI Transfer ist ja der µC der aktive Part. Wenn da was nicht funktioniert muss man daher beim µC zu suchen anfangen. Wer am anderen Ende der Leitung sitzt, ist hingegen eher uninteressant. Dein µC sendet nicht, also sollte man mal dessen SPI Spezifikation zu Rate ziehen, > In dem Programm habe ich eine main-Funktion. In dieser wird die > SPI-Schnittstelle konfiguriert: > > spi_Init(2,1,2); Wer oder was hat diese Funktion geschrieben? Du? Jemand anderer? Was sagen die Parameter aus?
>uf der SCK - Clock-Leitung habe ich schon ein Signal anliegen. >Rechtecke in einem bestimmten Intervall. Dann scheint der Controller defekt zu sein. Ich hätte da ein Taktsignal erwartet, aber Rechtecke... >An der CS-Leitung habe ich eine konstannte Spannung anliegen. Da >passiert nichts. So wie ich die Hardware-SPI-Einheiten kenne (zB im Atmel), so kennen die gar keine CS-Leitungen. Die haben nur das Schieberegister mit MISO und MOSI, sowie den Takt SCK. Befehle lesen oder schreiben immer nur ein Byte. Wenn jetzt CS benötigt wird, muss da per Software "drumherum" gebaut werden. >An den MOSI/MISO-Pins liegt keine Spannung an. Das bezweifle ich. Auch Null Volt ist eine Spannung. Und kann bei low-aktiven Signalen sogar Aktionen erwirken..
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.