STM32G431 und invertiertes Half-Duplex / UART

OP #7453270
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?

#7453275
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.

OP #7453285
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!

OP #7453304
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?)

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