mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage zu SPI (ATmega168; AT25DF641)


Autor: Johannes G. (johannesg00)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin gerade dabei einen AT25DF641 Dataflash von Atmel mit einem 
ATmega168 anzusprechen. Soweit ja kein Problem, da die Datenblätter sehr 
leicht verständlich sind.
Nur nun habe ich ein Problem:
Bei dem AVR initalisiere ich das SPI als Master. Um nun ein Byte zu 
senden, schiebe ich das Byte in das Register SPDR.
Beim Lesen vom Dataflash, muss ich ein Opcode und die Adresse an den 
Dataflash senden. Diese schickt mir aber nun nur die Daten, wenn ich 
weiterhin ein Clock Signal anlege. Nur wie soll ich das mit dem AVR 
empfangen? Dafür müsste ich doch dann in den Slave Modus wechseln oder? 
Aber im Slave Modus sendet der AVR ja auch kein Clock Signal...
Ich hoffe ihr versteht mein Problem, ich weiß nicht wie ich es besser 
beschreiben soll...
Wenn ihr noch Fragen habt, fragt einfach, ich weiß im Moment echt nicht 
wie ich das lösen soll..

Viele Grüße,
   Johannes

Autor: Frank K. (fchk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
SPI ist IMMER bidirektional. Du schreibst ein Byte nach SPDR, startest 
damit den Transfer, und bekommst ein Byte in SPDR zurück, wenn der 
Transfer komplett ist. Wenn Du Kommando und Adresse sendest, 
interessieren Dich die Dummy-Bytes, die das Flash sendet, nicht. Zum 
Lesen schickst Du Dummy-Bytes und bekommst Deine Daten zurück.

fchk

Autor: Johannes G. (johannesg00)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

kann es sein, dass das beim Dataflash dann nicht so ist?
Ich habe mal ein Bild aus dem Datenblatt angehängt... Dort sieht es 
nicht so aus wie wenn der Flash immer ein Dummybyte zurück schickt.. bzw 
ich ihm ein Dummybyte schicken muss, damit er ein weiteres Byte 
schickt..
Irgendwie verstehe ich das im Moment nicht so ganz..
Kann mir das vielleicht nochmal jemand erklären?

Vielen Dank schonmal :)
Johannes

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Irgendwie verstehe ich das im Moment nicht so ganz..
>Kann mir das vielleicht nochmal jemand erklären?

Der Master erzeugt den Clock. Der Slave macht NICHTS von alleine.
Wenn du Daten aus dem Teil haben willst musst du Dummy Bytes schicken
um die Daten abzuholen. Das ist das ganze Geheimnis bei SPI.

Autor: Johannes G. (johannesg00)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach so läuft das.. dankeschön ;)
Ich denk dann werde ich das vielleicht als Soft SPI lösen, dann bin ich 
da vllt etwas flexiebler ;)

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich denk dann werde ich das vielleicht als Soft SPI lösen, dann bin ich
>da vllt etwas flexiebler ;)

Wie bitte? Erklär das mal!

Autor: Johannes G. (johannesg00)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So bin ich an bestimmte Port Pins gebunden, und an einen bestimmten AVR 
Controller. Wenn ich das mit Soft SPI löse (Geschwindigkeit ist bei 
meiner Anwendung relativ egal), dann kann ich den Code auf jedem AVR 
verwenden und an allen Pins. So war das gemeint ;) Vom Aufwand her 
bestimmt etwas komplizierter, aber ich denke so bin ich eben etwas 
flexibler ;)

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.