Ich habe ein Board, das ich entwerfen möchte, und es gibt 11 Geräte, mit denen nur über UART gesprochen werden kann . Ich bin auf eine Microchip uC-Chip-Produktpalette beschränkt und habe eine mit 5 UART-Ports gefunden. Ich habe mir eine Jumper-basierte Lösung ausgedacht, bei der der Benutzer, indem er die Verbindung über Jumper zu den 5 verfügbaren Ports herstellt, 5 der 11 Geräte auswählen kann. Ich habe nach einem Chip gesucht, der entweder UART, SPI oder I2C aufnimmt und mir ein paar zusätzliche UART-Ports gibt, aber ich bin zu kurz gekommen. Kann jemand eine Lösung oder ein Produkt vorschlagen, auf das er gestoßen ist?
Es ist nicht entscheidend, dass alle 11 Geräte eine Verbindung zum uC herstellen können (das wäre schön), aber es ist wichtig, dass diese Geräte für ein modulares Produkt auf der Platine sind. Ich möchte das Produkt jedoch benutzerfreundlicher gestalten, da die Jumper-basierte Lösung auf den ersten Blick etwas kompliziert ist, wie mir gesagt wurde.
BEARBEITEN
Okay, sorry, ich erkläre das Problem nicht richtig. Mit dieser Methode schränken Sie die Möglichkeiten des Benutzers ein. Angenommen, Sie verbinden Port a mit Gerät 1 und 2 und Port b mit Gerät 3 und 4 und so weiter ...
Aber was ist, wenn der Benutzer Gerät eins und zwei verwenden möchte? Dann schränkt das Produkt den Nutzer stark ein. Mit 5 Anschlussoptionen und 11 Auswahlmöglichkeiten für Geräte ergibt der Binomialkoeffizient 462 Kombinationen, aus denen der Benutzer wählen kann. Das ist übertrieben, ich suche nicht nach diesem Level. Aber mit der jumperbasierten Lösung kann Port a mit 9 der Geräte verbunden werden, während Port b mit 7 der Geräte verbunden werden kann, Port c mit 8 verbunden werden kann, Port d mit 7 verbunden werden kann und Port e mit 9 verbunden werden kann Mux-Schalter, die dazu benötigt werden, wären über dem Limit.
Gibt es eine andere Lösung, um dem Benutzer die Möglichkeit zu geben, (fast) jede Kombination der Geräte zu verwenden?
Ich habe darüber nachgedacht, zwei uC mit jeweils 5 UART-Ports zu verwenden, um 10 der Geräte anzuschließen, und dann eine viel kleinere Jumper-basierte Lösung für das letzte Gerät zu verwenden, aber diese Lösung ist für die Produktion zu kompliziert und teuer.
Gibt es Chips oder Konzepte, die die UART-Steuerung auf 11 Geräte erweitern?
Verwenden Sie einige UART-SPI-Brücken-ICs, wie:
Sie können so viele UARTs haben, wie Sie freie GPIO-Pins haben, die Sie als Chip-Select-Leitungen verwenden können (oder verwenden Sie einen Demux oder Decoder, und Sie können Größenordnungen mehr haben) - begrenzt nur durch Ihre UART-Baudrate im Vergleich zur maximalen Geschwindigkeit, die Sie ausführen können Ihr SPI.
Sie können analoge Schalt-ICs (analoge Multiplexer) verwenden, um manuelle Jumper zu ersetzen.
Wenn Sie 5 UART-Ports haben, können Sie 1 dieser Ports auf 8 gemultiplexte UART-Ports multiplexen. Sie müssen 8-Kanal-Switches wie DG4051E verwenden .
Ansteuern eines SIPO-Schieberegisters (z. B. 74hc595) von 2 GPIO-Pins Verbinden Sie den ~OE-Eingang mit dem UART-Ausgang
Verwenden Sie die GPIO-Uhr in einem Muster, das das Gerät darstellt, mit dem Sie sprechen möchten, und verwenden Sie dann den UART zum Senden
Wenn ein Pull-up vorhanden ist, gibt der Port mit einem Nullbit die UART-Ausgabe wieder.
Verwenden Sie für das Empfangsende ein und Tor / Tore, um das Signal vom Gerät UARTS zu kombinieren.
Ich denke, Sie verwenden das falsche Protokoll und/oder die falsche Topologie für Ihren Fall. Ich würde vorschlagen, RS-485-Transceiver zu verwenden und eine Bustopologie aufzubauen. Wenn Sie 11 mögliche Geräte haben, können Sie 4 Zeilen verwenden, um eines davon zu aktivieren.
Die Vorbehalte, die ich für diese Option sehe, sind:
Ich habe in Ihren Fragen keine Details darüber gesehen, wie sich diese Einschränkungen auf Ihr System auswirken können oder ob es sich überhaupt lohnt. Ich hoffe, das konnte helfen.
Als Alternative könnte PSoC Ihnen helfen
Hier ist ein Beispiel mit 11 UART auf einem PSoC 5lp
https://hackaday.io/project/11974-averaging-many-gpses/log/39157-11-serial-ports-with-psoc5
jonk
MarkU
Chupacabras
Gareth T.
Chupacabras