Chip Select für UART Slaves - Wie realisieren?

Gast #7294748
Lesenswert?

Hallo,
ich habe 3 Smart Displays von Aliexpress, die über eine Opensmart UART 
Schnittstelle angesteuert werden. Da UART nur ein Device ansprechen 
kann, weil es eben kein Bus ist wie I2C stellt sich folgendes Problem:

Wie steuere ich mit einem uC Ausgang 3 Displays nacheinander an zur 
Darstellung von Messkurven, die TXD und RxD benötigen, ohne dass sie 
sich logisch und elektrisch in die Quere kommen?

Abgesehen davon ein Gattergrab mit (De-)Multiplexern zu erzeugen fällt 
mir für die Heimlösung nur ein 3 kleine Reed Relais mit Doppel-Kontakt 
zu verwenden.

Oder gib es da vielleicht was elektronisches?

LG,
Thorsten
Gast #7294765
Lesenswert?

Thorsten M. schrieb:

> Oder gib es da vielleicht was elektronisches?

Klar: programmierbare Logik. CPLD/FPGA. Oder im Notfall auch: 
entsprechend programmierter (paralleler) NV-Speicher, also z.B. olle 
BIOS-Flash- oder EPROM-Bausteine.

Für einen 1:3-UART-Mux/Demux brauchst du (im Minimum) 5 Eingänge und 4 
Ausgänge.

Wenn die Bitraten nicht zu hoch sind, sondern sich im üblichen 
UART-Bereich <=115200kbps bewegen, käme sogar ein kleiner dummer µC in 
Frage, bei dem die Mux-Logik rein in Software implementiert ist.
Gast #7294793
Lesenswert?

Man könnte natürlich auch "einfach" einen I²C-UART-Baustein mit mehreren 
UARTs verwenden, falls es sowas noch gibt.

Oder gleich einen Controller mit einer passenden Anzahl an UARTs 
verwenden.
Gast #7294794
Lesenswert?

c-hater schrieb:
> Klar: programmierbare Logik. CPLD/FPGA.

Sowas habe ich nicht, kann ich auch nicht mit umgehen. Kanonen auf 
Spatzen. Und einen uC dazwischen setzen ... da kann man gleich 3 
SoftUarts mit einem ProMini Arduino erzeugen und auf eine Hardware Uart 
abbilden. Ich suchte eher was einfaches. Bisher sind 3 Reed Relais und 3 
Transistoren für mich einfach.

Da ich recht neu hier bin: Ist dieses Forum moderiert? Ich wundere mich 
nämlich über recht viele Unverschämtheiten und Frechheiten die 
stillschweigend toleriert werden. Krankhafte Narzissten sind unter 
(selbsternannten) Experten nicht selten aber in manchem Thread wundert 
mich nichts mehr.
Gast #7294800
Lesenswert?

Thorsten M. schrieb:
> Abgesehen davon ein Gattergrab mit (De-)Multiplexern zu erzeugen fällt
> mir für die Heimlösung nur ein 3 kleine Reed Relais mit Doppel-Kontakt
> zu verwenden.
Was ist an einem einzigen SO16/TTSSO16 Baustein ein Gattergrab?
https://assets.nexperia.com/documents/data-sheet/74HC_HCT139.pdf

Oder bedingt ein Opensmart UART da irgerndwelche seltsamen Logikpegel?
Gast #7294830
Lesenswert?

1)
Die TX der Displays können schonmal alle (über Dioden+Pullup 
)zusammengelegt werden und auf RX von Controller gehen. (Es wird ja nur 
EIN Display jeweils antworten, nämlich jenes mit dem gerade gesprochen 
wird)

2)
TX vom Controller geht dann über EINEN simplen Analog-MPX (4051/52/53) 
auf die einzelnen RX der Displays.
Gast #7294833
Lesenswert?

hubuk schrieb:
> Nur die gerade nicht selektierten Ausgängen sind H. Der aktive Audgang
> folgt ohne Änderung dem Enable-Eingang.

Ja, würde passen. Für TxD 1auf3. RxD muss auch zurückgeführt werden 
3auf1. Je länger ich überlege ... glaube mit dem Arduino pro Mini lässt 
sich da ganz fix was machen: 3 SoftUarts mit der Paul Stoffregen Lib und 
die Master TXD/RXD. Diese Display stürzen übrigens komplett ab, wenn man 
da Müll reinschickt oder eine UART Sendung durch einen zu langen 
Interrupt unterbricht. Dann geht nur noch ein/aus.
Gast #7294834
Lesenswert?

