Other Parts Discussed in Thread: MSP430G2452, MSP430F5419A
I am communicating via I2C between a MSP430F5419A (master using USCI) and a MSP430G2452 (slave using USI). The clock rate is about 100 kHz.
Under normal conditions, the communication works fine with the 2452 performing clock stretching as necessary to ACK the data. However, I have the occasional error occur. The error has several forms, but I was able to reproduce one with some test code.
On the 5419A (master), I added 100 us delays between sending the start condition and the first data byte and between each of the following data bytes. This is to simulate an interrupt firing in the middle of an I2C transaction. When talking to another I2C device on the bus, these delays cause no problems. The 5419A stretches the clock until the next byte is loaded into TXBUF.
However, when talking to the 2452, the 5419A does not stretch the clock as expected. The slave address is sent and ACKed with no problems. After receiving the first data byte, the 2452 stretches the clock before sending the ACK. Once the 2452 lowers SDA, the clock is released even though no byte is loaded into TXBUF and the 5419A should be holding the clock low. The 5419A then goes on to continuously clock out data until the micro is reset.
Any thoughts on what is going on? I didn't find any errata describing this issue.
Attached is a Word document with screen shots.
Thanks for your help,
Austin