SPI: Datenrate berechnen

Gast #515730
Lesenswert?
• ▲
▼
Hallo

Ich versuche gerade herauszufinden, wie schnell man mit dem Atmega-SPI 
Daten übertragen kann. Hab ins Datenblatt des Mega32 geschaut, eine 
konkrete Datenrate findet man da nicht - lediglich ein Register für die 
Prescaler-Einstellung: SCK = Taktfrequenz / x

Stimmt die Annahme, dass pro SCK ein Bit übertragen wird? D.h., bei 16 
MHz und einem Prescaler von 2 würde ich eine Datenrate von 1 Megabyte/s 
erreichen?

Gruss

Michael
Gast #515743
Lesenswert?
• ▲
▼
> Ja, sofern Du die Daten schnell genug anliefern kannst ...

In aller Regel werde ich hier ja entweder ein Interrupt oder eine 
Flag-pollende Schleife machen, und dann jeweils sobald ein Byte 'raus 
ist, das nächste ins Datenregister schreiben. Da dürfte also schon 
einiges an Overhead anfallen. Alternativ könnte ich bei dieser hohen 
Datenrate den Code für das SPI auch direkt in den Datenberechnungscode 
einbinden und die Takte abzählen.

Trotzdem, da wird einiges an Overhead entstehen. Aber für eine 
uC-zu-uC-Verbindung scheint mir SPI doch ähnlich schnell als eine 
handgemachte 8-Bit-Port-zu-Port-Datenübertragung.
Gast #515793
Lesenswert?
• ▲
▼
Hallo,

Du hast 8 Takte Zeit für ein Byte. Davon gehen 2-3 dafür ab, das Byte 
aus dem Ram zu holen und ins SPI-Register zu schreiben. Bleiben noch 5. 
Wenn Du jetzt noch das Flag auswerten willst, sind mindestens 2-3 weg, 
also noch 2 für andere Aufgaben...

Naja, IRQ fällt hanz aus, der braucht schon 4 für reti, Aufruf müßte ich 
schauen, wohl auch 4.

Das meinte er mit schnell genug liefern.

Gruß aus Berlin
Michael

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren