Forum: Mikrocontroller und Digitale Elektronik Serielles Interface


von Thomas Winkelmann (Gast)


Lesenswert?

Ich möchte eine Schaltkarte an einen AVR anschliessen. Da diese 
Schaltkarte etwa 2 Meter entfernt vom AVR angebracht werden muss, suche 
ich eine einfache Art der Anbindung... also ein serielles Interface, um 
nicht dutzende Leitungen zwischen beiden Verlegen zu müssen. Der AVR ist 
ein Mega8. Gibt es da bei SPI, TWI oder uart irgendwelche Probleme?
Welches wäre das zu bevorzugende? SPI hätte den Vorteil das ich dort 
einfach seriell ladende Schieberegister einsetzen könnte.
Danke für eure Hilfen, frohe Weihnachten schonmal
Grüsse Thomas

von Falk (Gast)


Lesenswert?

Was soll denn an Daten über die Verbindung gehen? Ist mit 
Potentialdifferenzen zu rechnen?

MfG
Falk

von marc989 (Gast)


Lesenswert?

Normalerweise hätte ich I2C vorgeschlagen, da es dort ohne großen 
Aufwand schon IO-expander gibt über die man Ports setzen und lesen kann. 
Nur 2 Meter ist natürlich schon recht viel, man müsste mal in die 
Spezifikationen schauen, mit welchen Taktraten man I2C bei solchen 
Kabellängen betreiben darf.

Sonst ist villeicht CAN auch eine Alternative.

Marc

von Michael (Gast)


Lesenswert?

RS232 (UART) wäre m.E. die einfachste Lösung: transparent und kompatibel 
zu anderen Geräten.

von Thomas Winkelmann (Gast)


Lesenswert?

Datenrate ist schwer zu sagen...ich schätze so etwa auf 1-10kBit/s. 
Tendenziell eher weniger als mehr. Zu den Potentialdifferenzen: naja es 
werden beide Karten seperat versorgt. Beide werden jedoch mit 5V 
agieren, also sollten diese Differenzen vernachlässigbar sein. Beide 5V 
Spannungen werden über Konstant-Spannungsregler aus 230V generiert. Ich 
schwanke derzeit zwischen SPI und TWI. Die UART wäre eher zweite Wahl, 
da zusätzliche Komponenten benötigt würden und auf die Baudrate wieder 
stimmen muss.

von fieser Rahul (auch Oskar genannt) (Gast)


Lesenswert?

Was spricht denn gegen eine "langsame" SPI?
Ob nun asynchrone Schnittstelle oder synchron. Das sollte ziemlich egal 
sein.
Wenn mit EMV-Schnutz zu rechnen ist, symmetriert man das Signal einfach.
Man kann dem Ding dann auch noch eine Rückleitung verpassen, auf der die 
gesendeten Signale zurückkommen.

Oder gibt es da ein Problem, das ich nicht sehe?
Das Schieberegister wurde vom Threadstarter ja selber schon 
vorgeschlagen.

von antworter (Gast)


Lesenswert?

> Die UART wäre eher zweite Wahl, da zusätzliche Komponenten benötigt würden

Wenn ich zwischen den Zeilen richtig gelesen habe, stammt die 
Schaltkarte ebenfalls von Dir (zu der hast Du wenig geschrieben) - das 
folgere ich mal aus der Tatsache, daß Du zwischen verschiedenen 
Schnittstellen wählen kannst...

Wenn dem so ist, kannst Du die UART ohne weitere Bauteile benutzen. Die 
MAX232-Konverter werden meist nur benutzt, damit die UART zu den 
PC-RS232-Spannungswerten kompatibel ist (höhere Spannung, auch negativ).

Tatsächlich kannst Du aber bei zwei Mikrocontrollern die UART direkt 
verbinden.

...my 2cent:

