Post Go back to editing

LT3960 strange work

Category: Hardware
Product Number: LT3960


I made a measurement compilation:

Master is sending 1 byte to Slave, Master asks back immediately the sent value from slave, Slave immediately sends back the value received. If the byte value is between 0-127, works well:

If the byte value is greater than 127, this happens: Slave begins to write SDA. After the write of first bit of value of 128 -it seems- the SCL stops, as if the master would finish the transmission.

I don't know why, but if i remove lt3960 from the compilation (only the I2C barrier was between the arduinos), the I2C communication is perfect over 127 (in 1 byte) value.

clarification, addition
[edited by: wolfmanus at 7:00 AM (GMT -4) on 14 Apr 2023]
Parents Reply Children
  • Hello franke,

    First of all sorry for the delay.

    I couldn't solve the problem. The project time did not allow further experimentation with LT3960.

    I used two (SCL/GND, SDA/GND) coax cable (about 2m) and i2c regenerator (master side). It not healthy but works without error, I had to finish somehow.

    For the next project I use a short cable (max. 20cm possibly with a regenerator) for i2C slave device and i use distributed control at ethernet (Modbus TCP, MQTT, Ethernet/IP, ...), instead of a long I2C cable (with centralized control).

  • Hello wolfmanus,

    I have good news for you. In our setup, we did find the root cause and solved the problem.

    We looked ad the MAX14933 datasheet at the logic input and outputs voltage thresholds section and the LT3960 corresponding section for the I2C logic levels. We have a 5V supply. Our bit problems were happening because of wrong input and output levels when we hooked the A side of the MAX14933 to the LT3960 I2C port. Take a look a the picture.

    MAX14993 LT3960

    The output voltage of logic low of the A side is 0.6V to 0.9V. The LT3960 input needs a maximum of 0.4V to see a logic low. This is a mismatch.The LT3960 does not guarantee to see a logic level of low.

    The logic low output of the MAX14933 B side is 0.4V maximum, so that respects the LT3960 low logic thresholds better. Fortunately, the MAX14933 pinout is symmetrical. We de-soldered the MAX14993, flipped it and put it back with the B side attached to the LT3960. After doing this, we ran the system and found no bit errors.

    Before the fix, we had bit errors that happened every few hours. Our bits error was that the CPU was seeing some extra high bits on the data. It was a complicated exercise to see how those logic highs got propagated through the system. The LT3960 was flipping the direction of propagation.

    In your setup, you would have to check the voltage thresholds with the datasheet. I don't see logic lows at two voltage values on one of your picoscope captures. We got logic lows totally at ground and a bit above too when we measure the signals between the MAX14933 and LT3960. That helps to see which chip is driving.

    You could always replace the ADuM1250 with a MAX14933 like us. We have 5V in our system, while you have 3.3V, so you would have to recalculate everything. Of course, you could use Ethernet packets.

    I could recognize Hungarian in your picoscope traces. So you can deduce my origin also.

    Hope this helps,