Forum: Mikrocontroller und Digitale Elektronik Gibt es ICs für mehrere UART Teilnehmer?


von Peter Pan (Gast)


Lesenswert?

Guten Morgen zusammen,

ich habe folgendes Problem:

Mein Mikrocontroller hat nur 1X UART, aber ich habe noch 2 Module die 
über UART mit dem Controller kommunizieren müssen. Kennt ihr fertige 
ICs, die für mein Problem geeignet wären?

MfG

von fchk (Gast)


Lesenswert?

Nimm einen anderen Mikrocontroller. Es gibt welche mit bis zu 8 UARTs.

Wo ist das Problem?

fchk

von Peter Pan (Gast)


Lesenswert?

fchk schrieb:
> Nimm einen anderen Mikrocontroller. Es gibt welche mit bis zu 8
> UARTs.
>
> Wo ist das Problem?
>
> fchk

Ich kann leider keinen anderen nehmen. Der ist im Projekt einfach 
verankert.

MfG

von Johann Klammer (Gast)


Lesenswert?

RS232 daisy chaining oder shared bus(RS485 SLLA070C).

von Stephan (Gast)


Lesenswert?

Solange Du nur senden musst, kannst Du das auch mit 2 Pins zu Fuss 
machen.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Da gibts mehrere Möglichkeiten:
* Du kannst per Multiplexer den einzigen UART Port auf verschiedene 
Teilnehmer schalten. Nachteil: Nur ein UART Kunde kann gleichzeitig 
bedient werden.

* Du kannst Soft UARTs auf dem MC implementieren. Etwas anspruchsvoller, 
aber dann ist jeder Teilnehmer simultan erreichbar.

Sicher gibts noch mehr. Aber wer die Planung verpeilt, ist selber 
schuld.

von Stephan (Gast)


Lesenswert?

Peter Pan schrieb:
> Ich kann leider keinen anderen nehmen. Der ist im Projekt einfach
> verankert.

Dann hat da Jemand völlig daneben geplant. Entweder bei der MCU oder bei 
der später dazu gekommenen Peripherie.  Wie gesagt RS485 geht noch.

von m.n. (Gast)


Lesenswert?

Das Multiprozessorprotokoll verwenden und die TX-Leitungen der 
Sub-Module per Dioden entkopplen. Alternativ im Halbduplex CAN-Treiber 
verwenden.
RS485 ist hier unnötig.

von Wolfgang (Gast)


Lesenswert?

Peter Pan schrieb:
> Kennt ihr fertige ICs, die für mein Problem geeignet wären?

Und dann. Wie geht es vom IC aus weiter?
Um was für Datenströme geht es (Datenrichtung, Datenrate, 
Übertragungsgeschwindigkeit)?

von Marco (Gast)


Lesenswert?


von P.S. (Gast)


Lesenswert?

Google mal nach "spi i2c uart bridge".

von chris (Gast)


Lesenswert?

Matthias S. schrieb:
> Du kannst per Multiplexer den einzigen UART Port auf verschiedene
> Teilnehmer schalten. Nachteil: Nur ein UART Kunde kann gleichzeitig
> bedient werden.

Naja, ein Single-Core Mikrocontroller kann die eingegangenen Daten 
sowieso nur nacheinander verarbeiten, also dürfte das wahrscheinlich 
nicht stören.

von A. S. (Gast)


Lesenswert?

chris schrieb:
> Naja, ein Single-Core Mikrocontroller kann die eingegangenen Daten
> sowieso nur nacheinander verarbeiten,

Bei 5 uarts kann ein uC ohne weiteres alle 5 mit back-to-back Daten auf 
RX und TX befeuern.

von A. S. (Gast)


Lesenswert?

Lösungen gibt es viele. Von Multiplex über Bus, von externen UART über 
Kommunikationsprozessor.

Ohne Datenmenge, Art der Daten (Halbduplex, voll? Synchron, asynchron?) 
keine sinnvollen Lösungen.

Zum Beispiel kannst Du einen passenden uC mit 4Uarts nehmen und 
dazwischen schalten.

von H. (Gast)


Lesenswert?

Senden vom Master an beide Module gleichzeitig, die Empfangsrichtung 
kann man mit zwei Dioden entkoppeln. Dürfen nur nicht beide Module 
gleichzeitig senden, dann crasht es.

von Marten Morten (Gast)


Lesenswert?

Peter Pan schrieb:
> Ich kann leider keinen anderen nehmen. Der ist im Projekt einfach
> verankert.

Dann wird es halt teurer und komplizierter.

Peter Pan schrieb:
> Mein Mikrocontroller hat nur 1X UART, aber ich habe noch 2 Module die
> über UART mit dem Controller kommunizieren müssen. Kennt ihr fertige
> ICs, die für mein Problem geeignet wären?

* NXP SC16IS752 / SC16IS762

* Maxim MAX14830 (wenn man sich traut Maxim-Bauteile zu verwenden)

* Exar / MaxLinear XR20M1172

* Pericom / Diodes Inc. PI7C9X762CZHE

* Zilog  IXYS  Littelfuse ZDU0210RJX

* Ein weiterer Mikrocontroller, zusätzlich zum vorhandenen, der mit dem 
vorhandenen Mikrocontroller kommuniziert und die fehlenden UARTs hat.

