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


von Stefan G. (taras)


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!

von nixwisser (Gast)


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.

von Stefan G. (taras)


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?

von nixwisser (Gast)


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.

von EFA (Gast)


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.

von Stefan G. (taras)


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.

von EFA (Gast)


Lesenswert?

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

von Stefan G. (taras)


Lesenswert?

Ist DMA-Transfer deterministisch?

von gerhard (Gast)


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

von Stefan G. (taras)


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?

von gerhard (Gast)


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

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.