mikrocontroller.net

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


Autor: Daniel Bauer (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.