[AT91SAM7X256] SPI mit komischem Verhalten

Gast #1093798
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
Angehängte Dateien:

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.