Natürlich hast Du bei der UART und der SPI den Vorteil des 
unidirektionalen Betriebs - kannst also die jeweiligen Leitungen z.B. 
niederohmig auslegen und so mit wenigen (Treiber-)Transistoren die 
Reichweite einfach erhöhen.

Bei der TWI/I2C ginge das nicht so einfach.

von Falk (Gast)


Lesenswert?

@fieser Rahul (auch Oskar genannt) (Gast)

> Was spricht denn gegen eine "langsame" SPI?

Du8 kannst zwar die TaktFREQUENZ runtersetzten, nciht aber die 
ANSTIEGSZEIT der IO Pins. Und das ist es, was EMV und andere Problem 
macht.

> Oder gibt es da ein Problem, das ich nicht sehe?

Ja, siehe oben.

> Das Schieberegister wurde vom Threadstarter ja selber schon
> vorgeschlagen.Antwort

Das geht schon, wenn man ein paar Kleinigkeiten beachtet.

Beitrag "8 MHz SPI über 75cm Flachbandkabel?"

@antworter

> Wenn dem so ist, kannst Du die UART ohne weitere Bauteile benutzen. Die
> MAX232-Konverter werden meist nur benutzt, damit die UART zu den
> PC-RS232-Spannungswerten kompatibel ist (höhere Spannung, auch negativ).

Dann isses aber elektrisch gesehen das gleiche wie SPI, nit nahezu den 
gleichen Problemen.

> Tatsächlich kannst Du aber bei zwei Mikrocontrollern die UART direkt
> verbinden.

Yep.

> unidirektionalen Betriebs - kannst also die jeweiligen Leitungen z.B.
> niederohmig auslegen und so mit wenigen (Treiber-)Transistoren die
> Reichweite einfach erhöhen.

AHHH!!!! STOP.

Die normalen IO Pins haben mehr als genug Power, um locker 10m Kabel zu 
überbrücken. Eigentlich haben sie für sowas viel zu viel 
Anstiegsgeschwindigkeit, das macht eher Probleme als dass es sie 
verhindert.

MfG
Falk

von antworter (Gast)


Lesenswert?

@falk

10m kabel direkt an einen uC-Pin hängen ?

würde ich nicht machen (stattliche antenne, beträchtliche kapazität...)

von Falk (Gast)


Lesenswert?

@antworter

Kleines Mädchen? ;-)

Bis du EMV-Fachnman?
Reden wir hier über ein professionelles Massenprodukt, das härteste 
EMV-Normen erfüllen muss?
Die Kapazität bring den uC nicht um. Serienterminierung dran und gut. 
Dan sinds fast astreine Signale. Wers nicht glaubt solls ausprobieren. 
Aber bitte entweder mit Flachbandkabel mit Masseader oder Twisted Pair 
mit halbwegs 100 Ohm.
Das passt schon.

MfG
Falk

von antworter (Gast)


Lesenswert?

@falk:

Keulenschwingender Höhlenbewohner ? ;-)

>...solls ausprobieren. Aber bitte entweder
> Flachbandkabel mit Masseader oder
> Twisted Pair mit halbwegs 100 Ohm...

Erst allgemein zu sagen, daß es geht, um dann die Anwendung/Realisierung 
drastisch einzuschränken hilft Thomas Winkelmann sicher nicht weiter.

Meine Lösung kommt auch mit Klingeldraht klar, kostet ca 30cent mehr und 
sorgt für eine entspanntere Anwendung.

....man muß kein EMV-Profi sein (was ich nicht bin), um den Sinn eines 
kleinen Leitungstreibers bei 10m Kabellänge einzusehen

von Olaf (Gast)


Lesenswert?

> Zu den Potentialdifferenzen: naja es
> werden beide Karten seperat versorgt. Beide werden jedoch mit 5V
> agieren, also sollten diese Differenzen vernachlässigbar sein. Beide 5V
> Spannungen werden über Konstant-Spannungsregler aus 230V generiert.

