I am seeing variable behaviour when my system is coming up. What the system has is an Altera FPGA powered on a secondary supply and the MSP430 on the primary. The FPGA is the only "master" on the I2C bus, the MSP430 is only ever a "slave". The pull up resistors on the I2C between the two are on the secondary power. Initially the secondary power is off and the MSP430 initializes the I2C Pins (P1.6 P1.7) as inputs. Occasionally, when the MSP430 powers up the secondary power and changes the P1.6 and P1.7 to I2C pins, the SDA line is being held low by the MSP430, it is repeatable on some of our boards, but never shows up on others. The MSP430 seems to hold the I2C SDA line low ad infinitum.
The only work around I have found so far is to issue a "Read+Stop" from the FPGA which will toggle the SCL line 9 times and usually the SCL and SDA lines will go high then. Though, I have seen occasionally where the SCL toggle procedure must be done again.
Part information:
MSP430
430G2403
2BKG4
AQL0A
Thanks,
Tom