I am using the I2C peripheral in the MSP430F5438A for communication to a 24FC512 EEPROM. The bus only has this device on it and it is running at ~250kHz. The driver for this is interrupt driven for transmission and reception but with some polling to make things simpler to manage. At the moment we are polling the UCTXSTP bit in UCBXCTL1 register to determine if the I2C transaction is complete.
Every once and a while we timeout waiting for the stop bit to go low signaling the end of the stop bit transmission. Using the debugger when this happens we can see that there are no errors obvious errors in the I2C registers and using a scope the bus shows both lines high.
So my question is, is the the UCBBUSY bit in UCBXSTAT a better choice to determine if the bus has completed it's transaction or is there something I am missing?
Darren