Forum: Mikrocontroller und Digitale Elektronik kurios - warum funktioniert I2C mit TI SX0108 Pegelwandler?


von Veit D. (devil-elec)


Lesenswert?

Hallo,

ich hätte gern gewusst warum der I2C Bus bei dem Board mit "digitalen" 
Pegelwandler funktioniert? Das dürfte doch eigentlich ohne Pullups und 
ohne Mosfet-Levelshifter gar nicht funktionieren. Pololu verwendet einen 
TI XS0108 Pegelwandler. Das Pololu Board ist an einem Arduino Nano ESP32 
angeklemmt zum rumspielen. Es sind nirgends "versteckte" Pullups im 
Spiel.

https://www.pololu.com/product/3419
https://www.pololu.com/product/3419#lightbox-picture0J12382

von Andreas B. (abm)


Lesenswert?

Wer Datenblätter lesen kann, ist ...
"7 Detailed Description
7.1 Overview
The TXS0108E device is a directionless voltage-level translator 
specifically designed for translating logic voltage levels. The A-port 
accepts I/O voltages ranging from 1.4V to 3.6V. The B-port accepts I/O 
voltages from 1.65V to
5.5V. The device uses pass gate architecture with edge rate accelerators 
(one shots) to improve the overall data rate. The pull-up resistors, 
commonly used in open-drain applications, have been conveniently 
integrated so that
an external resistor is not needed. While this device is designed for 
open-drain applications, the device can also translate push-pull CMOS 
logic outputs."

Analog für NXS0108 ...

von Arduino F. (Firma: Gast) (arduinof)


Angehängte Dateien:

Lesenswert?

Veit D. schrieb:
> TI XS0108

Wenn ich da ins Datenblatt schaue, sehe ich da einige Rpub in der Schema 
Zeichnung.

Andreas B. schrieb:
> The pull-up resistors,
> commonly used in open-drain applications, have been conveniently
> integrated so that
> an external resistor is not needed.

Übersetzt:
Die Klimmzüge, Widerstände,
häufig in Open-Drain-Anwendungen verwendet, wurden bequem
integriert so
Ein externer Widerstand wird nicht benötigt.

Auch die MosFET sehe ich da.

: Bearbeitet durch User
von Veit D. (devil-elec)


Lesenswert?

Hallo,

gut, hatte ich ignoriert. Sorry. Nur wenn der Pullup zwischen 40k und 4k 
wechselt, ist das für I2C nicht gerade förderlich. Würde jemand wirklich 
diesen Baustein für I2C verwenden?

von Falk B. (falk)


Lesenswert?

Veit D. schrieb:
> gut, hatte ich ignoriert. Sorry. Nur wenn der Pullup zwischen 40k und 4k
> wechselt, ist das für I2C nicht gerade förderlich. Würde jemand wirklich
> diesen Baustein für I2C verwenden?

Ich würde davon abraten. Ein Kollege ist mit so einem ähnlichen Ding mal 
bei One Wire auf die Nase gefallen. Die langsamen Flanken eines ICs 
haben zu komischen Schwingungen geführt, welche die Kommunikation 
sporadisch gestört haben. Ich glaube es war der MAX3394E. Ich würde bei 
One Wire und I2C beim Klassiker mit einem MOSFET als BSS138 bleiben. Da 
schwingt nix, alles millionenfach bewährt.

TXS0108E 8-Bit Bi-Directional, Level-Shifting, Voltage Translator
for Open-Drain and Push-Pull Applications

Maximum data rates:
– 110Mbps (push pull)
– 1.2Mbps (open drain)

Ist dort bei denn EINHUNDERTZEHN Mbps eine Null zuviel oder meinen die 
das Ernst? Wenn ja, Finger weg! Diese Dinger sind viel zu schnell und 
machen potentiell mehr Probleme als sie lösen! Man fährt auch nicht mit 
dem Formel 1 Auto zum Einkaufen!

: Bearbeitet durch User
von Veit D. (devil-elec)


Lesenswert?

Hallo,

das erklärt vielleicht die seltenen Init Probleme des ToF Sensor. Selten 
aber hin und wieder schon. Dabei werden erstmal Unmengen an Konfigdaten 
in den Sensor übertragen.

Wolfang hatte bei seinen ToF Tests auch Probleme bemerkt.
https://wolles-elektronikkiste.de/vl53l0x-und-vl53l1x-tof-abstandssensoren

Da dachte ich fragst lieber nach. Ich möchte nämlich eine eigene Platine 
mit dem ToF bauen und werde herkömmliche bzw. bewährte Bauteile für I2C 
Leveshifter verwenden.

Danke.

: Bearbeitet durch User
von Clemens L. (c_l)


Lesenswert?

Veit D. schrieb:
> Nur wenn der Pullup zwischen 40k und 4k wechselt, ist das für I2C nicht
> gerade förderlich.

Spart Strom.

> Würde jemand wirklich diesen Baustein für I2C verwenden?

Ja (der TXS0102 ist identisch mit dem TCA9406). Der "One Shot 
Accelerator" schaltet den Pullup kurz auf 0,05 kΩ; damit werden 
steigende Flanken ordentlich beschleunigt.

