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
Nimm einen anderen Mikrocontroller. Es gibt welche mit bis zu 8 UARTs. Wo ist das Problem? fchk
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
Solange Du nur senden musst, kannst Du das auch mit 2 Pins zu Fuss machen.
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? ;-)
Mit der vorhandenen seriellen Schnittstelle einen LIN-Bus aufmachen...
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
Marten Morten schrieb: > * Maxim MAX14830 (wenn man sich traut Maxim-Bauteile zu verwenden) Habe ich da irgendwas verpasst?
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
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ü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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.