Uart oder SPI

Gast #4472871
Hallo,

ich möchte mehrere Module miteinander verbinden. Nehme ich dafür UART 
oder SPI?

Wo genau sind da die Unterschiede?
Alle Module werden per einfacher Steckverbinder relativ kurze Wege zur 
Hauptplatine besitzen und alle Module sollen auf derselben 
BUS-Verbindung lauschen und nur innerhalb einer strickten 
Master-Slave-Kommunikation sprechen dürfen, d.h. auf Anforderung.
Wie schnell ? UART ist relaxter, weil ein Buffer mehr vorhanden ist. Das 
Handling ist einfacher.

Der SPI Slave ist beschissen. Der muss extrem schnell reagieren koennen.
Master Slave bedeutet, der eine bleibt der Master. Im Falle von SPI, 
gibt der Master den Clock vor. Wie weiss der, dass der Slave gelesen & 
geschrieben hat ? Eine Handshake Leitung ?
Gast
> Der SPI Slave ist beschissen.

Kommt wohl auf den konkreten Chip an.

> ich möchte mehrere Module miteinander verbinden

Eine direkt UART Verbindung entfällt dann. Aber mit RS485 Treibern 
kannst du einen Bus bauen. Die Frage ist, ob du den zusätzlichen Aufwand 
treiben willst.

I2C und SPI sind schon ohne zusätzliche IC's bus tauglich.

SPI ist einfacher zu programmieren, finde ich. Benötigt jedoch mehr 
Leitungen.
(Firma: Vescomp)
Jim M. schrieb:
> Dann hast Du entweder nur sehr langsamen Takt oder nur den SPI Master
> programmiert. SPI Slave ist aufwändiger weil der innerhalb definierter
> Zeit reagieren muss.

 Wer sagt das ?

 SPI ist schneller und zuverlässiger als UART - bei kurzen Leitungen.
 Wenn man weiss wie, ist 1 Byte overhead nicht zu merken.

Allerdings:
 a) Pro Modul eine SS-Leitung zusätzlich.
 b) Slave kann von alleine nichts melden.

 Aber bei 8Mb kann man die Module ziemlich schnell abfragen, oder ?
Stefan U. schrieb:
> Eine direkt UART Verbindung entfällt dann.

Eine direkte (=simple) UART-Verbindung geht in dem Fall auch, wenn diese 
entweder mit Open-Drain Ausgängen realisiert wird, oder die Slaves 
jeweils ihren Ausgangstreiber nur beim Senden einschalten. Ein Pull-Up, 
um den Bus im ungetriebenen Zustand auf definiertes High zu ziehen, muss 
dann ggf. natürlich vorhanden sein, nur nicht so klein, wie bei OD.
Dann reicht für den gesamten "Bus" auch nur eine einzige, gemeinsame 
Leitung für Tx und Rx.
Gast
Thomas E. schrieb:
> oder die Slaves
> jeweils ihren Ausgangstreiber nur beim Senden einschalten.
Das muss man auch erst mal synchronisiert bekommen....

Man könnte sich beim TokenRing was abschauen.

Ich wills mal positiv formulieren:
Wenn der Ring läuft, hat man die Gewähr, dass alle Partner "wach" sind.
U. C. schrieb:
> Das muss man auch erst mal synchronisiert bekommen....

Der "Kommunikus" kat ja schon im Eingangspost erwähnt, daß die Slaves 
jeweils strikt nur nach Anforderung durch den (vmtl. einzigen) Master 
antworten - da sehe ich eigentlich kein Problem, weil ja immer nur einer 
auf dem Bus quatschen kann und keiner unaufgefordert seinen Senf dazu 
gibt.
Gast
>SPI Slave und Atxmega ist nicht beschissen :-)
>Das Stichwort lautet dabei DMA, super geeignet dafür.
Nö. Auch mit DMA erlaubt dieser uC (wegen des fehlenden SPI-WR-Buffers) 
keinen ununterbrochenen Datenfluss!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.