I recently encountered an I2C bus hang issue, particularly when resetting the master in the middle of a transaction, specifically when the slave device is acknowledging. In my case, the master is an RT 1176, and the slave is an SMI230.
What occurs is that upon RESET, the clock from the master stops, causing the slave to hold the SDA line LOW. When the I2C module restarts, the bus remains stuck BUSY with SDA low.
To resolve this issue, I employed a method to toggle the SCL line a few times until the slave releases the SDA line. Still the issue remains the same.
We have isolated MCU and SMI230 device, I2C line SDA and SCL are pulling it low from SMI230 device.
What could be the reason for this?