Hallo, ich denke gerade über ein Modul nach, das Daten von an ihm angeschlossenen Geräten loggt und per übergeordnetem Gerät (Master) zugreifbar macht. Dieses Modul kann dann so mehrfach verwendet werden alle Geräte sollen über einen Bus mit dem Master kommunizieren können. Welches Bussystem würde sich für ein solches System am ehesten eignen, d.h. für Platinen, die gestapelt bzw. ganz eng gepackt sind? RS485? I2C? VG
Alle dürfen unsynchronisiert senden -> Multimaster -> CAN Viele Grüße, Stefan
-> ganz eng <- plus *> keine Geschwindigkeitsangabe <* UART Master Tx auf alle Slaves, Slave Tx als wired-and I2C SPI
Marcus H. schrieb: > -> ganz eng <- > > plus > > *> keine Geschwindigkeitsangabe <* > > UART Master Tx auf alle Slaves, Slave Tx als wired-and > I2C > SPI also mir reicht eine Geschwindigkeit von 115200 bauds (par seconde) d.h. alles Slave TX verbinden und jeweils ne Diode z.B. 1N4148 dazwischen knallen? VG
Sofern Du das Protokoll von "jeder Teilnehmer sendet, wann er Lust dazu hat" zu einem geordneten, von einem Master gesteuerten Verfahren abänderst, kannst Du auch I2C verwenden. Das benötigt zwei Leitungen, kann ziemlich viele Teilnehmer adressieren, und ist mit typisch* 400 kBit/sec auch etwas flotter. Da das Protokoll standardisiert ist, gibt es entsprechend viel Unterstützung sowohl auf der Hardwareseite (viele µCs haben direkte Hardwareunterstützung dafür eingebaut) als auch auf der Softwareseite. *) Daneben sind noch 100 kBit/sec und, sofern es die jeweiligen Bausteine unterstützen, auch noch deutlich höhere Datenraten möglich.
Rufus Τ. F. schrieb: > Sofern Du das Protokoll von "jeder Teilnehmer sendet, wann er Lust dazu > hat" zu einem geordneten, von einem Master gesteuerten Verfahren > abänderst, kannst Du auch I2C verwenden. Hallo, der Master soll in diesem Fall ein kleiner Linux Rechner sein z.B. so ein Beaglebone o.ä. d.h. ein Teilnehmer wird ungefragt nicht senden! VG
Birger Bus schrieb: > also mir reicht eine Geschwindigkeit von 115200 baud Dann würde ich Dir zu UART mit Multiprozessorprotokoll raten, was jeder aktuelle µC bieten sollte. Nur der Master darf jederzeit adressieren und senden und nur der angesprochene Slave darf antworten. Eine Diode zur Entkopplung der Slave-TX-Leitungen kann entfallen, wenn der Ausgang vom nicht aktiven Slave deaktiviert wird. Die Kommunikation per UART kann voll-duplex ablaufen. IIC wäre eine Option, wenn ein Teilnehmer nur darüber angesprochen werden kann. IIC ohne "besondere Maßnahmen" kann hängen bleiben. Die Kommunikation ist immer halb-duplex.
Birger Bus schrieb: > Marcus H. schrieb: > also mir reicht eine Geschwindigkeit von > 115200 bauds (par seconde) Je vois ce que vous avez fait là. "Baudots par seconde" lôl > d.h. alles Slave TX verbinden und jeweils ne Diode z.B. > 1N4148 dazwischen knallen? Klassisch, wenn Du nur push-pull-Ausgänge hast, dann alle Slave-TX per Diode zusammenschalten. Kathoden an TX, Anoden an Master-RX. Dann noch ein Pull-Up an den Master-RX. Ruhezustand bei TTL-RS232-UART ist 1. Der Wert des Pull-Ups ermittelt sich aus der Stromtragfähigkeit der Ausgänge, der Buskapazität und der gewünschten Geschwindigkeit. Also ein Kilo Ohm. ;) Bei vielen MCUs kannst Du GPIOs als Open-Drain schalten, dann erübrigen sich die Dioden. Und bitte nicht so laut knallen - Elektronik ist schüchtern...
:
Bearbeitet durch User
Birger Bus schrieb: > Hallo, der Master soll in diesem Fall ein kleiner Linux Rechner sein > z.B. so ein Beaglebone o.ä. > > d.h. ein Teilnehmer wird ungefragt nicht senden! Dann kannst Du I2C verwenden. Natürlich gehen auch andere Varianten, das ist keine Absolutheit. m.n. schrieb: > UART mit Multiprozessorprotokoll Kann halt nicht jede UART, so z.b. nicht die in normalen PCs verbauten UARTs und auch nicht die in USB-Seriell-Adaptern zu findenden. Ansonsten ist das ja durchaus schick. > Die Kommunikation per UART kann voll-duplex ablaufen. Ich sehe hier nicht wirklich, wie das mit einem Single-Master/Multiple-Slave-Protokoll sinnvoll verbunden werden kann.
Rufus Τ. F. schrieb: > Ich sehe hier nicht wirklich, wie das mit einem > Single-Master/Multiple-Slave-Protokoll sinnvoll verbunden werden kann. Ganz einfach: es können keine Kollisionen auftreten. Ein Slave kann schon antworten, während der Master noch neue Daten übermittelt. Rufus Τ. F. schrieb: > Kann halt nicht jede UART, so z.b. nicht die in normalen PCs verbauten > UARTs und auch nicht die in USB-Seriell-Adaptern zu findenden. Bei PCs hatte ich seinerzeit kleine Buchstaben 'a', 'b', ... als Adresse verwendet und die restliche Übertragung per Großbuchstaben oder im IHEX-Format. Bei korrekter Adressierung hat der Slave in der RX-ISR seine Adresse als Echo geschickt, wodurch schnell festzustellen war, wer alles am Bus hängt.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.