Hallo, ich habe Platinen mit Pegelwandler PCA9306 von 3.3V auf 1.8V mit
I2C-Bus. Zuerst hatte ich da I2C-Sensoren direkt an die Platine
angeschlossen - alles ok.
Dann habe ich die Sensoren mit einer etwa 1.5m langen Zuleitung
angeschlossen. Resultat: 6 von 9 Pegelwandlern sind defekt, und zwar
gehen die Signale SDA2 und/oder SCL2 auf der 3.3V-Seite entweder nicht
mehr auf 0 oder nicht mehr auf 3.3V, werden also irgendwie vom PCA9306
"festgehalten".
Ist 1.5m zu lang?
Hallo roehrenvorheizer,
nein, die Schaltung ist genau wie in figure 11 im Datenblatt. Alle
Pullups sind 10kOhm und damit größer als in den folgenden Tabellen
angegeben. Ein Mikrocontrollerausgang soll SDA2 und SCL2 auf 0V ziehen.
Hat ja auch geklappt, bis das mit den langen Leitungen kam.
Wie der Sensor intern beschaltet ist, weiß ich nicht.
Bustakt ist 50kHz.
karadur schrieb:
> Was machen die Pegelwandler wenn man das Kabel wieder heraus nimmt?
Hab das mal bei einem probiert, der scheint sich dann wieder normal zu
verhalten. Ich binde jetzt (d.h. später am Abend) mal einen Sensor
wieder kurz an und berichte dann nochmal...
Hallo,
> DCDC schrieb:> Hallo, ich habe Platinen mit Pegelwandler PCA9306 von 3.3V auf 1.8V mit> I2C-Bus.
Warum verlinkst du nicht auf das Datenblatt, wenn du zu einem konkreten
Chip eine Frage hast?
Welche Baudraten verwendest du?
> Zuerst hatte ich da I2C-Sensoren direkt an die Platine> angeschlossen - alles ok.> Dann habe ich die Sensoren mit einer etwa 1.5m langen Zuleitung> angeschlossen. Resultat: 6 von 9 Pegelwandlern sind defekt, und zwar> gehen die Signale SDA2 und/oder SCL2 auf der 3.3V-Seite entweder nicht> mehr auf 0 oder nicht mehr auf 3.3V, werden also irgendwie vom PCA9306> "festgehalten".
Wie hast du das festgestellt (mit Oszi gesehen)? Ist das tatsächlich ein
statischer Effekt, oder zeigt dir das nur deine Software an?
> Ist 1.5m zu lang?
Nach dem Datenblatt:
http://www.ti.com/lit/ds/symlink/pca9306.pdf
sind diese Treiber extrem "giftig". Da werden Flankengeschwindigkeiten
im Sub-ns-Bereich angegeben. Das entspricht Bandbreiten im Bereich von
GHz (Wellenlänge von paar 10cm)!
Damit ist 1,5m Leitung schon eine "sehr lange Leitung" (länger als die
Wellenlänge). Da bekommst du ganz heftige HF-Effekte, wenn die Leitungen
nicht HF-mäßig sauber terminiert sind. Die Leitung ist außerdem eine
gute Antenne und wird heftig Störspannungen abstrahlen.
I²C braucht normal nicht so hohe Frequenzen, deshalb empfehle ich eine
massive Bandbreitenbegrenzung auf die nax. notwendige Bandbreite mit
RC-Gliedern und EMI-Ferriten.
Gruß Öletronika
Das Datenblatt ist doch in meinem ersten Beitrag automatisch verlinkt.
Baudrate ist ca. 50kbps, das ist für I2C ziemlich wenig.
Gemessen wurde mit einem Oszi.
Der Effekt tritt auch schon auf, wenn ich mit dem Mikrocontroller mit
nur 1Hz SDA und SCL toggle. Beide haben ja je einen 10kOhm-Pullup nach
3.3V, der Mikrocontroller schafft es bei angeschlossener Leitung nicht,
den Pegel unter etwa 1V zu drücken, damit passiert auf der 1.8V-Seite
des PCA9306 gar nichts mehr, SDA und SCL bleiben da auf 1.8V.
Jetzt habe ich wieder einen Sensor mit einem kurzen Kabel angelötet,
alles funktioniert wieder.
Die Ursache würde ich aber trotzdem gerne noch verstehen.
DCDC schrieb:> Jetzt habe ich wieder einen Sensor mit einem kurzen Kabel angelötet,> alles funktioniert wieder.
Das hat häufig mit der Länge des Kabels nichts zu tun. Einige Meter
sind, auch wenn hier immer wieder fälschlicherweise das Gegenteil
behauptet wird, kein wirkliches Problem, auch nicht bei 100kHz und mehr.
Das Problem ist Übersprechen, Cross Talk.
U. M. schrieb:> sind diese Treiber extrem "giftig". Da werden Flankengeschwindigkeiten> im Sub-ns-Bereich angegeben.
Je "schärfer" die Flanken sind, desto stärker koppelt SCL, das immer
schaltet, auf SDA über. Man sollte das Kabel immer so belegen, das SCL
und SDA mit einer der Versorgungen zusammen läuft. Wobei es keine Rolle
spielt, welche Versorgung es ist, Vcc oder GND. Bei einem UTP-Kabel also
SCL und GND (Vcc) in einem Pärchen, SDA und Vcc (GND) in einem anderen.
Bei einem Flachkabel wären das SCL, GND, SDA und dann Vcc. Viele
Breakout-Boards sind anders belegt.
MfG Klaus
DCDC schrieb:> 6 von 9 Pegelwandlern sind defekt
Wozu 9 Wandler?
Typisch hat man eine 3,3V- und eine 1,8V-Seite und dazwischen genau
einen Pegelwandler.
I2C ist nicht Hot-Plug fähig. Du brauchst mindestens voreilende
Steckerkontakte für VCC und GND, wenn Du unter Spannung stecken willst.
Und in der Regel muß der Master dann erstmal sich und alle Slaves
resetten.