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