Hallo
Da ich eher aus der Softwareentwicklung komme, hier eine für euch wohl
ziemlich einfache Frage.
Ich habe bereits viel Erfahrung gesammelt was UART und I2C angeht.
Bisher war die Kommunikation allerdings auf PC <-> Mikrocontroller oder
Mikrocontroller <-> Mikrocontroller beschränkt.
Im Rahmen eines kleinen Projektes will ich nun aber einen Master haben,
welcher mit mehreren Mikrocontrollern kommuniziert. Nun die Frage:
Ist es möglich, mehrere Mikrocontroller parallel an eine UART
Schnittstelle anzuschliessen?
Sprich:
|---- Slave
Master --- UART ---|---- Slave
|---- Slave
Ist das möglich? Gibt es da etwas zu beachten? Habe mal etwas von
Abschlusswiderständen gehört, bin mir aber über deren nutzen nicht so
sicher.
Gleiche Frage zu I2C. Wie sieht es dort aus? Ist dort ein Master,
mehrere Slaves möglich? Was gibt es hierbei zu beachten?
Ich danke für eure hilfe und sorry für die vielleicht etwas unnötige
Frage! Ich weiss, man kann sich auch selbst im Internet informieren,
allerdings war es für mich nicht einfach die dort geschriebenen
Informationen richtig zu interpretieren.
Gruss!
> |---- Slave >Master --- UART ---|---- Slave > |---- Slave Was Du suchst ist eine Bus-Struktur. UART ist kein Bus, sondern nur ein Sender und Empfänger. Die Art der Übertragung der Signale (z.B. Can oder RS485) macht ihn zum Bus. I2C ist ein Bus. Also einsteigen, egal wo.
spontan schrieb: > Was Du suchst ist eine Bus-Struktur. UART ist kein Bus, sondern nur ein > Sender und Empfänger. Die Art der Übertragung der Signale (z.B. Can oder > RS485) macht ihn zum Bus. Okay, so lernt man. Schlussendlich beantwortet es aber meine Frage leider überhaupt nicht. Wie bereits erwähnt, habe ich bereits diverse Kommunikationen realisiert von Mikrocontroller zu Mikrocontroller. Aber so, damit ich meine Frage vielleicht besser formulieren kann: Wie nennt man denn die Art der Kommunikation, wenn man zwei Mikrocontroller miteinander verbindet, das TX des einen UART auf das RX des anderen und umgekehrt. Wie würde man denn sowas denn korrekt nennen? Dann weiss ich es für das nächste mal ;) Vielen dank für jeden weiteren Tipp! :)
>> Ist es möglich, mehrere Mikrocontroller parallel an eine UART >> Schnittstelle anzuschliessen? >> Sprich: >> >> |---- Slave >> Master --- UART ---|---- Slave >> |---- Slave >> Was ist bei Dir jetzt "eine UART Schnittstelle"? In Deinem Bild fehlt vor jedem Slave die UART, es sei denn, Du verwendest eine Software-UART für jeden Slave. Ohne Schnittstellen-Konverter (TTL zu RS232-Pegel und zurück) gelten die Regeln für das Zusammenschalten von I/O-Pins (siehe Datenblatt des benutzten µC). Die Kommunikation selbst (das "Protokoll") muß in diesem Fall das gleichzeitige Senden der Slaves berücksichtigen oder unterbinden. Bei I2C gibt es dafür eine INT-Leitung, die den Slaves es ermöglicht, von sich aus Daten zu senden. Blackbird
>> Wie nennt man denn die Art der Kommunikation, wenn man zwei >> Mikrocontroller miteinander verbindet, das TX des einen UART auf das RX >> des anderen und umgekehrt. Wie würde man denn sowas denn korrekt nennen? Steht auch im Datenblatt des von Dir verwendeten µC. Meist wird es "Full Duplex Operation", "Asynchronous Communication Mode", oder ähnlich benannt. Wenn man es ganz genau nimmt, hat die Art der Kommunikation nicht viel mit der Schnittstelle zu tun. Meistens wird das "serielle Komminikation" oder "RS232" genannt. Egal ob das über eine UART geht oder nicht und ob da TTL-Pegel oder andere Pegel verwendet werden (z.B.: +-3V ... +-10V). Blackbird
Blackbird schrieb: > Steht auch im Datenblatt des von Dir verwendeten µC. > Meist wird es "Full Duplex Operation", "Asynchronous Communication > Mode", oder ähnlich benannt. > Wenn man es ganz genau nimmt, hat die Art der Kommunikation nicht viel > mit der Schnittstelle zu tun. Vielen dank für die Aufklärung! So weiss ich das ganze für das nächste mal. Dann werde ich mir das Datenblatt des von mir benutzten PIC's noch einmal anschauen und etwas danach suchen. Falls dann noch fragen auftauchen, werde ich mich wieder melden :) Erstmal ein grosses Danke!
System schrieb: > Ist es möglich, mehrere Mikrocontroller parallel an eine UART > Schnittstelle anzuschliessen? Ja, kein Problem. Wichtig ist, dass die Signale über einen passenden Treiber-Baustein entkoppelt werden, um sich gegenseitig nicht zu blockieren. Man kann Duplex- oder Halbduplexübertragung verwenden, wobei Letztere weniger Leitungen benötigt. Der Bus selber kann symmetrisch mit RS485-Treiber oder asymmetrische z.B. mit CAN-Bus-Treibern aufgebaut werden. Auch RS232-Treiber funktionieren, sofern alle TX-Signale über Dioden entkoppelt werden. Sofern nur ein Master vorhanden ist, ist die Sache recht einfach. Nur er darf adressieren, wobei das Protokoll frei gewählt werden kann. Bei µCs sehr günstig ist der Multiprozessor-Modus, bei dem das 9.Bit entscheidet, ob eine Adresse oder ein Datum übertragen wird. Ein bißchen einlesen in das Thema mußt Du Dich allerdings doch. Solbald die Entfernung zwischen den einzelenen µCs einige zig-Zentimeter übersteigt, ist der IIC-Bus weniger geeignet und hat auch den Nachteil, unter Umständen hängen zu bleiben.
Einen Bus via UART zu machen ist kein Problem. Da können alle Teilnehmer einfach parallel dran. Open-Collector bietet sich natürlich an. Gibts auch in kommerziellen Produkten (vgl. z.B. Multiplex Sensorbus für RC-Fernsteuerungen). Man muss sich halt ein entsprechendes Protokoll ausdenken. gruß cyblord
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.