NXP PCA9615 I2C-Differentialpuffer – Fehler auf SCL-Leitung

Ich verwende das PCA9615-Teil, um einen I2C-Bus zu erweitern. Der PCA9615 wandelt I2C in einen differentiellen Bus um.

PCA9615 https://www.nxp.com/docs/en/data-sheet/PCA9615.pdf

Es gibt eine Steuerbox und eine Remote-Slave-Box. Es gibt vorhandene Puffer in jeder Box. (Analog Devices ADuM1250 I2C-Isolatoren) Die Slave-Box wäre normalerweise in Reichweite der Steuerbox. Ein kurzes Kabel verband die beiden. Das hat gut funktioniert, aber jetzt müssen wir eine Lösung für größere Entfernungen zwischen der Steuerung und der Slave-Box haben. Ich habe den NXP PCA9615 verwendet, um die Entfernung zu verlängern.

Was ich habe ist folgendes.

Steuer-I2C <-> ADuM1250 <--> PCA9615 <======> PCA9615 <--> ADuM1250 <-> Slave-I2C

3,3 V ________| isoliert |____________________________________________ 5 Volt

Die 3,3-V-Seite des ADuM1250 ist von der rechten Seite isoliert. Alles rechts davon wird mit +5 V von der Slave-Box versorgt. Ich verwende ein Cat 5-Kabel, um die beiden PCA9615 zu verbinden. +5 V und Common werden (von der Slave-Box) über die vier Drähte des Cat-5-Kabels geliefert. Die anderen vier sind für die differentiellen SDA- und SCL-Leitungen.

Das Problem, das ich habe, ist, dass die SCL-Leitung des linken PCA9615 ausfällt. Ein Dauertief. Mit einem Ohmmeter bekomme ich 340 Ohm gegen Masse, wobei der Chip aus dem Stromkreis genommen und nicht mit Strom versorgt wird. Wenn die ausgefallene Platine mit Strom versorgt wird (keine anderen Module angeschlossen), ist die SCL-Leitung niedrig. Dies ist mit zwei verschiedenen Modulen auf der Beta-Site passiert. Wir versuchen, eine Reise zum Standort zu planen.

Hat jemand diesen Chip in einem Produkt verwendet? Irgendwelche ähnlichen Ausfälle? Der Fehler lag an der SCL-Leitung, aber ich kann nicht sagen, dass es nur an diesem Pin liegt. Das Problem liegt auf der Single-Ended-Seite und nicht auf der differenziellen Leitungserweiterung.

Das Schema zeigt einen NLSX4373-Puffer in der Slave-Box. Das war falsch. Es ist wirklich ein ADuM1250, das gleiche Teil wie in der Steuerbox, aber nicht isoliert.schematisch

Einige weitere Informationen. Ich habe vorhin gesagt, dass ich am beschädigten SCL-Pin 340 Ohm gegen Masse messe. Dann wird die Schaltung mit Strom versorgt, der Widerstand senkt den Strom von den Pull-up-Widerständen. Die Spannung am Pin beträgt 2 Volt auf einer Platine und 2,7 Volt auf der zweiten Platine.

Erden Sie diese SCL-Leitung mit dem Low-Through-Durchgang zur Differentialseite. Und wenn ich auf der Differentialseite ein Low erzeuge, wird dieses Low an die Single-Ended-SCL-Leitung weitergeleitet und senkt den Strom auf dieser Seite. Der Fehler hat also die Auswirkung, dass ein Widerstand von ~ 300 Ohm gegen Masse / Masse gelegt wird. Immer noch ein Fehler, aber die Signale werden durchgereicht.

Benötigen Sie einen vollständigen Schaltplan (mindestens der Treiber und des Isolators). Außerdem muss man wissen, wie lang der Lauf zwischen den Fahrern ist. Ein Bild von der physischen Anordnung der Boxen wäre auch schön.
Ich habe ein .pdf des kompletten Schaltplans, aber ich habe es nicht im Internet. Die Hauptsteuerung ist eine Wand. Ein Kabel von etwa 6 Fuß kommt aus der Box. Das geht in das Modul mit dem PCA9616. Das Differentialpaar geht zu einem weiteren PCA9615 in 20 Fuß Entfernung auf der anderen Seite der Wand. Zwei Meter Kabel in den Sklaven.
Ohne vollständige Schaltpläne erhalten Sie nur spekulative Hilfe. Ich vermute eine Interaktion zwischen dem ADuM und dem PCA - beide Geräte führen möglicherweise einen Offset ein, der den Bus aufhängt.
Schema hinzugefügt. Die Slave-Box und die Steuerbox zeigen nur die Treiber. Lokale CPU und Bus sind nicht gezeigt.
Was ist der Slave-Chip und was ist die Host-MCU? Was ist die I2C-Taktfrequenz, die Sie verwenden, oder welche Geschwindigkeit benötigen Sie?
Geschwindigkeit ist 100Khz CPUs sind PIC32. Die Taktfrequenz ist niedrig und die CPU sollte irrelevant sein. Ich habe die obige Schaltung mit 300 Metern Kat. 5 getestet, ohne Probleme. Die Feldausfälle waren mit nur 10 Meter Kabel. Und wie gesagt, das Versagen lag auf der nicht-differentiellen Seite.

Antworten (1)

Sind Sie sicher, dass der SCL-Treiber fehlschlägt? Ich denke nicht, dass 340 Ohm gegen Masse bei ausgeschaltetem Chip problematisch sind. Ohne Strom schweben die Gates der Differenztreibertransistoren und könnten sehr leicht zu einem solchen Widerstand schweben.

Was ist der Fehlermodus, den Sie versuchen zu debuggen? Fehlende Kommunikation? Haben Sie ein Oszilloskop verwendet, um sicherzustellen, dass die SCL-Leitung wirklich nicht funktioniert?

BEARBEITEN: (Da ich noch keinen Kommentar abgeben kann: () Welche Widerstände verwenden Sie zum Vorspannen des Differenzbusses?

SCL schlägt fehl. Immer niedrig, wenn nur Strom angelegt wird. Die Status-LED im Schaltkreis leuchtet durchgehend. Ich weiß, dass die Widerstandsmessung eine fragwürdige Sache ist. Aber auf der SDA-Linie komme ich sehr viel höher. Ich habe eine Produktionstestvorrichtung, die das Modul testen kann. Es schlägt fehl, und die SCL-LED hielt an.
Pull-up und Pull-down sind 470 Ohm. Der Widerstand zwischen den Leitungspaaren beträgt 147 Ohm.