I am working on an application which requires creating an I2C communication with another instrument. I cannot post any code because the software is proprietary. The I2C controller has already reduced speeds to 100 kHz, and the device interfaced with the OMAP processor definitely works correctly (verified in our debugging process). The lines are pulled up correctly, and we tried using other I2C controllers and could not see the device at all. The console output is below:
I apologize for the image, but this is what the software guy gave me (instead of a log). What I can tell you about the hardware and software is that it is our hardware, not an EVM, and the Linux version is 2.6.32. If you have any questions about the device and software, I will try to answer, but I would appreciate any help you can provide. I apologize for not being able to provide more information about the problem.
Which one is your master?
From this logs you can't say much. But you can try the following.
1. First check the I2C controller to which that you are connected? e.g. I2C1, I2C2 or I2C3 etc.. See whether you are using the same controller in your driver.
2. Check whether the 7-bit slave address specified is correct or not.
3. See whether the device datasheets specify any pull-up values or not.
4. See the pinmux settings for the I2C pins are correct or not.
5. See whether any power on sequence for the slave chip.
6. Last, connect an oscilloscope to the I2C lines and see any activity happening on the bus during the transfer.
-Renjith | www.pathpartnertech.com | Verify the answer if you think your query is resolved
I am also facing the I2C time out problem on AM335x platform. I do not have problem during bootup. I have verified the slave address and have pull up resistors of 2.2K.
Initially I2C communication is good for couple of seconds and then time out happens. Once this happens i am resetting the slave device and then communication starts again. After every few seconds I2C lines are going low and getting the time out indication. Not sure who is pulling the lines low.
Any change in driver is required to aviod time out issues.
We have tried communicating to the slave with another processor on the same board by disconnecting ARM processor and it works fine.
Looks like some bus capacitance issue.. I'm not an electronics expert. But still,
1. how many slaves are connected on your bus?
2. Which is the device that you are trying to communicate with?
3. Have you tried with different values of pull-up registers?
4. If there are more than one device on the bus, can you disconnect one by one and see whether the issue occurs or not?
All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with respect to these materials. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.
TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs andembedded processors, along with software, tools and the industry’s largest sales/support staff.