www.mikrocontroller.net

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


Autor: Andrea (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

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

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Andrea (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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??

Autor: Michael Wilhelm (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andrea (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Michael Wilhelm (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ...

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael Wilhelm (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: jeugster (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andi (Gast)
Datum:

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

Autor: Jörg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@jörg eugster

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

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

Gruß Jörg

Autor: Michael Wilhelm (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.