Forum: Mikrocontroller und Digitale Elektronik STM32G431 und invertiertes Half-Duplex / UART


von Raoul D. (raoul_d219)


Lesenswert?

Einen der UARTs eine STM32 (hier STM32G431) in Half-Duplex zu betreiben 
ist einfach: es ist dann nur noch der TX-Pin (OD mode) benutzt. 
Mark-Level ist hier dann Low.

Wie kann man das am einfachsten invertieren, also Mark-Level = High? 
Einfach RXINV / TXINV setzen geht ja nicht, denn man müsste ja auch 
einen Pullup-Transistor haben.

Meine Idee ist: RX-Pin und TX-Pin (1) verbinden = RXTX (nicht auf 
Half-Duplex Mode schalten), TX-Pin in OD-Mode.
Für die Invertierung dann den eine Diode von einem anderen TX-Pin (2) 
zum RXTX führen. Dieser Pin ist im normalen Mode Low.
Im invertierten Mode deaktiviert man dann TX-Pin (1) und aktiviert 
Tx-Pin (2) im PP-Mode. Dann natürlich mit RXINV und TXINV.

In Summer: drei Pins und eine Diode.

Geht das einfacher?

von Cyblord -. (cyblord)


Lesenswert?

Raoul D. schrieb:
> Wie kann man das am einfachsten invertieren, also Mark-Level = High?
> Einfach RXINV / TXINV setzen geht ja nicht, denn man müsste ja auch
> einen Pullup-Transistor haben.

Es sollte klar sein dass man mit invertierten Pegeln schlecht ein OD 
machen kann. Die Frage wäre auch wozu? Welche Gegenstelle arbeitet so 
dass man dazu gezwungen wäre?

Aber niemand zwingt dich zu OD. Du kannst auch Push-Pull machen solange 
die Gegenstelle brav auf OD oder High-Z schaltet solange sie nichts 
sendet.

> Meine Idee ist: RX-Pin und TX-Pin (1) verbinden = RXTX (nicht auf
> Half-Duplex Mode schalten), TX-Pin in OD-Mode.

Das ist letztlich die klassische Methode für Half Duplex UART wenn du 
keine spezielle Hardware dafür hast. Ich würde den Komfort einer 
dezidierten HD Hardware nicht aufgeben ohne größte Not.

: Bearbeitet durch User
von Raoul D. (raoul_d219)


Lesenswert?

Cyblord -. schrieb:
> Es sollte klar sein dass man mit invertierten Pegeln schlecht ein OD
> machen kann.

Hatte ich auch nicht behauptet.

Cyblord -. schrieb:
> Die Frage wäre auch wozu? Welche Gegenstelle arbeitet so
> dass man dazu gezwungen wäre?

Im RC-Bereich gibt es das S.Port-Protokoll, was so arbeitet. Andere 
wiederum wie etwa IBUS arbeiten normal. Auf meiner Seite möchte ich das 
erkennen und umschalten können. Der Hintergrund ist einen AVR zu 
ersetzen, bei dem das bisher sehr gut mit der 3-Pin-Methode geht.

Cyblord -. schrieb:
> Aber niemand zwingt dich zu OD. Du kannst auch Push-Pull machen solange
> die Gegenstelle brav auf OD oder High-Z schaltet solange sie nichts
> sendet.

Nein, da das ein Bus ist, können andere Teilnehmer senden.

Cyblord -. schrieb:
> Das ist letztlich die klassische Methode für Half Duplex UART wenn du
> keine spezielle Hardware dafür hast. Ich würde den Komfort einer
> dezidierten HD Hardware nicht aufgeben ohne größte Not.

Ja, natürlich. Deswegen ja auch hier die Frage!

von Cyblord -. (cyblord)


Lesenswert?

Raoul D. schrieb:
> Nein, da das ein Bus ist, können andere Teilnehmer senden.

Aber nicht alle gleichzeitig. Das kommt dann aufs Protokoll an.

von Raoul D. (raoul_d219)


Lesenswert?

Cyblord -. schrieb:
> Aber niemand zwingt dich zu OD. Du kannst auch Push-Pull machen solange
> die Gegenstelle brav auf OD oder High-Z schaltet solange sie nichts
> sendet.

Cyblord -. schrieb:
> Aber nicht alle gleichzeitig. Das kommt dann aufs Protokoll an.

Genau.

Der Master fordert einen anderen Client auf, zu senden und schaltet auf 
OD bzw. High-Z. Wenn mein Client nun auf PP-Mode bleibt, geht es nicht. 
Ich benötige eben OD bzw. das invertierte Äquivalent davon (wie nennt 
man das? Open-Source Mode oder Open-Drain-P-Channel?)

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.