Jetson AGX Xavier I2C not working anymore

Hi,

I2C was already working on Jetson AGX. I used the bus 8 on the expansion header.

But now when I try to
sudo i2cdetect -y -r 8
it works very slow and has timeouts according to dmesg:

[Jan25 11:38] tegra-i2c 31e0000.i2c: pio timed out addr: 0x3 tlen:12 rlen:4
[  +0.000164] tegra-i2c 31e0000.i2c: --- register dump for debugging ----
[  +0.000126] tegra-i2c 31e0000.i2c: I2C_CNFG - 0x22c00
[  +0.000097] tegra-i2c 31e0000.i2c: I2C_PACKET_TRANSFER_STATUS - 0x10001
[  +0.000134] tegra-i2c 31e0000.i2c: I2C_FIFO_CONTROL - 0x0
[  +0.000096] tegra-i2c 31e0000.i2c: I2C_FIFO_STATUS - 0x800080
[  +0.000241] tegra-i2c 31e0000.i2c: I2C_MST_FIFO_CONTROL - 0x70000
[  +0.000125] tegra-i2c 31e0000.i2c: I2C_MST_FIFO_STATUS - 0x800000
[  +0.000115] tegra-i2c 31e0000.i2c: I2C_MST_PACKET_TRANSFER_CNT - 0x0
[  +0.000122] tegra-i2c 31e0000.i2c: I2C_INT_MASK - 0x7d
[  +0.000097] tegra-i2c 31e0000.i2c: I2C_INT_STATUS - 0x2
[  +0.000099] tegra-i2c 31e0000.i2c: i2c transfer timed out addr: 0x3

I tried the other I2C bus as well on the expansion header (I2C_GP2_DAT_3V3, I2C_GP2_CLK_3V3), but I can’t find the I2C device (what i2c bus is it? I tried all of them).

I tried different I2C devices (PCA9685, PCF8574), both not detected.

My I2C devices are working correctly, I tried them with Raspberry Pi.

One problem that I had some time ago with the Jetson AGX is that it needs Pullups on SDA and SCL, but I tried with our without them.

So does anyone have any ideas? How can I be sure that the I2C chip is working correctly (with an logic analyzer?). The drivers should not be the problem, because that should be resolved if I restart right?

Best regards

It’s better consult with HW to check the power and probe the signal.

I2C bus8 uses I2C_GP5_DAT (pin3) and I2C_GP5_CLK (pin5).

Ok thank you for the replies.

Ok, I measured now the pins I2C_GP2_DAT_3V3 (pin27), I2C_GP2_CLK_3V3 (pin28) and they have both zero voltage. They should be pulled up by a 2.2k resistor to 3.3V according to the datasheet. When I measure the resistance to ground from these pins it shows 4.6k resistance, which should not be right or is something configured wrong? The connections to the chip are working.

Ok, but I was wondering which I2C bus is corresponding to pin27 and pin28.

Hi, please check the schematic for it. There is a jumper (J514) on board for voltage selection of I2C leve shift, you need to select 1-2 (3.3V) or 2-3 (1.8V) for it.

Thank you for the idea, but I checked that already…

I think the hardware is just broken… Does anyone have an idea how it could break?

Can wrong connection break it, like if you accidentaly connect it to ground or Vcc?
And are the header pins ESD protected?

Pin 27 and Pin 28 should be on I2C bus 1. See:

Without sensors and try:

sudo i2cdetect -y -r 1

If “UU” appears, that address is not available.
See also:

man i2cdetect

Hello All
I am facing the same issue with Xavier NX, trying to connect PCA9685 board after installing Adafruit CircuitPython liberary but NX is not detecting the port at all, when I try to run the command, it just says “Clearning the Pins” no other errors. When I run sudo i2cdetect -y -r 1 none of the rows are detected. Can some one please help ?

Hi,
Regarding the PCA9685 running on NX. I have a Jeston Nano application that I’m upgrading to rn on NX. I encountered the same issue and found that the channel mapping is slightly different between these platforms. My configuration uses a 16 port ADAFruit Servo/PWM board connected via expansion header. If you run i2cdetect -y -r 8 on NX you should see address 40 (and in my case 70) populated. In my application. I changed i2c bus from 1 (which I used in Nano) to 8 for NX. After that change my application worked on NX the same as the Nano.