Das Problem mit dem TXS ist, dass er eine steigende Flanke erkennt, wenn 
die Spannung am Eingang ca. 30 % von VCC erreicht. Störungen auf der 
Leitung erzeugen falsche Trigger (was auf SCL böse endet); mit großem 
Überschwingen erhälst du einen Oszillator. Der TXS ist für viel 
schnellere Protokolle optimiert; für I²C wäre z.B. der LSF0102/PCA9306 
oder LSF0002 eine bessere Lösung.

: Bearbeitet durch User
von Veit D. (devil-elec)


Lesenswert?

Hallo,

auch das würde die seltenen Probleme erklären. Nur sind die LSF0102 und 
LSF0002 nicht zu schnell? Der PCA9306 wäre erstmal interessant. Danke. 
Damit könnte man zusätzlich den Bus an/abklemmen. Muss ich mir überlegen 
ob ich das Experiment eingehe. Aktuell bin ich gedanklich bei diskreten 
Bauteilen. ;-) Den Platz habe ich.

von Michael B. (laberkopp)


Lesenswert?

Falk B. schrieb:
> Ich würde davon abraten. Ein Kollege ist mit so einem ähnlichen Ding mal
> bei One Wire auf die Nase gefallen

Veit fragte aber nach I2C mit genau diesem Ding. OneWire ist anders, 
Probleme nicht übertragbar.

von Falk B. (falk)


Lesenswert?

Michael B. schrieb:
>> Ich würde davon abraten. Ein Kollege ist mit so einem ähnlichen Ding mal
>> bei One Wire auf die Nase gefallen
>
> Veit fragte aber nach I2C mit genau diesem Ding. OneWire ist anders,
> Probleme nicht übertragbar.

Onewire hat EXAKT wie I2C Open Drain Signale! Die Datenrate ist 
geringer. Also sehr wohl vergleichbar!

von Christian M. (christian_m280)


Angehängte Dateien:

Lesenswert?

Die Low-Pegel sind das Problem!
Ich habe dann TCA9517 als Pegelwandler genommen, das geht perfekt! Siehe 
Thread: Beitrag "Problem mit VL53L0X über P82B96"
Ich habe ein Print entworfen für den VL53L3CX, die scheinen aber alle 
das gleiche Pinout zu haben.
Wenn Dich das Projekt interessiert, kann ich es hier reinstellen!

Gruss Chregu

von Clemens L. (c_l)


Lesenswert?

Veit D. schrieb:
> sind die LSF0102 und LSF0002 nicht zu schnell?

LSF0102 und PCA9306 sind identisch; die Geschwindigkeit wird nur durch 
den Wert der Pullups (und die Kapazität der Leiterbahnen und 
Chip-Eingänge) bestimmt.

Der LSF0002 enthält genau zwei MOSFETs; damit baust du den "klassischen" 
Levelshifter.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

Danke Euch.

Ich kann mich noch nicht entscheiden ob ich den VL53L8CX wie auf dem 
Board verwende oder "nur" den VL53L4ED. Wobei man mit 8x8 Zonen mehr 
machen kann. :-)
Die 1 Zonen und 8x8 Zonen haben unterschiedliche Pinouts. Ob es weitere 
Unterschiede im Detail gibt habe ich nicht nachgeschaut.
Danke auch für das Angebot und Erfahrungswerte vom Projekt, mein Board 
wird jedoch individueller mit Dip-Switche zum Pullup konfigurieren um am 
Bus flexibel zu bleiben.

Danke Clemens für die Info.

: Bearbeitet durch User
von Veit D. (devil-elec)


Angehängte Dateien:

Lesenswert?

Hallo,

kann mir bitte jemand sagen warum ST für die Pullups 47k verlangt? Etwas 
hoch oder? Sind auch nur max. 3,3V.

@ Christian
Was hast du verbaut?

: Bearbeitet durch User
von Soul E. (soul_eye)


Lesenswert?

Veit D. schrieb:
> kann mir bitte jemand sagen warum ST für die Pullups 47k verlangt? Etwas
> hoch oder? Sind auch nur max. 3,3V.

Vermutlich ist das ein CMOS-Bauteil, da würden auch 100k noch reichen. 
Der input leakage current sollte im Datenblatt stehen. Bei maximalem 
Eingangsleckstrom darf an dem Widerstand nur soviel Spannung abfallen, 
dass der gültige High-Pegel nicht unterschritten wird.

Du kannst den Widerstand natürlich kleiner machen. In stark gestörter 
Umgebung macht das die Schaltung robuster. Im aktiven Zustand steigt 
dann aber die Stromaufnahme, und die Treiberleistung des steuernden 
Ausganges darf natürlich auch nicht überschritten werden.

Wenn die Ansteuerung durch einen Microcontroller erfolgt, dann ist das 
wahrscheinlich totem pole. D.h. der Pin kann High und Low ausgeben. In 
diesem Fall ist der Pullup nur Failsafe für die Zeit, wo der Controller 
noch im Reset ist und die Initialisierung der Portpins noch nicht 
ausgeführt wurde.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

Danke schön. Wird von einem µC angesteuert.
Hatte mich verguckt. Sind nur max. 1,8V.

: Bearbeitet durch User
von Christian M. (christian_m280)


Lesenswert?

Veit D. schrieb:
> @ Christian
> Was hast du verbaut?

VL53L3CX und TCA9517 als Pegelwandler. Alles 2k2.

Gruss Chregu

von Veit D. (devil-elec)


Lesenswert?

Danke.

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.