UART Single Wire Signal Invertierung

OP #6451773
Hallo zusammen,

gibt es einen einfachen Weg (=IC) ein serielles TTL Signal Single Wire 
(ein-Draht-Verbindung für RX und TX) zu invertieren. Ich habe das 
Problem das der SAMD21 Cortex M0+ beim SoftwareSerial im Single Wire 
Mode nicht invertieren kann, also muss eine Hardwarelösung her. :(
Arno W. schrieb:
> ....gibt es NOT GATTER auch bi-direktional

Verdammt, das mit dem einen Draht hatte ich übersehen.
Aber gut, es kann ja immer nur eine Quelle die Leitung treiben. Und da 
gibt es schon Schaltungen die bidirektional funktionieren. In 
Spannungsübersetzern sind die drinnen.
https://www.ti.com/lit/gpn/TXB0102
Nur das selber zu bauen und um zwei NOT Gatter zu erweitern ist eher 
eine große Baustelle.

Ist denn wenigstens ein weiterer Pin als Ausgang verfügbar? Dann könnte 
man ein Gatter verwenden mit enable Eingang dessen Ausgang man also 
hochohmig schalten kann.
Gast
Gustl B. schrieb:
> Aber gut, es kann ja immer nur eine Quelle die Leitung treiben.

Du hast wired-or nicht verstanden.

Bei CAN, LIN oder 1-wire sind mehrere Datenquellen auf einer Leitung 
(Bus) sogar zum Prinzip erhoben. Man spricht dann von dominantem und 
rezessivem Pegel. Um das friedliche Miteinander kümmert sich das 
Protokoll.
Gast
Arno W. schrieb:
> Ich habe das Problem das der SAMD21 Cortex M0+ beim SoftwareSerial
> im Single Wire Mode nicht invertieren kann, also muss eine
> Hardwarelösung her. :(

Und die soll genau was machen?
Was ist der rezessive Pegel jeweils auf den beiden Teilnehmerseiten?
Arno W. schrieb:

> gibt es einen einfachen Weg (=IC) ein serielles TTL Signal Single
> Wire (ein-Draht-Verbindung für RX und TX) zu invertieren.

Nein.

> Ich habe das
> Problem das der SAMD21 Cortex M0+ beim SoftwareSerial im Single Wire
> Mode nicht invertieren kann, also muss eine Hardwarelösung her. :(

Das ist gleich doppelt Blödsinn. Denn natürlich wäre es trivial, den 
Pegel bei Verwendung einer Soft-UART zu invertieren. Es geht aber nicht. 
Der Witz bei singe-wire UART ist ja, daß TxD ein open-collector (bzw. 
open-drain) Ausgang ist. Damit die Gegenseite auch senden kann, muß der 
passive (rezessive) Pegel H sein. Realisiert durch einen 
Pullup-Widerstand.

Im Prinzip könnte man das mit invertiertem Pegel mit einem Pulldown und 
einem PNP open-collector Ausgang machen. Hat ein µC aber nicht. Und 
extern läßt sich das nur dann nachrüsten, wenn man getrennte Sende- und 
Empfangspins hat.
Dann muss man eben den zweiten Pin opfern. Man will doch nicht etwa 2 
SAMD21 miteinander verbinden, sondern einen mit so einem S.Port? Also 
kann man ein total normales UART benutzen und TX mit einem PNP/P-Kanal 
invertieren. RX kann der SAM wahrscheinlich intern invertieren.
Oder man klemmt einen ATtiny13a o.ä. dawzischen. Der übersetzt dir das 
Signal in beide Richtungen. Damit wird der Bus entkoppelt.

Vorsicht mit dem PullUp/Down. Wenn idle auf 0V ist, gehen ich von einem 
PullDown aus. Die 0V darf dann nicht aktiv auf den Pin gelegt werden, 
sonst kann es zu einem Kurzschluss kommen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.