Hallo zusammen, ich habe schon die Datenblätter gelesen und in anderen Foren recherchiert ... allerdings ohne Erfolg ... deswegen jetzt dieser Beitrag. Ausgangspunkt für die folgenden Ausführungen ist, dass ich mich einfach mit der Peripherie des SAM7 auseinandersetzen wollte. PMC, AIC, PIO, CAN & USART habe ich schon geschafft. Jetzt ist SPI dran. Dazu habe ich mich zunächst auf "fixed peripheral select", "local loopback", "chip select active after transfer" und die !!NICHTverwendung!! der/des PDC festgelegt. Dummerweise verhält sich bei dieser Konfiguration einiges nicht so, wie es (meiner Meinung nach) sollte. 1) Nach Einschalten der SPI und vor Übergabe des ersten Byte an TDR ist noch alles ok. Mit Übergabe des ersten Bytes an TDR werden TXEMPTY und TDRE jeweils NULL und mit erfolgter Übertragung des Byte durch die SPI wieder EINS. Im Anschluss an die Übertragung steht wegen LLB das Byte nun auch in RDR. Auch das ist immer noch ok. Mit Übergabe des zweiten Bytes an TDR allerdings, werden TXEMPTY und TDRE nun jeweils NULL und gehen nicht wieder auf EINS zurück. Auch ein Empfang in RDR erfolgt nicht. => das Byte steckt noch im Shift-Register. Aber warum? 2) RDRF wird überhaupt nicht bedient und ist immer NULL. => Wieder warum? Im Anhang habe ich ein lauffähiges Stück Code beigefügt. Als Entwicklungsumgebung verwende ich Rowley CrossStudio in Verbindung mit einem Olimex ARM-USB-TINY. Hat jemand von Euch ähnliche Erfahrungen mit der SAM7-SPI gemacht? Wie wurden die Probleme beseitigt? Ist meine Handhabung der SPI falsch? Habe ich etwas falsch verstanden? Wie kann ich mein gewünschtes Verhalten erreichen, ohne die CS Line "manuell" per PIO steuern zu müssen? Vielen Dank, Daniel
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.