mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SPI, ISP, USI, TWI, I2C


Autor: S. Bauer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,


habe mich ein wenig erkundigt bezüglich der Abkürzungen
SPI = Serial Peripheral Interfac
ISP = In System Programmable
USI = Universal Serial Interface
TWI = Two-Wire Serial Interface
I2C = Inter IC Bus


Die Unterschiede habe ich bisher noch nicht so ganz verstanden.

ISP ist wohl eine Möglichkeit Chips direkt zu programmieren. Es ist
eine Art Protokoll von SPI. Ähnlich wohl dem Protokoll TCP/IP von
Ethernet. SPI ist das mit dem MOSI, MISO, SCK.

USI wiederherum geht wohl im 3-wire oder 2-wire Modus. Der 2-wire Modus
ähnelt dem I2C. Ist ist immer SCL und SDA. TWI wirkt wieder wie das
selbe...ein Protokoll von USI?

Und was ist dann UART. Das ist doch auch eine
Kommunikationsmöglichkeit.


Kann jemand vielleicht Licht hinter die Features bringen?

Vielen Dank!

S. Bauer

P.S. Das Problem bekam ich beim Vorhaben mehrere Mikrocontroller
miteinander zu vernetzen und eine Kommunikation mit dem PC
herzustellen. Ich werde den AT90CAN128 verwenden, aber es gibt noch so
viele Möglichkeiten dabei Einstellungen vorzunehmen....

