RS232-Transceiver

Moin!

In einem 19"-Baugruppenträger sollen AVR-Mikrocontroller auf mehreren Baugruppen (Eurokarten) per SPI über die Backplane miteinander kommunizieren (ein Master, mehrere Slaves). Es dürften so an die

200kBit/s netto an Daten anfallen...

Um eine möglichst fehlerarme Übertragung hinzubekommen, dachte ich daran, RS232-Pegel zu fahren. Für die Slaves bräuchte ich da ICs mit:

1 RS232-TX (MISO) _mit_output_enable_ 4 RS232-RX (Select, SCK, MOSI, Reset für ISP über Backplane wär nett)

Im MAX-Datenblatt

formatting link
finde ich ausschließlich 3-state RX. Jene wenigen ICs, die einen enable-Eingang für die TX haben, schalten damit bloß die Ladungspumpen aus, high-Z am TX-Ausgang gibts aber nicht.

Kennt vielleicht jemand was passendes von anderen Herstellern?

Oder ganz andere Ideen? UART in Punkt-zu-Punkt möchte ich nicht, da AVRs mit 4 UARTs (als Master) ansonsten etwas sehr oversized sind und I²C/TWI dürfte wegen des etwas arg großen Overheads durch die Adressierung schlappmachen... RS485 vielleicht? Da bräuchte ich dann zwar wieder ein Protokoll, aber wenigstens gibt die Bruttodatenrate das her.

Gruß, Michael.

Reply to
Michael Eggert
Loading thread data ...

Hallo,

wenn Du es möglichst fehlerarm bekommen willst bist Du mit differentieller Übertragung über je ein Leitungspärchen mit RS422 oder RS485 wesentlich besser bedient als mit den höheren Pegeln, dabei sparst Du auch noch die

+- 12 V Versorgung. Output Enable gibt es da auch, warum willst Du Dich da noch mit dem uralten RS232 rumschlagen?

Bye

Reply to
Uwe Hercksen

Und warum soll das nicht normal mit 5V gehen ? ECB-Bus und später VME-Bus hatten wohl höhere Geschwindigkeit. Und dabei oft nur TTL statt CMOS-Logik-Pegel. Wenn man nicht gerade 10 Slaves hat würde man wohl auch keinen Bustreiber wegen Strom brauchen.

MfG JRD

Reply to
Rafael Deliano

Moin!

Nunja, auch wenn die Übertragung differentiell stattfindet, so ist trotzdem die Backplane nicht symmetrisch. Will sagen: Die eine Leitung hat nen anderen Nachbarn als die andere. Insofern weiß ich nicht, ob dadurch soviel gewonnen ist...

Nunja, mit Halbduplex komme ich wohl nicht weit, da müsste ich ein recht aufwendiges Protokoll fahren, damit die Slaves unterscheiden können ob sie gerade vom Master angesprochen werden oder ob da ein anderer Slave mit Daten antwortet, die bloß so klingen. Also wäre ich schon mindestens bei 4-Draht (je 1 Paar Master->Slaves und Slaves->Master), damit die Slaves nur den Master hören. Da bin ich vom Aufwand nicht weit vom SPI entfernt, über den ich die AVRs auch noch im Rack programmieren könnte, ohne nen Bootloader einzubauen - sofern es denn funktionieren würde. SPI-über-485 kommt nicht in Frage, soviele Leitungen hab ich nicht frei...

Gruß, Michael.

Reply to
Michael Eggert

Hallo,

natürlich nimmt man für differentielle Übertragung direkt nebeneinanderliegende Leitungen, wenn möglich verdrillt. In der Praxis funktioniert das bestens.

Bye

Reply to
Uwe Hercksen

Was spricht gegen einen CAN-Bus? Da hättest Du sehr wenig zu tun, da vieles schon vom Controller übernommen würde. Debugging ist auch sehr einfach, da man nur eine neue Node mit PC-Interface anschließen muss.

Gruss, Florian

Reply to
Florian Schenk

Moin!

Nebeneinander können sie gern liegen, je einen anderen Nachbarn haben sie dann aber immernoch... Und verdrillen fällt schwer auf ner einseitigen Platine.

Gruß, Michael.

Reply to
Michael Eggert

Moin!

Hab noch nicht viel mit 19" gebaut und bin halt etwas vorsichtig... ISP am AVR geht ja auch übers SPI, hab die Bruttodatenrate gerade nicht im Kopf aber da heißt es immer, 20..30cm Flachbandkabel ist das allerhöchste Maximum - ohne Steckverbinder mittendrin und nur Punkt-zu-Punkt.

Gruß, Michael.

Reply to
Michael Eggert

Moin!