In dem Falle hast du gute Chancen das du Potentialdifferenzen hast. Je 
nach Qualtaet deines Trafos oder Schaltnetzteil. Wenn du eine 
Steckverbindung zwischen beiden Geraeten hast waere es von Vorteil wenn 
Masse sich zuerst verbindet. Vielleicht kannst du ja ein USB oder SATA 
Kabel nehmen.

> Ich
> schwanke derzeit zwischen SPI und TWI. Die UART wäre eher zweite Wahl,
> da zusätzliche Komponenten benötigt würden und auf die Baudrate wieder
> stimmen muss.

Die Wahl des Busprotokolls ist nicht so entscheidend. Wichtig sind die 
Bustreiber. Ich wuerde dir mindestens einen MAX232 empfehlen. Den kannst 
du aber natuerlich auch fuer SPI verwenden wenn du den Takt niedrig 
genug haelst. Lediglich I2C/TWI ist schlecht weil das Protokoll 
bidirectional ist.
Da du aber auf beiden Seiten sowieso eine eigene Stromversorgung hast 
ist es vermutlich einfacher und billiger eine Stromschleife mit 
Optokoppler zu trennen.

Alles andere kann lange funktionieren, muss es aber nicht.

Olaf

von Thomas Winkelmann (Gast)


Lesenswert?

Also bevor ich den Überblick verliere: Falk was wäre dein Vorschlag? 
Sorry wenn ich das so sage, aber du hast jetzt irgendwie sowohl SPI als 
auch UART kritisiert...demnach würdest du TWI nehmen? Oder wie darf ich 
das verstehen? Soweit mir bekannt ist sendet TWI mit 100,400 kBit/s oder 
noch irgendwie nem höheren Wert, was viel zu hoch wäre auch wenn ich für 
Adressierung und Ack dort etwas mehr veranschlagen müsste. Sind die 
Anstiegszeiten bei einem SPI im kHz Bereich wirklich so gravierend? rein 
Theoretisch könnte ich diese in einem uC auf der Slaveplatine doch auch 
x-fach überabtasten. Das Kabel sollte übrigens kein Flachbandkabel 
sein...irgendwas rundes 2,4 oder x adriges halt, je nach Bus. Ich habe 
nur keine Vorstellung was man sich mit soeiner "2m-Antenne" einfängt.

von Falk (Gast)


Lesenswert?

@ antworter

> Keulenschwingender Höhlenbewohner ? ;-)

Manchmal. ;-)

> Erst allgemein zu sagen, daß es geht, um dann die Anwendung/Realisierung
> drastisch einzuschränken hilft Thomas Winkelmann sicher nicht weiter.

Was heiss denn hier drastisch? Nur weils nicht mit ner rostigen Kette 
funktioniert?

> Meine Lösung kommt auch mit Klingeldraht klar, kostet ca 30cent mehr und
> sorgt für eine entspanntere Anwendung.

Warum wenns auch ohne geht?

> ....man muß kein EMV-Profi sein (was ich nicht bin), um den Sinn eines
> kleinen Leitungstreibers bei 10m Kabellänge einzusehen

Was willst du denn mit nochmehr Leistung?

MFG
Falk

von Falk (Gast)


Lesenswert?

@ Thomas Winkelmann

> Also bevor ich den Überblick verliere: Falk was wäre dein Vorschlag?
> Sorry wenn ich das so sage, aber du hast jetzt irgendwie sowohl SPI als
> auch UART kritisiert...demnach würdest du TWI nehmen? Oder wie darf ich

Nein, ich habe mich zu UART (also RS232 mit MAX232) gar nicht geäussert.
;-)
Nun, diese Variante geht auf jeden Fall.

SPI kann auch gehen, wenn man ein paar kleine Randbedingungen beachtet.

> das verstehen? Soweit mir bekannt ist sendet TWI mit 100,400 kBit/s oder
> noch irgendwie nem höheren Wert, was viel zu hoch wäre auch wenn ich für
> Adressierung und Ack dort etwas mehr veranschlagen müsste. Sind die
> Anstiegszeiten bei einem SPI im kHz Bereich wirklich so gravierend? rein

