I2C_BUS_ARBITRATION_LOST_ERROR

Iam using TMDSSK3358 EVM from TI. I posted this query in the TI website but didnt get much of help. I feel that my EVM is more similar in architecture to BBB. So iam posting this here. Please do help me…

The EVM (master) is connected to mpu6050 (imu) via I2C .(iam using linux sdk and i2cdev) I poll the readings from MPU continously.

The code is provided in the following link :

https://github.com/richardghirst/PiBits/tree/master/MPU6050-Pi-Demo

Iam experiencing these errors: “omap_i2c omap_i2c.1: Arbitration lost” and “waiting for bus ready”. The EVM cannot be rebooted(via software) then. I have to power off the device to make it work again.

I used the same code to work in raspberry pi and it worked without any issues. . I saw that the I2c bus in EVM is shared between many internal devices like PMIC,Memory etc … whereas its not so in raspberry. Is this the cause?

Or is it that my EVM expects n bytes from slave and my slave can only respond to less than n bytes at a time? Thus making my master wait for the data it will never recieve and hence go insane!..

I also came to know that the i2c on getting timed out, calls the init function, but the bus arbitration doesnt change the state(from the waiting state).

I kindly request your help, as i couldnt find any way sorting this out!.. :frowning:

Please help me out on this asap…

Have you monitored the actual I2C signals? It sounds like you might
have a shorted signal, or possibly one of the I2C devices is confused
and keeping the data line pulled low.