Hallo, ich versuche zu verstehe den Unterschied zwischen UAST und SPI zu verstehen und wäre Dankbar wenn mir Jemand "KONKRETT" helfen könnte! 1. wenn ich 2 IC über UART verbinden der einer mit 48Mhz getaktet und der anderer mit 150 Mhz. spielt hier deren Frequenz eine Rolle oder ist hier nur die Baudrate wichtig? 2. wenn ich NUN die 2 IC über SPI verbinden der einer mit 48Mhz getaktet und der anderer mit 150 Mhz. spielt DANN hier deren Frequenz eine Rolle oder ist hier AUCH nur die Baudrate wichtig? MfG
Neulin_g wrote: > Hallo, > > ich versuche zu verstehe den Unterschied zwischen UAST und SPI zu > verstehen und wäre Dankbar wenn mir Jemand "KONKRETT" helfen könnte! > > 1. wenn ich 2 IC über UART verbinden der einer mit 48Mhz getaktet und > der > anderer mit 150 Mhz. > spielt hier deren Frequenz eine Rolle oder ist hier nur die Baudrate > wichtig? Nur die Baudrate ist wichtig. Allerdings leitet sie sich meist vom Haupttakt ab, sodass für die beiden ICs jeweils andere Einstellungen (Vorteiler oder Baurdare-Generator) nötig sind. So ist es z.B. möglich, zwei PCs über die serielle Schnittstelle (die auch einen UART benützt) erfolgreich zu verbinden, wobei von den PCs einer z.B. ein 25MHz 386er und der andere ein 3GHz Pentium sein kann. > > 2. wenn ich NUN die 2 IC über SPI verbinden der einer mit 48Mhz getaktet > und der anderer mit 150 Mhz. spielt DANN hier deren Frequenz eine > Rolle > oder ist hier AUCH nur die Baudrate wichtig? Hier ist eigentlich nicht mal die Baudrate wichtig, da der Takt über eine eigene Leitung gesendet wird. Natürlich sind immer die maximalen Geschwindigkeiten ein limitierender Faktor. P.S.: Konkret schreibt man mit nur einem "T" am Ende.
@ Neulin_g (Gast) >ich versuche zu verstehe den Unterschied zwischen UAST und SPI zu >verstehen und wäre Dankbar wenn mir Jemand "KONKRETT" helfen könnte! UART SPI >1. wenn ich 2 IC über UART verbinden der einer mit 48Mhz getaktet und Es ist nur die Baudrate wichtig, die kann man einstellen. >2. wenn ich NUN die 2 IC über SPI verbinden der einer mit 48Mhz getaktet > und der anderer mit 150 Mhz. spielt DANN hier deren Frequenz eine >Rolle > oder ist hier AUCH nur die Baudrate wichtig? Den Takt (Baudrate) der SPI kann man auch einstellen. Welchen Takt die ICs haben ist (fast) egal. MFg Falk
Ein UART arbeitet Asynchron, das bedeutet, die Bitrate ist weit unterhalb des Taktes, in einem Beliebigen Verhaeltnis, beim Empfang werden die einzelnen Bits aus mehreren Samples zusammengesetzt und der Takt selbst wird nicht uebertragen. Beim SPI ist die Uebertragungsrate ueblicherweise eine Zweierpotenz kleiner als der Takt und der geteilte Takt wird mit uebertragen. Die Daten sind dann synchron zum geteilten Takt. Die Bits werden an der flanke des geteilten, uebertragenen Taktes gelesen. Beide Teilnehmen muessen dann synchron laufen, was bei der asynchronen UART Uebertragung nicht der Fall ist.
Danke Leute! Also wenn in den beiden Fälle NUR die Baudrate von bedeutung ist! WO LIEGT DENN DA DEN UNTERSCHIED (bezogen auf die Frequenz)???? PS:(von der Definition her weiß ich : UART : kein Synchronisation notwendig SPI: Slave werden synchronisiert --> weil mehrere)
@ Neulin_g (Gast) >WO LIEGT DENN DA DEN UNTERSCHIED (bezogen auf die Frequenz)???? UART: asynchrone Schnittstelle ohne extra Taktleitung SPI: synchrone Schnittstelle mit extra Taktleitung und Slave-Select Leitung >UART : kein Synchronisation notwendig >SPI: Slave werden synchronisiert --> weil mehrere) Falsch, synchronisiert werden muss imer, nur passiert das unterschiedlich. MfG Falk
UART ist zunächst mal nur für Punkt-zu-Punkt-Verbindungen geeignet, während SPI auch als Bus (also mit mehreren Slaves) arbeiten kann (und bevor jetzt wieder jemand kommt und sagt "Mit UART kann man das aber auch...": Ja, man kann so etwas auch mit UART implementieren, allerdings ist das Slave Select dann in Software zu machen und das ist eher unüblich). Außerdem arbeitet SPI 100%ig synchron, d.h. es wird nicht nur der Takt mit übertragen, sondern ein Slave kann auch nur dann senden, wenn er gleichzeitig Daten vom Master empfängt. Beim UART arbeiten Sender und Empfänger unabhängig voneinander. SPI ist ein reines Master-Slave-System, d.h. es gibt immer genau einen Master, der die Slaves (oder den Slave, man kann schließlich auch mit SPI eine Punkt-zu-Punkt-Verbindung aufbauen) zum Reden auffordert. Beim UART gibt es keinen echten Master-Slave-Betrieb, da beide Teilnehmer im Prinzip quasseln können, wenn sie wollen (außer es ist ein Protokoll vereinbart, das einen der Teilnehmer nur dann reden lässt, wenn der andere das erlaubt). Und, wie andere oben schon angedeutet haben, lässt SPI aufgrund der wesentlich steiferen Hardware-Architektur i.d.R. deutlich höhere Datenraten (in Bezug auf den Prozessortakt) zu als UART (eben weil beim UART aufgrund des fehlenden Übertragungstaktes ein bestimmtes Timing einzuhalten ist, um die Synchronisation von Sender und Empfänger zu ermöglichen). Und zu Deinem Verständnisproblem mit der "Frequenz": Bei SPI ist es schnuppe, mit welcher Frequenz die einzelnen Teilnehmer-CPUs getaktet werden. Der Master gibt den Takt für die Übertragung aus und der Empfänger empfängt diesen Takt und kann die Signalflanken des ein- und abgehenden Datenstromes darauf synchronisieren. Im Prinzip ist eine Datenübertragung per SPI nichts anderes als ein zyklisches Schieberegister, das vom Master seinen Schiebetakt bekommt. Beim UART hingegen müssen beide Teilnehmer den vorher vereinbarten Übertragungstakt selbst generieren, und zwar mit einer ausreichenden Genauigkeit, um zu gewährleisten, dass es keine Übertragungsfehler durch falsch zugeordnete Flanken gibt. Da sich nicht sämtliche üblichen Baudraten mit allen Ausgangsfrequenzen mit der erforderlichen Genauigkeit erzeugen lassen und außerdem bestimmte Oszillatortypen wegen ihrer grundsätzlichen Ungenauigkeit und/oder Temperaturdrift nicht zur Baudratengenerierung für asynchrone Übertragung geeignet sind, sind dem UART wesentlich engere Grenzen gesetzt als dem SPI.
@ Johannes M. (johnny-m) >UART ist zunächst mal nur für Punkt-zu-Punkt-Verbindungen geeignet, Falsch. Die meisten RS485-Busse laufen per UART. >allerdings ist das Slave Select dann in Software zu machen und das ist >eher unüblich). Nöö. MFG Falk
Falk Brunner wrote: > @ Johannes M. (johnny-m) > >>UART ist zunächst mal nur für Punkt-zu-Punkt-Verbindungen geeignet, > > Falsch. Die meisten RS485-Busse laufen per UART. Ja, mit einem entsprechenden Protokoll. Deshalb steht da auch das Wörtchen "zunächst". Übersehen? >>allerdings ist das Slave Select dann in Software zu machen und das ist >>eher unüblich). > > Nöö. Ebenfalls übers Protokoll. Dass bei solchen Systemen das ganze "ein wenig" komplizierter ist, sollte klar sein. BTW: Afaik ist RS-485 immer asynchron (Zumindest wüsste ich jetzt konkret nicht, dass der Standard eine Taktleitung vorsieht). "Die meisten" müsste also wohl eher "alle" heißen, oder net?
@ Johannes M. (johnny-m)
>Afaik ist RS-485 immer asynchron
Nöö. RS-485 ist ein reiner IO-Standard wie TTL und CMOS und beinhaltet
rein gar nichts in Bezug auf die verwendete Logik. Im industrieellen
Umfeld wird RS422/485 für alles mögliche eingesetzt, auch für
SPI-ähnliche Dinge über lange Strecken (mit bisweilen erbärmlichen
Würg-Arounds, warum lassen Maschinenbauer nicht einfach die Finger von
Elektronik und machen das was sie können, Maschinen bauen?)
MFG
Falk
Falk Brunner wrote: > @ Johannes M. (johnny-m) > >>Afaik ist RS-485 immer asynchron > > Nöö. RS-485 ist ein reiner IO-Standard wie TTL und CMOS und beinhaltet > rein gar nichts in Bezug auf die verwendete Logik. Da haste natürlich Recht... > Im industrieellen > Umfeld wird RS422/485 für alles mögliche eingesetzt, auch für > SPI-ähnliche Dinge über lange Strecken (mit bisweilen erbärmlichen > Würg-Arounds, warum lassen Maschinenbauer nicht einfach die Finger von > Elektronik und machen das was sie können, Maschinen bauen?) > > MFG > Falk Ah, ja. Aber ist natürlich klar. Man kann natürlich den Takt auch mit dem selben Prinzip übertragen... Ich hatte allerdings den Eindruck, dass der OP eher auf die grundlegenden Hardware-Geschichten aus war (er spricht von 2 ICs, die er verbinden will, was auch immer das für welche sein sollen...), und darauf bezog sich auch obige Erläuterung. Auf µC/IC-Ebene wird eben SPI eher für Busse und UART für Punkt-zu-Punkt- (Schaltung-zu-PC-) Verbindungen benutzt. Mit UART und entsprechenden Treibern/Pegelumsetzern kann man eben sehr einfach die üblichen Standards, die auch von PCs unterstützt werden, implementieren. SPI und I²C sind dagegen hauptsächlich zur Steuerung der unmittelbaren Peripherie vorgesehen (Und aufgrund der verwendeten Hardware auch deutlich weniger flexibel einsetzbar als das UART). Dass das so üblich ist, heißt natürlich nicht, dass der Anwender nicht auch andere Sachen damit machen darf;-)
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.