Sie sind genausoschnell wie bei 1 MHz, die IOs werden deshalb nicht 
langsamer. Und wie bereits in anderen Threads vorgerechnet habe, gibt es 
bei ca. 10ns Anstiegszeit (und das machen die IOs) bei ab. ca. 30cm 
Probleme mit Reflexionen. Also braucht man ne Serienterminierung.

> Theoretisch könnte ich diese in einem uC auf der Slaveplatine doch auch
> x-fach überabtasten. Das Kabel sollte übrigens kein Flachbandkabel

Du brauchst das Fahrrad nicht neu zu erfinden. Das Überabtasten macht 
bereits der UART.
Nimm MAX232 und alles ist in Butter.

MFG
Falk

P.S. I2C/TWI geht auch, ist aber vom Protokoll aufwendiger.

von Thomas Winkelmann (Gast)


Lesenswert?

okey...dann werd ich die uart wohl mal nehmen :)
i2c hätte dann doch ab 30cm die gleichen reflektionen oder nicht?

von Falk (Gast)


Lesenswert?

> i2c hätte dann doch ab 30cm die gleichen reflektionen oder nicht?

Jain. Die LOW-HIGH Flanke wird ja durch den Pull-up Widerstand 
vollzogen, das ist recht langsam. Die HIGH-LOW Flanke machen die Open 
Drain/Collecor Ausgänge der Teilnehmer. Idealerweise sind die auch nicht 
superschnell. Allerdings ist I2C (wenn es spezifikationsgemäss aufgebaut 
ist) relativ tolerant gegenüber kurzen Pulsen (50ns), die sollte der 
Eingangsfilter schlucken.

MFG
Falk

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Nimm doch das UART, dessen TXD-Signal Du über eine pnp-npn 
Transistorserie pufferst und auf der Karte baust Du einen 
PullUp-Widerstand nach 5V, sagen wir 270 Ohm. Somit hast Du kaum 
Bauelementeaufwand, Deine Leitung drückt entsprechend Strom, ist 
niederohmig und schnell. Du hast 1 Leitung + Masse, kann Klingeldraht 
sein. An den PullUp hängst Du noch einen Serienwiderstand von 2-4 kOhm 
Richtung RXD des empfangenden UARTs, um vor Spannungsspitzen geschützt 
zu sein, die eventuell in das Kabel induziert werden. Auf die Weise 
überbrücken wir hier 30 Meter fehlerfrei mit 19200 Baud. Mit 56 kBaud 
haben wir das Ganze getestet, ebenfalls keine Probleme.

von Michael (Gast)


Lesenswert?

Laßt Thomas doch ganz stinknormale RS232-Treiber nehmen, vielleicht noch 
mit ESD-festem Aufpreis, aber ohne 10ns hier, 2k-Pullup dort, 
Klingeldraht und Fahrradkette. Wozu das ganze Gemurkse ?
Und wenn dann bei 2m Übertragungsstrecke all die Fehlerquellen 
auftauchen, die hier an die Wand gemalt wurden, kann er immer noch auf 
WLAN, Glasfiber oder Richtfunk ausweichen: für 2m wohlgemerkt !

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Gemurkse? Hängt wohl vom Aufbau ab. Aber Glasfiber ist gar nicht soo 
dumm, TOSLINK wäre noch ´ne Möglichkeit: TOTX173 -> LWL -> TORX173.

von Michael (Gast)


Lesenswert?

> , TOSLINK wäre noch ´ne Möglichkeit: TOTX173 -> LWL -> TORX173.

Obwohl damit ja noch nicht da gravierende Problem des Netzanschlusses 
gelöst wäre. Da empfehle ich dreifach geschirmte Netzleitung, wobei der 
mittlere Schirm an die Fundamenterde angeschlossen wird :-)

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
Noch kein Account? Hier anmelden.