Issues with I2C communication on Orin NX 16GB

Hello,

we are currently testing the orin nx 16gb module into our custom carrier board and we are facing i²c issues

HW setup:

  • fpdlink III deserializer ds90ub954 connected to i2c@3180000 (i²c bus 2)
  • fpdlink III deserializer ds90ub954 connected to i2c@c250000 (i²c bus 7)
  • 4x irs2381c cameras connected via de-/serializer (ds90ub954 / ds90ub953)
    - 2x connected via i2c@3180000
    - 2x connected via i2c@c250000
  • there are no other participants connected to these busses!

SW setup:

  • JetPack 6.1
  • L4T 36.4

we often have i²c timeouts when reading/writing, mainly this is happening on bus7, but we also see it happening on bus2.
The logs shows one of these two error messages when such an issue occurs.

170204.388736 0d-75-2e kernel: tegra-i2c c250000.i2c: DMA transfer timed out
170204.389156 0d-75-2e kernel: tegra-i2c c250000.i2c: setting default prod
170204.389422 0d-75-2e kernel: tegra-i2c c250000.i2c: setting prod: prod_c_fm

170204.500743 0d-75-2e kernel: tegra-i2c c250000.i2c: I2C transfer timed out
170204.501201 0d-75-2e kernel: tegra-i2c c250000.i2c: setting default prod
170204.501463 0d-75-2e kernel: tegra-i2c c250000.i2c: setting prod: prod_c_fm

we attached an oscilloscope to the clock and data lane:
(pink is the data lane, yellow is the clock lane)

successfull i2c communication:

faulty i2c communication:

The orin nx som module is not properly generating the signals in the error case.
Can you please guide us to fix this issue?

Thanks!

From a HW perspective, please check for I2C bus voltage compatibility like 1V8 and 3V3 devices are connected to 1V8 and 3V3 I2C bus segments respectively. Use level shifters, if needed for voltage level translation. If multiple I2C devices on the same I2C bus then make sure they have unique I2C addresses and there is no address conflict on the I2C bus. Check the pull up resistors are used on SDA and SCL on the bus. You could connect I2C bus protocol analyzer to check the traffic/transactions on the bus. Measure the I2C bus frequency and check the voltage levels are correct on the bus. Start with only one device connected on the I2C bus and check if you still get failure or not. Continue adding one I2C device at a time to find out which device might be causing the failure.

Do you check by i2c utilities like i2cget/i2cset?

Hi ShaneCCC,

thank you very much for your assistance.

We have found the faulty device on our end.

1 Like