PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : UART vs SPI kann UART auch "echt" bidirektional üb



Ceos
03.09.2009, 12:03
mir ist grad in nem anderen topic ne frage aufgekommen ... bei SPI ist es üblich, dass gleichzeitig daten gesendet UND empfangen werden ... ist es defakto möglich mit einem UART anschluss dasselbe zu machen !?

genauso wie SPI hat UART ein datenregister zum lesen und schreiben, aber was passiert wenn cih gerade ein byte empfange und dann mittendrin das senden einleite !? ist ja alles asynchron!

markusj
03.09.2009, 13:16
Siehe Datenblatt ;)
Bei allen U(S)ARTs kann vollduplex gearbeitet werden, das "Synchronous" bedeutet nur, dass dir ein Takt zur Verfügung steht (via XCK).
Im übrigen muss beim U(S)ART nicht gleichzeitig das Antwortbyte überagen werden, wogegen bei SPI immer mit jedem geschriebenen Byte auch eins gelesen wird.

mfG
Markus

Ceos
03.09.2009, 13:26
das mit dem "kann vollduplex" glaub ich aber nicht ganz ... technisch gesehen hat die schnittstelle 1 datenregister, 1 pufferregister und 1 schieberegister ... und puffer und schieberegister können ... soweit ich das erfahren habe ... nicht gleichzeitig verwendet werden ... bzw. die werden irgendwie immer durchgewechselt, und dadurch kann nur eines gleichzeitig verwendet werden ... erfahrung oder tiefenwissen wäre mir da schon lieber ... beim SPI ist es eben der TAKT der das gleichzeitige senden und empfangen ermöglicht!

markusj
03.09.2009, 14:07
Du musst es nicht glauben, nur das Datasheet lesen ...
Das UDR wird beim Schreiben auf das Ausgangsregister gemapped, beim Lesen auf das Eingangsregister.
Der Takt wird beim Empfangen aus dem Signal selbst regeneriert, beim Senden wird ein eigener Sendetakt in das Signal hineinmoduliert.
SPI ist dagegen einfach nur extrem simpel, weil es Ein- und Ausgangsstufe aneinander koppelt, Empfänger und Sender beim UART sind dagegen weitestgehend unabhängig.

mfG
Markus

pacer_one
03.09.2009, 15:21
Da stelle ich mir doch gerade die Frage welches Datenblatt man lesen soll.

Nehme ich mir das Datenblatt vom Mega8, lese ich zwar was von full duplex, aber das bezieht sich auf die unabhängigen Sende/Empfangs-Register.
Für full duplex braucht man mindestens 4 Leitungen, da für Sende- und Empfangsleitung je auch eine Clockleitung vorhanden sein muss.

Betreibe ich die USART-Schnittstelle im SPI-Modus, so habe ich auch 3 Leitungen, somit ist hier full duplex möglich.

also bitte nicht verwechseln, die USART-Schnittstelle kann sowohl über 2-Draht (RS232) im half duplex-Mode betrieben werden, als auch im SPI-Modus mit full duplex.

markusj
03.09.2009, 15:32
? Sag mir bitte wo beim Mega8 steht, dass ich NICHT gleichzeitig senden und empfangen kann, wenn ich den U(S)ART im ganz normalen asynchronen Modus betreibe?
Asynchron bedeutet (zumindest hier) genau eine Leitung je Richtung, der Takt wird aus dem Signal rückgewonnen (und aus der Baudrateneinstellung ...).
Du wirfst hier gerade Vollduplex mit synchronem Empfang durcheinander, bitte nicht verwechseln ;)

Nochmal in kurz: Zwei Strippen, eine je Richtung, beide unabhängig voneinander. An beiden hängen unterschiedliche Hardware-Komponenten, die Senden/Empfangen.
Bei jedem UART kann gleichzeitig gesendet und empfangen werden, die Übertragung ist aber nicht synchron!
Beim USART kann die Übertragung synchron erfolgen, dann gibt es eine Taktleitung, die Funktionalität ist dann SPI recht ähnlich (oder sogar gleich?)

mfG
Markus

PS: Seite 133 des Datenblatts des Mega8 - Dort sieht man wunderbar, dass Sender und Empfänger getrennt arbeiten

Ceos
03.09.2009, 15:38
verdammt .. ich hab das schaltbild total ignoriert XD da sind ja separate sende und empfangsregister ... ich muss beim lesen irgendwo was übersehen haben ... naja danke jedenfalls der hilfen .. vll. find ich die passage nochmal und melde mcih nochmal

pacer_one
03.09.2009, 16:03
stimmt, das mit dem Asynchron hatte ich vergessen.
Da hätte ich wohl deinen 2. Post genauer lesen müssen :-)