www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SPI Schnittstelle bei ATMEL AT91SAM7X.


Autor: Stefan Gaab (taras)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute, ich habe eine Frage zur SPI Schnittstelle von ATMEL 
AT91SAM7X... Serie.

Ist es möglich eine PAGE WRITE SEQUENZ bei EEPROM mit diesem Controller 
zu realisieren?
Das heißt nach dem die CS runer auf LOW geht, praktisch ein unendlich 
langes Datenpaket mit maximal 8MHz zu senden, ohne dass die CS Leitung 
zwischen durch auf HIGH geht (auch wenn nur für eine Takperidode) bzw. 
Pausen auf der CLK Leitung entstehen.

Das Problem bei einigen Mikrokontrollern ist, dass die SPI Framegröße 
meist begrenzt ist (8-32 Bit). Nach dem eine Datenpaket gesendet wurde, 
geht die CS Leitung automatisch auf HIGH und CLK wird angehalten. Man 
kann also höchstens einen Takt später wieder mit nächsten Paket 
beginnen. Beim Ansteuern von einigen EEPROMS ist ein solchen Verlhalten 
unzulässig. Man kan dsicherlich über I/O Pins eigenes Protokoll machne, 
doch ob die Frequenzen von 8 Mhz erreichbar sind, ist fraglich!!

Danke im Vorauß für die Hilfe!

Autor: nixwisser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
na wenn es Dein Eprom mitmacht: Steuere CS über ein anderes Pin. per SPI 
kannst Du ohnehin immer nur Byte für BYte 'rauslassen.. Also Pin 
rücksetzen (1 Takt) -> soviele Bytes rauslassen, wie in die Page passen 
-> Pin setzen (1 Takt) - sollte zeitlich unkritisch sein, weil der Eprom 
danach ohnehin Zeit braucht für seinen Page-Write-cycle. "Unbegrenzt mit 
8MHz schreiben" wird wohl nicht uneingeschränkt gelten.

Autor: Stefan Gaab (taras)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also das wäre mit sicherheit eine Lösung. Doch wie sieht die CLK Leitung 
nach eine Paket aus? Entsteht da bei ATMEL eine 1 Clock breite Lücke?

Autor: nixwisser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
höchstwahrscheinlich gibt es so eine Lücke (Du brauchst ja Zeit, um per 
SPIF festzustellen, daß 1 Byte 'raus ist, und dann mußt Du das nächste 
ins SPDR nachladen). Sollte dem EPROM aber nichts ausmachen, der wartet 
geduldig aufs nächste Clock.

Autor: EFA (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>na wenn es Dein Eprom mitmacht: Steuere CS über ein anderes Pin. per SPI
>kannst Du ohnehin immer nur Byte für BYte 'rauslassen.. Also Pin
>rücksetzen (1 Takt) -> soviele Bytes rauslassen, wie in die Page passen
>-> Pin setzen (1 Takt) - sollte zeitlich unkritisch sein, weil der Eprom
>danach ohnehin Zeit braucht für seinen Page-Write-cycle. "Unbegrenzt mit
>8MHz schreiben" wird wohl nicht uneingeschränkt gelten.


nixwisser.... der Name ist Programm.

Natürlich geht das. Suche im Datenblatt man nach 'CSAAT', mit dem Bit 
kannst du in der SPI-Unit bewirken, dass CS nach dem Transfer von 8..10 
Bits aktiv bleibt.

Autor: Stefan Gaab (taras)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was passiert aber wenn ich während des Transfers Daten in SPDR nachlade? 
Bei 50 MHz Taktfrequenz hat der Prozessor 6 Takte um etwas parallel zu 
machen. Es ist in Atmel Datenblatt etwas schwamig beschrieben, aber 
theoretisch ist genug Zeit um die Daten in den Schieberegsiter zu 
transferieren und neuen SPI Frame zu satrte ohne, dass CLK anhält. 
Sorry, dass ich so blöd fragen muss. Hätte normalerweise einfach 
nachgemessen und ausprobiert, doch ich muss bevor ich mir ei Board kauf 
speziel dieses Detail wissen.

Autor: EFA (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das kann ich nicht genau sagen, aber üblicherweise überträgt man größere 
Datenmengen mit Hilfe des DMA-Controllers.

Autor: Stefan Gaab (taras)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist DMA-Transfer deterministisch?

Autor: gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ist DMA-Transfer deterministisch?
was verstehtst du im zusammenhang mit dma-transfer unter 
deterministisch?

du kannst mit dem pdc (so heißt der dma controller beim at91) bis zu 
64kbyte große datenblöcke an die peripherie übergeben und diese kümmert 
sich um die ausgabe auf der gewünschten schnittstelle.

gruss
gerhard

Autor: Stefan Gaab (taras)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich meine damit, dass ich vorhersehen möchte was die SPI schnittstelle 
in jedem Prozessortakt macht um die Werte Zeitlich zuordnen zu können. 
Ist es bei DMA möglich?

Autor: gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ist es möglich eine PAGE WRITE SEQUENZ bei EEPROM mit diesem Controller
>zu realisieren?

>Ich meine damit, dass ich vorhersehen möchte was die SPI schnittstelle
>in jedem Prozessortakt macht um die Werte Zeitlich zuordnen zu können.
>Ist es bei DMA möglich?
welchen zusammenhang haben deine beiden o.a. Aussagen?
was ist deine problemstellung?

gruss
gerhard

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.