AnsweredAssumed Answered

How can you detect hang / recover on Kinetis i2c?

Question asked by toddzielinski on Aug 2, 2013
Latest reply on Mar 24, 2014 by OliverSedlacek

I've reviewed the registers, and the app notes for Kinetis' i2c implementation. Looks great, and for the most part works. What I don't see is how to detect / clock out of and recover from a stalled or hung i2c slave on the bus. Any ideas on how we do that? Just check the state of the SDA pin manually, and then switch modes and manually toggle the SCL? We want to have a way of catching and handling / clearing bus errors in case they happen instead of just permanently killing the bus. There doesn't seem to be a good solution for handling this, and I wanted to know if anyone at Freescale or elsewhere has got an answer for this. Most of the discussions talk about using an interrupt driven MQX driver - or disabling it because a part hangs on start and there is no recovery.

 

Anyone?

Outcomes