Hab ich noch nicht aktiv mit zu tun gehabt, scheint mir aber etwas sehr oversized dafür... Ich muss oft jedem Slave nur 1 Byte schicken oder abfragen, und wie ich dem Datenblatt des MCP2515 entnehme, kommen auf 1 einzelnes Byte glatt 44 Bit Overhead drauf... Da können selbst die 1MBit/s brutto des CAN sehr schnell knapp werden.

Gruß, Michael.

Reply to
Michael Eggert

Du könntest die einzelnen Signale komplementär wie bei rs485 übertragen. Das ist zwar relativ Hardwareaufwändig aber zuverlässig und schnell.

Die andere Möglichkeit währe die asynrone multiprozessorcominikation des AVR zu nutzen. Es kommt halt darauf an wie frei du bei der Software bist. Hier ist der Hardwareaufwand mit einem rs485 transciver sehr gering.

Als Treiber ginge ein 75176 oder etwas ähnliches von Maxim die stromsparender sind.

--
MFG Gernot
Reply to
Gernot Fink

Flachbandkabel ist ungünstiger als echte Leiterplatte weil die Isolation der Leitungen zueinander schlecht ist. Vgl. Floppy wo man GND und Signal abwechselt und damit doppelte Leitungszahl akzeptiert. 30cm ist ( ohne Terminierung ) auch auf Board mit 74HC Problem, aber bei vollen 74HC-Geschwindigkeiten d.h. 20-30 MHz.

Wenn man die Boards ohnehin neu layouted kann man

  • für Leitungen die mehr Last haben z.B. Clock 74HC-Bustreiber einbauen.
  • Optionale Terminierungen im Layout vorsehen: ( vgl für Beispiel Kabel auch
    formatting link
    Heft 9 S. 10 Bild 5 links ) * bei Ausgang zusätzlichen Serienwiderstand Der Innenwiderstand des Gates plus der Serienwiderstand des Gates sollte der Leitungsimpedanz entsprechen, die nominell etwa 120 Ohm wäre. Praktisch verwendet man als Serienwiderstand aber oft weniger, etwa 47 Ohm, weil die Schaltflanken sonst oft zu mau werden. * bei Eingang ein RC-Netzwerk z.B.:

-+- 5V | R1 | --+--- | C1 Kerko ca. 1nF | R2 | GND

Wenn die Signale sauber genug sind, braucht man die Bauteile ja später nicht bestücken bzw. kann den Serienwiderstand durch 0 Ohm ersetzen.

MfG JRD

Reply to
Rafael Deliano

Gerade für so etwas ist CAN mit seinen kurzen Paketen sehr gut geeignet. Die

44 Bit sind für Adresse (11 oder 27 Bit), CRC, Empfangsbestätigung und noch ein paar Sachen mehr, die Du sonst ohnhin in SOftware machen müßtest, wenn DU die gleiche Sicherheit haben wolltest. Glaube es einfach, daß sich die Leute bei Bosch Gedanken gemacht haben, und warum sonst würde CAN altuell millionenfach in Fahrzeugen und Industrieanlagen verbaut werden.

Noch ein Tip: Nimm den AT90CAN32/64/128. Der ist angenehmer zu programmieren und schneller als ein per SPI angebastelter Controller.

Mit freundlichen Grüßen

Frank-Christian Krügel

Reply to
Frank-Christian Kruegel

Moin!

SPI über 458 hatte ich ja schon angesprochen, das frisst mir aber zuviele Leitungen auf der Backplane - 10 inclusive Reset, und da hab ich noch nicht berücksichtigt, daß jedes Modul ja nen eigenen enable braucht.

Gruß, Michael.

Reply to
Michael Eggert

Hallo Frank,

nun ja, ich kenne ein paar Leute, die verdienen ihr Geld damit, dass sie die CAN-Probleme anderer lösen ;-)

Genau das ist es, CAN ist für sichere Kommunikation in einem ziemlich ekligen Umfeld erdacht und optimiert. 44 Bit Protokoll für 8 Bit Nutzdaten ist für eine Kommunikation unter ein paar Prozessoren in einem geschlossenen Rack einfach zu groß. Selbst in der KfZ branche kennt man "kleine Lösungen für weniger Sicherheit erfordernde Busse (LIN z.B.)

Der OP braucht entweder einfach SPI oder I2C. Die Pegel dürften bei den Datenraten und Leitungslängen problemlos passen.

Marte

Reply to
Marte Schwarz

Moin!

Also es handelt sich hier nicht um sicherheitsrelevante Systeme und wenn mal ein Status- oder Messwert eines der Module im Protokoll fehlt oder falsch ankommt, ist das kein Beinbruch. Es sollte nur nicht ständig vorkommen.

Weil die Leite 11 oder 27 Bit Adressraum brauchen? :-)

Es geht hier um gerade mal 3 Module, die von einem vierten (Master) gesteuert werden und bei Bedarf gleichzeitig Messwerte an einen am Master angeschlossenen PC senden...

Gruß, Michael.

Reply to
Michael Eggert

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.