Autor: dave (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
SPI ist Synchron, d.h. es hat einen Takt und Datenleitung(en). Der AVR
besitzt also MOSI, MISO und SCK (MasterOutSlaveIn, MasterInSlaveOut und
Clock). Der AVR spielt dabei meistens Master.
Das ganze ist eigentlich sowas wie Schieberegister: während der Master
dem Slave in sein Schieberegister schaufelt, macht der Slave seine
Daten in das vom AVR.

USI ist bei den kleineren... ist irgendwie dazu da, irgendwie TWI oder
SPI zu haben.

I2C (IIC) und TWI sind das gleiche. I2C wurde von Phillips entwickelt
und Atmel will ja keine Gebühren zahlen, drum heißts da TWI.
Hier hat man SDA und SCL. Die zwei Leitungen werden mit ein paar kOhm
hochgezogen. Das ganze ist nen Bus mit mehreren möglichen Teilnehmern,
auch hier bei SCL nen Clock und das ganze Besitzt nen schönes Protokoll
für die Kommunikation, deswegen können, im Gegensatz zu SPI,  mehrere
Slaves angesprochen werden. Weiteres findeste in der Spezifikation von
Phillips (siehe Google.de)

U  S/A  RT
Universal (A)Synchronous Receiver/Transmitter
Meistens wird das Asynchrone gebraucht, bei dem du die Baudrate im
Programm hinterlegst und damit kein Takt gebraucht wird. Nach dem
Startbit müssen beide Teilnehmer halt die vorher vereinbarte Zeit
warten, dann kommt das nächste.

Autor: S. Bauer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank!

Autor: Ratber (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Zusatz I2C bzw. TWI

I2C ist abgeleitet aus I²C (Falls das nicht richtig dargestellt wird: I
"hoch Zwei" C) und das wiederum aus IIC was "Inter IC Bus bedeutet.

TWI ist wie Dave schon sagte die Lizenzrechtliche Umschreibung von
Atmel und bedeutet "Two Wire Interface"

Technisch beide Identisch.

Der komplette Bus beinhaltet aber Drei Leitungen.
Neben Daten (SDA "Serial DAta") und Takkt (SCL "Serial CLock") gibt
es noch die Interuptleitung (INT) die Änderungen an einem Baustein
signalisieren.

Beispiel:
Ein Portbaustein erfährt an einem Schalteingang eine Änderung und
Signalisert das dem Master durch Pegeländerung auf der INT-Leitung.
Der Master fragt alle Slaves ab und der betreffende setzt die
INT-Leitung damit wieder zurück.

Damit spart man sich das ständige Abfragen aller Slaves.


USI ist ein weiterer Begriff bei Atmel und bedeutet "Universal Serial
Interface"

Darunter ist ein Universalinterface realisiert das SPI,TWI und UART
zusammenfasst.



Schau einfach mal in das Datenblatt eines Megas da steht eigentlich
alles drinne was nötig ist.

Eine einfache Übersicht des I2C (TWI) habe ich angehängt.

Autor: PapaNappa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann ich denn z. B. den ATtiny24 auch ganz normal per SPI programmieren? 
Dort
http://www.atmel.com/dyn/products/param_table.asp?...
steht unter SPI nämlich USI und ich weiß jetzt nicht was ich damit 
anfangen soll.

Autor: D. W. (dave) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man programmiert die AVR nicht "per SPI". Das ganze geschieht mit dem 
ISP-Verfahren :) ein kleiner, bedeutender Unterschied.
Bei den meisten AVR werden jedoch die gleichen Pins wie beim 
SP-Interface benutzt, was z.B. beim m128 zu Verwechslung führt.

In der Tabelle steht, dass der ATtiny24 ISP unterstützt, was 
eigentlich alle AVR beherrschen. Also kannst du ihn "ganz normal per SPI 
programmieren", wenn ich dich richtig verstanden habe.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@dave:
> deswegen können, im Gegensatz zu SPI,  mehrere Slaves angesprochen werden.
Nö. Im Gegensatz zu I²C können bei SPI (theoretisch) beliebig viele 
Slaves angesprochen werden, da bei SPI die Adressierung (Auswahl) der 
Slaves nicht über das Protokoll geht, wodurch eben bei I²C die Anzahl 
der Slaves begrenzt ist, sondern hardwaremäßig über 
Slave-Select-Signale. Die bedeuten natürlich einen erheblich höheren 
Verdrahtungsaufwand (selbst wenn der Master die Adresse binär ausgibt 
und man jedem Slave einen Adressdecoder spendiert), dafür ist SPI aber 
viel schneller als I²C, weil eben (abgesehen von der synchronen 
bidirektionalen Übertragung Master -> Slave und Slave -> Master) nicht 
erst die Slave-Adresse über den Bus geschickt werden muss.

Zu USI ist zu sagen, dass es sich dabei um ein All-in-One-Interface 
handelt, das lediglich die Hardware zur seriellen Kommunikation enthält, 
jedoch praktisch keine Protokoll-Implementierung. Die muss dabei in 
Software implementiert werden, je nachdem, welchen Interface-Typ man 
nutzen will.

ISP ist ein "Oberbegriff" und bedeutet tatsächlich nichts anderes als 
"In System Programming". ISP hat generell (obwohl es ein Anagramm von 
SPI ist) nichts mit SPI zu tun. Bei den ATMEL AVRs ist es eher "Zufall", 
dass für die Programmierung im System das SPI-Interface genutzt wird 
(und zwar nicht nur, wie behauptet, die Anschlüsse, sondern auch die 
Hardware). Bei anderen µC-Familien und Herstellern werden durchaus auch 
andere ISP-Verfahren verwendet.

Autor: fieser Rahul (auch Oskar genannt) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um noch einen draufzusetzen:
per JTAG kann man auch ISP...
Oder per Bootloader.
ISP bedeutet einfach, dass der Controller bzw. der Programmspeicher die 
Schaltung nicht mehr zwecks Umprogrammierung verlassen muß, um bspw. in 
einen Programmer gesteckt und neu beschrieben zu werden.

Der Bootvorgang im PC ist ja quasi auch ein ISP: Das BIOS saugt sich das 
Betriebssystem aus einem (externen) Speicher. Der könnte natürlich auch 
durch einen entsprechenden Programer verändert werden. Eigentlich wird 
er ja auch dauernd dadurch verändert, dass man neue Software auf dem 
Rechner installiert...

Autor: D. W. (dave) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ob das beim PC jetzt ein ISP ist, könnte man an der Stelle bezweifeln, 
da der ganze PC ja als Einheit dasteht. Das Programm wird nur in den 
Programmspeicher geladen, woraus es jetzt ausgeführt wird :) Das 
Programm an sich wird nicht geändert, höchstens man ändert was im 
laufenden Betrieb.

Aber darüber könnte man doch ne Semesterarbeit schreiben...

Mit dem SPI meinte ich, dass ohne weitere Leitungen keine weiteren 
Slaves angesprochen werden können, haste sicher bemerkt.

Autor: fieser Rahul (auch Oskar genannt) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Aber darüber könnte man doch ne Semesterarbeit schreiben...

Bei den Philosophen...
... könnte man daraus auch eine Magister- oder sogar Doktor-Arbeit 
machen.

Autor: D. W. (dave) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So weit wollte ich es nicht übertreiben... ich hatte schon Diplom 
geschrieben...

Autor: isa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
kann jemand mir sagen,ob SPI schon im Entwicklungsboard scb9328 
integriert ist?
wenn nein wie kann ich es programmieren?Gibt es ein muster?
Danke!

Autor: 3357 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
*** hijack alert ***
SPI ist das Protokoll,das fuer ein Schiebregister passt. Also Daten 
ausgeben, dann den positive clock, bit fuer bit, byte per byte und am 
Ende kommt der strobe (CS), der das alles uebernimmt.

*** hijack alert ***

Autor: isa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Soweit 9ich weiss muss ich diese SPI-Schnittstelle für scb9328 
programmieren.Hat jemand Ahnung wie die ganze gemacht werden soll oder 
ein Programm bereit fertig?
Danke für eure Hilfe!
Isa

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.