Forum: Mikrocontroller und Digitale Elektronik SPI: Datenrate berechnen


von mr.chip (Gast)


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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> 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?

Ja, sofern Du die Daten schnell genug anliefern kannst ...

von mr.chip (Gast)


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.

von Michael U. (Gast)


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

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.