I am trying to interface the BBB with an MPU6050 accelerometer/gyroscope.
I am using the i2c-1 bus, with the interrupt connected to an unused pin. I am running kernel version 3.14.57-ti-r78, with the included inv-mpu6050 kernel mode driver.
It seems to work well, but when I increase the sampling frequency (FIFO rate) of the IMU, I start getting a lot of i2c errors in dmesg, such as:
Mar 7 13:28:16 DL-EM01 kernel: [ 362.893943] omap_i2c 4802a000.i2c: SDA is stuck low, driving 9 pulses on SCL
Mar 7 13:28:19 DL-EM01 kernel: [ 365.784033] omap_i2c 4802a000.i2c: SDA is stuck low, driving 9 pulses on SCL
Mar 7 13:28:21 DL-EM01 kernel: [ 368.651978] omap_i2c 4802a000.i2c: controller timed out
Mar 7 13:28:23 DL-EM01 kernel: [ 369.674012] omap_i2c 4802a000.i2c: SDA is stuck low, driving 9 pulses on SCL
Mar 7 13:28:26 DL-EM01 kernel: [ 372.554164] omap_i2c 4802a000.i2c: SDA is stuck low, driving 9 pulses on SCL
The BBB usually crashes shortly thereafter.
I tried putting the i2c bus into fast-mode via the device tree, but the problem still occurs. If I reduce the sample rate, it happens less often.
I don’t quite understand what would be causing the entire i2c subsystem to crash? Has anyone had any success with this? I tried writing a userspace driver that simply polls the MPU6050 and it runs fine, albeit without interrupts.