I am working on a project where we use the USCI_B1 controller of a MSP430F5324 in I2C master mode to control a temperature sensor IC. The temperature sensor is at the end of a wired probe, and occasionally the probe can pick up noise on the bus that can cause the temperature IC to indefinitely stretch the final clock of the ACK following the clocking of the sensor's address. In this case, we take the following actions:
- Set UCSWRST
- Configure the pins to IO function
- Reset the sensor IC
- Configure the pins to primary function
- Clear UCSWRST
Following this, the next I2C transaction start condition is much shorter than typical. Also, it seems following the sensor IC successfully ACKing it's address, UCTXIFG is never set, and the SDA line goes high a half clock period following the rising edge of the ACK clock. I've looked through the register settings pretty carefully, and the controller appears to be configured correctly.
My question is, could resetting the controller while the bus is in a stalled state cause problems? Does anyone see any issues with my approach?
Thanks in advance.