1
\$\begingroup\$

I'm trying to use an I2C isolator IC (ADuM1251) to isolate one of the slaves on my I2C bus.

Without the isolator, the communication works fine. With the isolator, my setup is the following:

Setup

I'm using 1μF decoupling capacitors. The master is connected to side 1 and the slave to side 2. The pull-up resistors on each side are chosen so the rise time of the signal on each side falls within the I2C specification.

Using the isolator, a read from the slave will work for a few bytes and then stop working. From the scope it looks to me like the the slave can't drive the bus low.

Scope

This results in the master reading the first few bytes correctly and 0xFF for the remainder. The slave should be able to source enough current to drop the lines low (3.3V, 2.2kΩ, max current source per pin is 4mA).

Any advice on how to proceed is awesome!

\$\endgroup\$
  • 2
    \$\begingroup\$ pls post your actual schematics with voltage and resistor values \$\endgroup\$ – User323693 Aug 7 '15 at 11:03
  • \$\begingroup\$ Also post the complete waveform showing start / restart and address transmissions. \$\endgroup\$ – Adam Lawrence Aug 7 '15 at 12:20
  • 1
    \$\begingroup\$ Is the scope trace on side 2 or side 1? From the data sheet it looks like side 1 only has 3mA capability. You are asking for ~5mA. \$\endgroup\$ – Kevin White Aug 7 '15 at 14:16
  • \$\begingroup\$ Not sure if it is a measurement error of your SDA, but it looks like you are coupling SCL pulses onto your data. \$\endgroup\$ – cowboydan Aug 9 '15 at 21:20
  • \$\begingroup\$ 640 ohms is a VERY strong pull-up, even 2.2 kohms is too low for I2C. 4.7k and 10k are commonly used values. \$\endgroup\$ – Ben Voigt Aug 9 '15 at 22:56
0
\$\begingroup\$

The datasheet says Side 2 will draw 1.6 to 2.8mA when connected to 3.3V. The resistor setup you've provided draws 1.5mA from each resistor if both SDA and SCL are low, exceeding the source limit.

You can increase the resistor size so that they only used .5mA each, but that will increase RC time constant an limit your I2C clock speed if you need a fast I2C that is.

Otherwise you could use a 3.3v regulator on the slave side to take the power supply away from the slave.

\$\endgroup\$
  • 1
    \$\begingroup\$ I2C speeds only go up to 400kHz, so resistors can get pretty large before the RC time constant starts becoming a problem. \$\endgroup\$ – Ben Voigt Aug 9 '15 at 22:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.