hubuk schrieb:
> Nur die gerade nicht selektierten Ausgängen sind H. Der aktive Audgang
> folgt ohne Änderung dem Enable-Eingang.

Richtig.
Für die RX-Leitung braucht man aber auch noch was.

Dann kann man sich gleich 74xx125 oder Analogschalter anschauen.
Mit zwei Bausteinen '125, drei Steuerleitungen und drei PUs ist man 
dabei.
Gast #7294840
Lesenswert?

Hermann Kokoschka schrieb:
> Die TX der Displays können schonmal alle (über Dioden+Pullup
> )zusammengelegt werden und auf RX von Controller gehen. (Es wird ja nur
> EIN Display jeweils antworten, nämlich jenes mit dem gerade gesprochen
> wird

Nein, Link kann ich nicht zeigen, Aliexpress ist hier gesperrt. Diese 
Displays
werden unter OPENSMART verkauft, haben keine Adresse. Da gehen 2 
Leitungen rein, RXD, TXD. Steuercodes für grafische Sachen rein, also 
CIR x,y,r,EOD heisst Kreis, Parameter, End of Data. Zurück kommt ein 
Steuercode für Befehl ausgeführt. Denn sendet man während einer noch 
läuft schmieren die Dinger ab.
Made in China....
Gast #7294843
Lesenswert?

Thorsten M. schrieb:
> Zurück kommt ein
> Steuercode für Befehl ausgeführt. Denn sendet man während einer noch
> läuft schmieren die Dinger ab.

Stell mein Konzept aber nicht in Frage...

Dann wartest Du eben bis die Rückmeldung kommt und schaltest den MPX 
ERST DANN auf ein anderes Display, wo ist das Problem?
Gast #7294858
Lesenswert?

Thorsten M. schrieb:

> Sowas habe ich nicht, kann ich auch nicht mit umgehen. Kanonen auf
> Spatzen. Und einen uC dazwischen setzen ... da kann man gleich 3
> SoftUarts mit einem ProMini Arduino erzeugen

Versuch' es ;o)

Tipp: Soft-UARTs sind langsam. Schreiben geht noch ganz gut, lesen 
nicht. Vor allem dann nicht, wenn auch noch mehrere Kanäle um 
Aufmerksamkeit ringen, in deiner Anwendung sind das immer mindestens 
zwei.

ProMini-Arduino-Hardware geht natürlich, ist eigentlich sogar schon viel 
zu groß, hardwaremäßig wäre ein ATtiny24 angemessen, der kann alles 
nötige, um die gewünschte Funktion sicher für Bitraten bis 115200kbps 
bereitzustellen.

Was aber nicht geht: Arduino-Soft-Serial. Jedenfalls nicht, wenn mit 
Bitraten >>9600 zu rechnen ist.

> Ich suchte eher was einfaches.

Boolsche Logik ist einfach. Und es spielt eigentlich keine Rolle, ob man 
die mit Transistoren und Relais implementiert oder als Programm. 
Jedenfalls dann nicht, wenn man die Logik verstanden hat...
#7294873
Lesenswert?

Thorsten M. schrieb:
> Diese
> Displays
> werden unter OPENSMART verkauft

Hilft auch nicht bei der Suche, gibt ja haufenweise LCDs bei Ali.

Thorsten M. schrieb:
> Diese Display stürzen übrigens komplett ab, wenn man
> da Müll reinschickt oder eine UART Sendung durch einen zu langen
> Interrupt unterbricht.

D.h. die Leute haben keinerlei Ahnung vom Programmieren.
Warum kauft man dann solchen Scheiß.
Gast #7294995
Lesenswert?

Thorsten M. schrieb:

> DANKE !!! 3.3V brauchen zwar Level Shifter

Nein. Standard-CMOS funktioniert i.A. bis runter auf 3V. Nur halt etwas 
langsamer als bei höheren Versorgungsspannungen oder auch mit sonstigen 
kleinen Einschränkungen bezüglich einiger Kennwerte. Ausnahmen 
bestatigen wie immer die Regel. Der CD4053 ist aber diesbezüglich keine.
Gast #7295000
Lesenswert?

c-hater schrieb:
> Ausnahmen
> bestatigen wie immer die Regel. Der CD4053 ist aber diesbezüglich keine.

Erstmal auf Breadboard mit einem FG und Oszi testen. Dann Platine 
machen, nicht umgekehrt. Brauche auch die CD4052B und der ist in der 
Bucht nicht zu kriegen, nur noch bei Reichelt Apotheke.
Beitrag #7295045 wurde von einem Moderator gelöscht.
Beitrag #7295077 wurde von einem Moderator gelöscht.
Gast #7295092
Lesenswert?

c-hater schrieb:
> Noch 'ne Idee: Standard-CMOS 4053. Sollte auch alles nötige können.

Wie der TO in dem Screenshot bereits eingekreist hat: der CD4052 ist 
noch besser geeignet.
Am TX-Pfad-Ausgang empfehle ich einen Pullup. Offen sollte der RX-Input 
am Empfänger ja nicht sein, sondern in Ruhe auf HIGH.

Du hast vollkommen recht, den 4052/53 hatte noch niemand zuvor genannt, 
jedoch hatte ich allgemein schon mal einen Analogschalter erwähnt.
Beitrag #7295101 wurde von einem Moderator gelöscht.
#7295107
Lesenswert?

Sowas hier?
https://www.dx.com/p/open-smart-2-4-uart-serial-tft-lcd-module-touch-screen-expansion-shield-with-touch-pen-for-arduino-uno-r3-mega2560-nano-2033627.html

So wie aussieht ist da schon ein Controller drauf und der hat auch mehr 
Pins rausgeführt.
https://github.com/prenticedavid/MCUFRIEND_kbv/files/7027755/Serial.TFT.2.4INCH.with.touch.sreen.Schematic.pdf

Vielleicht liegt für das Ding ja irgendwo eine Firmware herum die man 
entsprechend erweitern könnte auch noch auf einen Pin zu lauschen.
#7295109
Lesenswert?

Thorsten M. schrieb:
> Hallo,
> ich habe 3 Smart Displays von Aliexpress, die über eine Opensmart UART
> Schnittstelle angesteuert werden. ...
> Oder gib es da vielleicht was elektronisches?
>

Dein Nick suggeriert eine Controllerfamilie, deren Peripherie 
üblicherwise CS für SPI (UART) unterstützt. Die Displays typischerweise 
auch. Heißt dort Evtl anders.

Wo ist jetzt noch mal das Problem?
Gast #7295115
Lesenswert?

Rudolph R. schrieb:
> Sowas hier?
> 
https://www.dx.com/p/open-smart-2-4-uart-serial-tft-lcd-module-touch-screen-expansion-shield-with-touch-pen-for-arduino-uno-r3-mega2560-nano-2033627.html

Ja, genau die. Vergiss das mit der Firmware. Den kann man zwar neu 
flaschen aber nix gefunden. Und wenn man die Baud Rate verstellt ist das 
Ding Schrott, weil da was nicht stimmt. Man kann sie nie mehr zurück 
stellen. 2 Displays deswegen schon gebricked.
#7295145
Lesenswert?

Cortex User schrieb:
> Ja, genau die. Vergiss das mit der Firmware.

Ich gebe ja zu, dass das sehr hässlich ist danach zu suchen.
Aber im Grunde genommen ist das Ding ein Arduino mit M328PB und einem 
ILI9325 Display, zum ansteuern des Displays wird wohl die Adafruit GFX 
Library verwendet.
https://www.hackster.io/frankiemaker/simple-easy-to-use-serial-tft-lcd-5196cf

Und da man auch den Schaltplan bekommt, halte ich es für sehr 
unwahrscheinlich, dass da noch niemand seit 2018 eine eigene Software 
für gemacht und ins Netz gestellt hat.

Dieser Frankie Chu ist auch immer noch aktiv, die letzten Videos hat er 
vor 6 Tagen auf seinem Youtube Kanal veröffentlicht.
Gast #7295221
Lesenswert?

Thorsten M. schrieb:
> Wie steuere ich mit einem uC Ausgang 3 Displays nacheinander an zur
> Darstellung von Messkurven, die TXD und RxD benötigen, ohne dass sie
> sich logisch und elektrisch in die Quere kommen?

Gar nicht. Man könnte mit einem Analog-Multiplexer zwar die Leitungen 
RxD und TxD von deinem µC auf verschiedene Kabel zu verschiedenen 
Displays aufschalten und dorthin senden (und nachher woanders 
draufschalten), aber was ist mit den Empfangsdaten? Die kommen 
asynchron herein und wandern unbemerkt ins Nirwana, wenn der 
Multiplexer auf einem anderen Kabel steht. Verodern geht auch nicht, 
denn dann kommen sich die Kanäle gegenseitig ins Gehege.

Das Ganze ist also nicht wirklich durchdacht.

W.S.
Gast #7295569
Lesenswert?

W.S. schrieb:
> Verodern geht auch nicht, denn dann kommen sich die Kanäle gegenseitig ins 
Gehege....  aber was ist mit den Empfangsdaten?

Es antwortet ja NUR das angesprochene Display, keines sendet "initiativ"

Hermann Kokoschka schrieb:
> Dann wartest Du eben bis die Rückmeldung kommt und schaltest den MPX
> ERST DANN auf ein anderes Display, wo ist das Problem?

W.S. schrieb:
> Das Ganze ist also nicht wirklich durchdacht.

HIER ist es völlig durchdacht, trivial+üblich,
gelöst innert Stunden ab Frage.
Wildester Kokolores der üblichen Theoretiker.

Dies "grundsätzliche-nicht-vorab-lesen" bleibt ägerlich.
Gast #7295762
Lesenswert?

Cortex User schrieb:
> Ja, genau die. Vergiss das mit der Firmware. Den kann man zwar neu
> flaschen aber nix gefunden.

Hast du denn gefunden, welche Auflösung die haben ? ;-)

