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....
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.
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.
Kann ich denn z. B. den ATtiny24 auch ganz normal per SPI programmieren? Dort http://www.atmel.com/dyn/products/param_table.asp?family_id=607&OrderBy=1197&Direction=ASC steht unter SPI nämlich USI und ich weiß jetzt nicht was ich damit anfangen soll.
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.
@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.
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...
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.
>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.
So weit wollte ich es nicht übertreiben... ich hatte schon Diplom geschrieben...
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!
*** 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 ***
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.