Forum: Mikrocontroller und Digitale Elektronik Unterschied I²C - SPI


von Andrea (Gast)


Lesenswert?

Hi,

Also mal folgende Frage:
Was ist eigentlich der Unterschied zwischen einem I²C Bus und einem SPI
Bus ??   (SPI = TWI richtig?)

von Rahul (Gast)


Lesenswert?

I²C ist bidirektional und hat 2 Leitungen: Datenleitung und
Clock-Leitung
SPI besitzt midestens 4 Leitungen: MasterOut, SlaveOut, Clock und
SlaveSelect.
Pro Slave eine Select-Leitung...

von Andrea (Gast)


Lesenswert?

aha .... ich nehm mal an über SPI können nur AVR´s verbunden werden die
auch dafür geeignet sind und über I²C können dann so ziemlich alle
verbunden werden??

von Michael Wilhelm (Gast)


Lesenswert?

I2C und TWI (Two Wire Interface) ist das selbe, hat aber wegen irgend
welchen rechtlichen Geschichten des Entwicklers (Philips?)
unterschiedliche Namen. der große Unterschied zwischen SPI und I2C ist:
auf der SPI-Schnittstelle hast du einen Dateneingang MISO, einen
Datenausgang MOSI und einen Takt SCK. Beim I2C ist die Datenleitung
bidirektional (SDA), Taktleitung (SCL) ist ebenfalls vorhanden. Das
heißt, der Sender und der Empfänger benutzen die gleiche Leitung um
Daten zu senden und zu empfangen. SPI ist (ich glaube) etwas schneller
als I2C, dafür braucht man eine Leitung mehr.
MW

von Andrea (Gast)


Lesenswert?

ok, das ist schonmal klar.
nur frag ich mich trotzdem:
ein 8535 hat SPI aber kein I²C - aber dennoch kann ich softwaremäßig
beim 8535 ein I²C proggen - warum?

von Michael Wilhelm (Gast)


Lesenswert?

Warum nicht? Wenn die entsprechende Hardware nicht zur Verfügung steht,
kann man sowohl I2C als auch SPI per Software nachbilden. Aber das ist
eine entsprechend zeitaufwendige Sache, während der Controller mit
Hardware SPI oder I2C nur einige Befehle zur Initialisierung braucht
und dann werden Daten in ein Register geschrieben. Dieses ganze Sende-
und Empfangstiming nimmt einen der Controller ab. Normalerweise meldet
er sich per Interrupt zurück (wenn so initialisiert), wenn Daten
gelesen oder geschrieben wurden. Es ist a) bequemer und b) kann der
Controller während der zeit andere Sachen machen.
MW

von Ralf (Gast)


Lesenswert?

ist es eigentlich überhaupt möglich gewisse sachen die´s hardwaremäßig
nicht gibt eben softwaremäßig zu lösen?
ich mein mir fällt da ganz spontan gleich die entprellung der taster
ein ...

von Olaf (Gast)


Lesenswert?

Man kann sehr viel in Software loesen. Ist dann halt oft langsamer, oder
beansprucht Rechenzeit im Prozessor.

Es gibt aber auch Sachen die kann man nicht mit Software allein
erschlagen. Dazu gehöert z.B die Erzeugung von echten Zufallszahlen.

Olaf

von Andi (Gast)


Lesenswert?

Hallo,
ich muss mich erstmal entschuldigen, dass ich hier in deinem Thread
noch eine Frage stelle! Aber wenn es schon mal um das SPI geht denk ich
mir spar ich nen neuen Thread.
Ich nutze das SPI zum Programmieren über ISP. Kann ich dann die Pins
(MOSI, MISO, SCK und SS) als I/O Ein- bzw. Ausgänge beschalten?
mfg, Andi

von Jörg (Gast)


Lesenswert?

Ja kannst Du.
Du solltest nur darauf achten, dass wärend des Programmierens die
Logik, die am Spi hängt nicht verrückt spielen kann.

Am besten MOSI, MISO, SCK über einen 4053 entkoppeln.

Gruß Jörg

von Michael Wilhelm (Gast)


Lesenswert?

Beim ATMEGA8515 liegt die SPI an PORTB. Erst, wenn die SPI initialisiert
wird, bekommen die Portpins die entsprechende Funktionen, egal wie der
Port vorher definiert wurde. Ohne SPI-Funktion stehen diese Pins ganz
normal als Ein- oder Ausgang zur Verfügung. Aber, eine entsprechende
Initialisierung (SPI, TWI, RxD, TxD,...) überschreibt bzw. setzt die
Portpins auf die jeweilige Funktion. Wenn z. B. die UART initialisiert
wurde, kannst du auf dem RxD-Eingang natürlich noch den Pull Up
einschalten.
MW

von jeugster (Gast)


Lesenswert?

Hallo

weiss jemand wo man ein interface für de pc kriegt, der den spi-bus
versteht? entweder extren an die usb oder als pci-karte oder was auch
immer. hab einfach keine lust den bus selber zu implementieren...

danke für die infos
und noch einen schönen tag
jörg eugster

von peter dannegger (Gast)


Lesenswert?

"ist es eigentlich überhaupt möglich gewisse sachen die´s
hardwaremäßig
nicht gibt eben softwaremäßig zu lösen?"

Das ist ja gerade der Witz daran !

Deshalb wurden sie erfunden. Mann braucht also nicht mehr
unterschiedliche Hardware zusammen zu löten, sondern nur
unterschiedliche Programme reinzuladen, um unterschiedliche Aufgaben zu
lösen.


"ich mein mir fällt da ganz spontan gleich die entprellung der taster
ein ..."

Das ist sogar eine der Lieblingssachen eines µC, macht er so ganz
nebenbei.
Und bei einer Matrix gehts eh nur in Software.


Peter

von Andi (Gast)


Lesenswert?

Danke für die schnellen Antworten! So macht das Spaß! :-)

von Jörg (Gast)


Lesenswert?

@jörg eugster

in diesem Beitrag steht was über einen SPI-RS232 Wandler

http://www.mikrocontroller.net/forum/read-1-107863.html#107863

Gruß Jörg

von Michael Wilhelm (Gast)


Lesenswert?

"Und bei einer Matrix gehts eh nur in Software."
Das ist nicht wahr. Die Zeilen kann man mit einem 4017 bedienen, eine
Aktion an den Spalten (gedrückte Taste) sperrt den Clock des 4017. In
dem Moment kann ich Zeilen und Spalten auslesen und reagieren. Ich habe
solche Sachen in den 80'ern gebaut. Es funktioniert wirklich. Zwar ist
einiges an Hardware nötig, aber möglich ist es.

MW

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.