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

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