Empfehlung Datenbus für AVR: SPI oder TWI

OP #3443780
Lesenswert?
• ▲
▼
Hallo hilfsbereite mc-Gemeinde,

bei meiner Recherche für die Ansteuerung von externen Bauteilen mittels 
AVR Controller (ATmega8) habe ich mich nun über die unterschiedlichen 
Schnittstellen belesen.

Gibt es erfahrungsbedingt eine Empfehlung für eine Schnittstelle ala TWI 
zwar störanfällig, aber mit AVR einfacher zu betreiben als SPI, etc.?
Oder fällt dieser Punkt unter "Geschmackssache"?

Vielen Dank schonmal im Vorraus.

Grüße
Sascha
#3443788
Lesenswert?
• ▲
▼
Das kommt vor allem auf die "externen Bauteile" an die du anschließen 
willst. Diese geben den Bus vor.

Der Unterschied zwischen TWI(I2C) und SPI dürfte nach kurzem Studium der 
beiden auf der Hand liegen. SPI = einfach zu implementieren, weit 
verbreitet, braucht aber viele Leitungen bei vielen Slaves.

I2C= komplexer zu Implementieren, lässt aber bis 128 Slaves an nur 2 
Leitungen zu.


gruß cyblord
#3443810
Lesenswert?
• ▲
▼
Ein AVR hat beides. Und das bestimmt nicht, weil eines besser ist. SPI 
ist schneller, I2C einfacher zu implementieren. Jeder hat seinen 
Anwendungsfall.

[EDIT:]

cyblord ---- schrieb:
> I2C= komplexer zu Implementieren,

Hihi, habe die gegenteilige Ansicht erst nachher gesehen. Vielleicht 
sollte ich ergängen: I2C auf der Leiterplatte/im Gerät einfacher zu 
implementieren, SPI dafür in der Software (was aber ab dem Zeitpunkt, wo 
man die Ansteuerroutinen einmal hat nebensächlich ist).
#3443821
Lesenswert?
• ▲
▼
PittyJ schrieb:
> cyblord ---- schrieb:
>> Und warum soll SPI schneller sein?
>
> Im normalfall hat ein I2c Device 400 KHz, während SPI im 2-stelligen MHz
> Bereich liegt. Also Faktor 10 mindestens.

Liegt aber nicht am Bus, sondern an den Geräten.

Und ja, ich gehe von höherer Komplexität in der SW aus. Weniger 
Leitungen hatte ich ja schon angesprochen. Im Layout daher einfacher.
#3443834
Lesenswert?
• ▲
▼
cyblord ---- schrieb:
> Und warum soll SPI schneller sein?

Naja, man kann grob nach Geschwindigkeit sortiert sagen:

One Wire Bus
I2C
UART/USART
SPI

Und nach sinnvoller Leitungslänge sortiert:

SPI
I2C
One Wire Bus
UART/USART

und sich danach das für den jeweiligen Zweck passende nach Aufwand und 
Nutzen aussuchen. Unterschiede in der Geschwindigkeit liegen vor allem 
an:

Notwendige Pausenzeiten (One Wire/UART)
Duplex (SPI,UART,USART vs. One Wire Bus, I2C) und natürlich der Taktrate
I2C, One Wire, UART: kHz, USART, SPI MHz.

Das gilt nicht in allen Fällen, ist aber eine sinnvolle 
Schnellabschätzung.
Gast #3443880
Lesenswert?
• ▲
▼
SPI ist auch noch beim gleichen Takt schneller als TWI weil der Overhead 
wegfällt.

Ich benutze sehr gerne die DAC7512 von TI, das ist ein einzelner 12-Bit 
DAC im SOT23-6 Gehäuse. Dem schickt man zwei Bytes und fertig.
An dem mag ich auch die drei Power-Down Modes mit 1k gegen GND, 100k 
gegen GND oder hoch-ohmig am Ausgang.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.