> 2 Displays deswegen schon gebricked.

Dann hast du ja nur noch eins. Vielleicht ist das ja auch ein 
himmlisches Zeichen, denn zur Darstellung von Messkurven braucht man 
viel Geduld oder schnellere Displays mit SPI-Ansteuerung.
Wenn 3 x Relais für Dich eine gangbare Lösung sind, dann nimm sie.

Thorsten M. schrieb:
> Da ich recht neu hier bin: Ist dieses Forum moderiert? Ich wundere mich
> nämlich über recht viele Unverschämtheiten und Frechheiten die
> stillschweigend toleriert werden.

Die Zeit bleibt stehen und hier ist immer 1. April.
Gast #7295767
Lesenswert?

W.S. schrieb:

> Gar nicht. Man könnte mit einem Analog-Multiplexer zwar die Leitungen
> RxD und TxD von deinem µC auf verschiedene Kabel zu verschiedenen
> Displays aufschalten und dorthin senden (und nachher woanders
> draufschalten), aber was ist mit den Empfangsdaten? Die kommen
> asynchron herein und wandern unbemerkt ins Nirwana, wenn der
> Multiplexer auf einem anderen Kabel steht.

Natürlich sollte das verwendete Protokoll zu solchen Konstrukten passen. 
Wenn bidirektional, dann sollte es idealerweise ein 
Challenge-Response-Protokoll sein, d.h.: der "Slave" äußert sich 
ausschließlich als Reaktion auf eine Anfrage des "Master".

