Forum: Mikrocontroller und Digitale Elektronik [AT91SAM7X256] SPI mit komischem Verhalten


von Daniel Bauer (Gast)


Angehängte Dateien:

Lesenswert?

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
Noch kein Account? Hier anmelden.