I have a problem with I2C on imx6Solo.
Here is my environment: Processor: imx6Solo, OS: Windows embedded compact 2013. Board: Custom.
imx6solo is connected with a touch controller via I2C. When the device boots, everything seems ok but after first touch on the screen (which means after first I2C read or write operation) I2C hangs.(apparently, device hangs).
My observations are:
1. ) Interrupt coming from screen touch can be detected. I can see this fact on the console output. (Every touch IRQ is logged to serial trace)
2. )After single touch on the screen, read and write requests are seen periodically.
3.) The I2C protocol flow is here:
Grant Bus Master -> change to receive mode -> Ensure the Start operation is DONE.
To ensure the start operation is done, check if IBB bit is set to 1(which means I2C is busy). The problem arised here. IBB bit is never set to 1!! in other words stucks at ZERO. I am checking this case several times and after a while gives such an error "I2C Generate Start can't launch".
4.) Second finding is SDA line. I probed the I2C lines and observed that when the device wake up, both I2C line states seem ok.(both stay high) but after first touch SDA stucks at ZERO!!! When the line is observed for a while, sometimes it gets high for a short time but then goes back to low which does not make sense.
I believe that the problem should not be too hard and i am missing a point. Could you all please help me for this issue? What can the reason of this problem be?
Thanks in advanced,