Und wie der Zufall will, ist sowas alles andere als unüblich, sondern im 
Gegenteil sogar extrem verbreitet.

Aber es gibt sogar durchaus auch Anwendungen, bei denen nicht einmal ein 
Challenge-Response-Protokoll zwingend notwendig ist, um eine im Sinne 
der Anwendung funktionierende Lösung zu erhalten. Nehmen wir mal das 
Beispiel einer Waage in einer "Anlage". Das Protokoll der Waage sieht 
vor, ständig "von sich aus" den aktuellen Wägewert rauszupusten und 
nicht änderbar. Ist das dann zwingend tödlich? Nein, natürlich nicht.

Der Controller weiss aus anderen Quellen, ob überhaupt was auf der Waage 
ist und kann natürlich getrost die Datensätze verpassen, in denen diese 
stumpfblöd irgendwas um die 0,0g meldet. Wenn der Controller weiß, jetzt 
müsste was tatsächlich interessantes kommen, dann schaltet er auf den 
Waagen-Kanal und synchronisiert sich auf den Datenframe der Waage und 
fertig.

Ja, man muss schon ein wenig programmieren können, um das Protokoll 
fehlertrolerant zu empfangen, aber für richtige Programmierer ist so 
etwas natürlich keine Herausforderung. Für dich hingegen wohl schon...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren