UART Pegel Anpassung 3.3 / 5V

Hallo,

ich habe ein Problem, dazu muss ich etwas ausholen:

ich habe zwei Geräte (CAN Adapter und Autoradio) die über eine UART Verbindung (Maestro IDatalink) miteinander bidirektional reden müssen. Das Autoradio gibt es in einer deutschen und einer amerikanischen Version. Die amerikanische Version hat eine offizielle IDatalink Schnittstelle mit passendem Stecker. Bei der Programmierung des CAN Adapters muss man die Seriennummer und das Modell des Autoradios angeben, diese wird beim Kommunikationsaufbau abgefragt, wenn das nicht übereinstimmt, geht der CAN Adapter in den Fehlermodus. Leider gibt es da nur die amerikanischen Modelle zur Auswahl :frowning:
Das deutsche Pendant zur amerikanischen Autoradio Variante unterstützt diese IDatalink Schnittstelle nicht offiziell, hat aber auch einen "UART zur Kommunikation mit CAN Adapterboxen". Ich vermute, dass da softwareseitig das gleiche Protokoll drauf läuft und sich das anpassen lässt.
Um das Model zu faken will ich einen Arduino mit zwei UARTS dazwischen basteln, um die Response des Autoradios auf einen entsprechenden Request herauszufiltern, und als Antwort die amerikanische Modellnumer schicken, der andere Verkehr soll einfach durchgeleitet werden.
Problem 1: Ich habe zwei vierpolige Kabel (eines mit drei Leitungen belegt, eines mit vier Leitungen belegt). GND und Tx habe ich herausmessen können, beim dreipoligen Kabel ergibt sich somit Rx, beim vierpoligen Kabel bin ich wg. Rx unsicher. Gibt es einen Weg das messtechnisch herauszubekommen ohne die Gehäude öffnen zu müssen?
Problem 2: Die Tx Pegel sind unterschiedlich, CAN Adapter 3,3V, Autoradio 5V. Die Versorgungsspannungen 5V/3.3V liegen nicht mit am Kabel an (so wie bei Sensoren - bei allen Beschreibungen der Logic Level Shifter geht es immer um Schaltungen wo die Versorgungsspannung abgegriffen werden kann). Mir ist aber nicht ganz klar woher ich die 3.3V Versorgungsspannung nehmen kann, um den Logic Level Shifter auf der Low Voltage Seite mit Spannung zu versorgen. Da wäre ich für Tipps dankbar.

Gruß
Jörg

Hallo,
ok....ja und ?

Evtl. ist das ja dein Problem ?

... und dann hat er vergessen Luft zu holen und ist umgefallen ...

Genau...mit dem Ausholen ist das so ein Problem.
Meist trifft man die falschen. :wink:

Ah ja, danke sehr konstruktiv hier :wink: Kann dann direkt geschlossen oder gelöscht werden.

Das lag wohl daran, dass deine Frage sehr viel später hier gezeigt wurde.
Bzw. von dir später eingestellt wurde.

Ja, das geht mit einem Osziloskop.

Da reichen meist 1k Widerstände und du brauchst keine extra Spannung.

Hallo,

ja, der erste Post war leider etwas abgeschnitten.

Primitives USB Oszilloskop ist vorhanden. Was müsste ich für Rx sehen? Rx wartet ja eigentlich auf Daten, ich würde da eher gar keine Spannung erwarten - was jetzt kein so großer Unterschied zu einer offenen Leitung wäre. Außer vielleicht etwas mehr Rauschen auf der offenen Leitung.

Ok, 1k Widerstände, gegen was?

Einfach in die Leitung schalten, in Serie.
Zuvor mal messen ob da eine Spannung anliegt.
In meinen "Arduino Systemen" die aus 3,3V und 5V Componenten bestehen, reicht ein Widerstand von 5V-TX zu 3,3V-RX. Du kannst aber sicherheitshalber in beide Leitungen einen einstzen.

Ok, ja den RX so ausmessen ist nicht einfach. Da musst du wohl probieren.

Ok, danke.

Ich denke, ich werde Logic Level Adapter nehmen (die liegen hier eh schon) und mit 3.3V und 5V vom Mega Board versorgen. Mir war nicht bewusst, dass 3.3V auf dem Board verfügbar ist.

Danke u. Gruß
Jörg

Dann aber keine, die für I2C gebaut wurden.
Da kannst du Probleme bekommen, da diese bidirektional arbeiten und nicht für die serielle Kommunikation gedacht sind. Es kann funktionieren, wird dir aber bei extremen Situationen, z.B. Temperaturschwankungen, Probleme bereiten.
Was funktioniert, sind CD4050. Die wurden schon erfolgreich getestet.

Oder du verwendest diese Schaltung dafür:
Buffer
1 x N-Channel IRLML6244, 1 x P-Channel IRLML6402PBF