Hi all,
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,
Best regards
Considerations of the next thread may be helpful.
"I2C reset"
https://community.freescale.com/thread/316813
Have a great day,
Yuri
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Hi Yuri,
Thank you for your answer.
I applied the solution you proposed with the link but unfortunatelly it did not work
Perhaps it makes sense to check if I2C pull up resistors are optimal, expecially
if an I2C expander is used on the scheme. Please take a look at in section 7.1
(Pull-up resistor sizing) of the I2C specs for more details.
http://www.nxp.com/documents/user_manual/UM10204.pdf
~Yuri.