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
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
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.
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.
Das Multiprozessorprotokoll verwenden und die TX-Leitungen der
Sub-Module per Dioden entkopplen. Alternativ im Halbduplex CAN-Treiber
verwenden.
RS485 ist hier unnötig.
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)?
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.
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.
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.
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.
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.
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. (?)
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? ;-)
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
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.
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.
Peter Pan schrieb:> Mein Mikrocontroller hat nur 1X UART, aber ich habe noch 2 Module die> über UART mit dem Controller kommunizieren müssenHello 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