* Alternativ die Module ändern, dass sie über einen anderen Bus (I²C, 
SPI, ...) mit dem Mikrocontroller kommunizieren.

von Bonzo (Gast)


Lesenswert?

m.n. schrieb:
> Das Multiprozessorprotokoll verwenden und die TX-Leitungen der
> Sub-Module per Dioden entkopplen. Alternativ im Halbduplex CAN-Treiber
> verwenden.

Das hätte ich gerne etwas näher ausgeführt. (?)

von m.n. (Gast)


Lesenswert?

Aktuelle µCs erlauben beim UART die Übertragung eines 9. Bits, welches, 
wenn es gesetzt ist, beim Empfänger einen Interrupt auslöst. Das 
übertragene Byte wird als Adresse betrachtet und mit der eigenen Adresse 
verglichen. Bei Übereinstimmung betrachtet sich der betreffende µC als 
adressiert, läßt seinen RX weiter auf Empfang und darf auch senden. 
Andernfalls wird der Empfang wieder stillgelegt, bis eine neue Adresse 
erkannt wird.

Damit die TX-Leitungen einer V24-Schnittstelle nicht gegeneinander 
arbeiten, entkoppelt man sie mit einer Diode und parallel einem 
Widerstand (3k3). Der aktive Pegel wird über die Diode voll 
weitergeleitet, ein passiver Pegel ereugt beim Empfänger eine negative 
Spannung, die durch den aktiven Pegel eines anderen TX aber übersteuert 
werden kann. Somit ist kein Umschalter erforderlich.

CAN-Treiber können von Hause aus nicht gegeneinander treiben, sodaß hier 
das dominierende Signal ausschlaggebend ist. Einzelne Treiber arbeiten 
nur halbduplex. Nimmt man separate Treiber für Senden/Empfangen geht 
auch vollduplex Betrieb.

Zur Adressierung braucht man nicht unbedingt das 
Multiprozessorprotokoll. Ein Protokoll, was nur Großbuchstaben und 
Ziffern als Daten verwendet, läßt sich ebenfalls zur Adressierung von 
Sub-Modulen verwenden. Als Adressen dienen dann Kleinbuchstaben 'a', 
'b', 'c', ...
Damit (Entkopplung mit Diode+Widerstand wie oben beschrieben) habe ich 
in den 80ern bis zu fünf Meßgeräte an einem PC betrieben. 19200 Baud, 
einige Meter Entfernung, keine Probleme.

War das jetzt nah genug? ;-)

von Frank O. (fop)


Lesenswert?

Mit der vorhandenen seriellen Schnittstelle einen LIN-Bus aufmachen...

von Hello (Gast)


Lesenswert?

Matthias S. schrieb:
> * Du kannst per Multiplexer den einzigen UART Port auf verschiedene
> Teilnehmer schalten. Nachteil: Nur ein UART Kunde kann gleichzeitig
> bedient werden.

Kannst du auch einen digitalen Multiplexer empfehlen? Würde auch ein 
analoger gehen? Frage nur, weil ich das noch nie gemacht habe und auch 
daran interessiert habe.

MfG

von Rudolph R. (rudolph)


Lesenswert?

Marten Morten schrieb:
> * Maxim MAX14830 (wenn man sich traut Maxim-Bauteile zu verwenden)

Habe ich da irgendwas verpasst?

von Markus M. (adrock)


Lesenswert?

Rudolph R. schrieb:
> Marten Morten schrieb:
>> * Maxim MAX14830 (wenn man sich traut Maxim-Bauteile zu verwenden)
>
> Habe ich da irgendwas verpasst?

Der MAX ist ein sehr geiler Chip von den Features her wie ich das sehe. 
Allerdings dürfte das Gehäuse (TQFN) nicht gerade leicht zu löten sein.

Problem bei Maxim ist wohl, dass sie ganz gerne mal Teile kurzfristig 
abkündigen. Bei einem einmaligen Bastelprojekt sicher kein Problem, bei 
einem Serienprodukt sehr ärgerlich.

: Bearbeitet durch User
von A. S. (Gast)


Lesenswert?

Hello schrieb:
> Würde auch ein
> analoger gehen? Frage nur, weil ich das noch nie gemacht habe und auch
> daran interessiert habe.

Auch bei Deinem Problem müsste man doch erst mal wissen, wie es 
aussieht.

In vielen fällen brauchst Du keinen oder er hilft nicht. Und ob ein 
analoger geht, hängt von Deinen Signalpfaden ab, die auch keiner kennt.

von Georg (Gast)


Lesenswert?

Peter Pan schrieb:
> Mein Mikrocontroller hat nur 1X UART, aber ich habe noch 2 Module die
> über UART mit dem Controller kommunizieren müssen

Hello schrieb:
> Kannst du auch einen digitalen Multiplexer empfehlen?

Info fehlt - ein digitaler Multiplexer ist nur sinnvoll, wenn es sich um 
Signale mit 3,3 oder 5 V handelt, bei echtem RS232C mit +-12 V wird er 
zerstört (die meisten analogen auch). Alternativ muss man an jedem 
Eingang einen RS232C-Empfänger verwenden.

Es kann auf diese Art sowieso nur jeweils ein Client eine Antwort 
senden, wenn das garantiert ist, braucht man auch keinen Multiplexer, 
sondern nur ein Oder-Gatter. Das kann im einfachsten Fall auch aus n 
Dioden bestehen.

Georg

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.