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!UARTSPI>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;-)