Forum: Mikrocontroller und Digitale Elektronik Frage zu USART & I2C


von System (Gast)


Lesenswert?

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!

von spontan (Gast)


Lesenswert?

>                   |---- 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.

von System (Gast)


Lesenswert?

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! :)

von Blackbird (Gast)


Lesenswert?

>> 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

von Blackbird (Gast)


Lesenswert?

>> 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

von System (Gast)


Lesenswert?

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!

von m.n. (Gast)


Lesenswert?

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.

von Cyblord -. (cyblord)


Lesenswert?

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