0
\$\begingroup\$

I have an MSP430F6659 connected to a ISO1541 via I2C with 1.5K pull-ups. The I2C bus is through wire instead of PCB trace so I'm able to swap out identical PCBs with the ISO1541 ICs.

One of these boards with the ISO1541 works just fine. I can see the clock and data signals in the scope. However, when I connect the other one and try to send a byte with the same MSP430, the signal remains flat at 3.3V.

Doesn't the master have a say as to whether or not the signal goes low? Can any of the slaves prevent the master from bringing the line low?

\$\endgroup\$
  • 1
    \$\begingroup\$ If there isn't even the slightest dip in the signal, you have a short to VCC. Plain and simple. \$\endgroup\$ – Asmyldof Apr 7 '16 at 0:01
  • \$\begingroup\$ Which signal stays high, the clock or the data? \$\endgroup\$ – gbarry Apr 7 '16 at 0:03
  • \$\begingroup\$ Both the clock and the data stay high \$\endgroup\$ – Justin Manuel Apr 7 '16 at 0:59
  • \$\begingroup\$ If this is one board out of multiple copies, then that board has a fault. Double check for solder bridges. \$\endgroup\$ – Passerby Apr 7 '16 at 3:35
1
\$\begingroup\$

No this should not be possible. I2c lines are open drain, so interfaces can only force the signal low.

I would start by looking for shorts on the slave board between the lines and 3v3. The msp430 will only be able to pull down with a limited strength.

The slave ic could be damaged, or configured incorrectly. Some have bootstraps which mux the pins between i2c and spi (spi can drive the lines high).

The ic you mention is an isolator, which may exhibit bad behaviour if the secondary voltage isn't correct. Check every pin voltage and look for differences between the failed and working example.

If none of that works I would guess your ic is damaged. The maximum current for side 1 is 3.5mA. If you have exceeded this, or subjected it to overvoltage then the internal protection diodes may have failed short.

\$\endgroup\$
  • \$\begingroup\$ This is on both the SDA and SCL. The signal stays completely still. The pullups are on the slave end. The slave doesn't seem to have any problems other than the flat signal lines. \$\endgroup\$ – Justin Manuel Apr 7 '16 at 1:03
  • \$\begingroup\$ IN which case I would start by looking for some kind of short between the lines and 3v3 on the slave board. Does the slave mux these pins for other uses? spi for example. \$\endgroup\$ – Loganf Apr 7 '16 at 6:23
  • \$\begingroup\$ This is not a forum, and answers are to be used only for answers, not questions. To request more information, use a comment. \$\endgroup\$ – CL. Apr 7 '16 at 6:37
  • \$\begingroup\$ Okay CL, sorry! I put it as an answer because it answered the qquestion.requested more info because it doesn't help much just to state "No." And leave it at that. \$\endgroup\$ – Loganf Apr 7 '16 at 6:53
  • \$\begingroup\$ @loganf You were right, it isn't possible. I was missing a step at the beginning of the code where it sends a byte and checks for an ack. If it doesn't receive, then it never allows a byte to be transferred again. Thanks for the help. \$\endgroup\$ – Justin Manuel Apr 7 '16 at 18:50

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.