PCA9685 Not Responding Properly on Jetson Orin Nano I²C

Hi everyone,

I’m trying to use a PCA9685 PWM breakout board with my Jetson Orin Nano. I have connected SDA/SCL to pins 27 and 28, and VCC/GND are powered correctly. However, I cannot communicate reliably with the board.

When I run i2cdetect I get the following results:

  • Before shorting A1: 20x5 UU, 40x0 UU, 70x0 70

  • After shorting A1: 20x5 UU, 40x0 UU, 70x0 70, 60x0 60

I’m not sure if my I²C pins are configured correctly. I followed the JetsonHacks method, and my GPIO pins are working, but I can’t use jetson-io.py to configure I²C because it breaks my GPIO setup.

Here is my current .dts overlay file for the Jetson header pins:

/dts-v1/;

/plugin/;

 

/ {

    jetson-header-name = "Jetson 40pin Header";

    overlay-name = "Pin 7 gpio bidirectional";

    compatible = "nvidia,p3768-0000+p3767-0000\0nvidia,p3768-0000+p3767-0001\0nvidia,p3768-0000+p3767-0003\0nvidia,p3768-0000+p3767-0004\0nvidia,p3768-0000+p3767-0005\0nvidia,p3768-0000+p3767-0000-super\0nvidia,p3768-0000+p3767-0001-super\0nvidia,p3768-0000+p3767-0003-super\0nvidia,p3768-0000+p3767-0004-super\0nvidia,p3768-0000+p3767-0005-super\0nvidia,p3509-0000+p3767-0000\0nvidia,p3509-0000+p3767-0001\0nvidia,p3509-0000+p3767-0003\0nvidia,p3509-0000+p3767-0004\0nvidia,p3509-0000+p3767-0005";

 

 

    fragment@0 {

        target = <&pinmux>;

 

        __overlay__ {

            pinctrl-names = "default";

            pinctrl-0 = <&jetson_io_pinmux>;

            

            jetson_io_pinmux: exp-header-pinmux {

            hdr40-pin7 {

                nvidia,pins = "soc_gpio59_pac6";

                nvidia,tristate = <0x0>;

                nvidia,enable-input = <0x1>;

                nvidia,pull = <0x0>;

            };

 

            hdr40-pin15 {

                nvidia,pins = "soc_gpio39_pn1";

                nvidia,tristate = <0x0>;

                nvidia,enable-input = <0x1>;

                nvidia,pull = <0x0>;

            };

 

            hdr40-pin29 {

                nvidia,pins = "soc_gpio32_pq5";

                nvidia,tristate = <0x0>;

                nvidia,enable-input = <0x1>;

                nvidia,pull = <0x0>;

            };

 

            hdr40-pin31 {

                nvidia,pins = "soc_gpio33_pq6";

                nvidia,tristate = <0x0>;

                nvidia,enable-input = <0x1>;

                nvidia,pull = <0x0>;

            };

            

            hdr40-pin32 {

                nvidia,pins = "soc_gpio19_pg6";

                nvidia,tristate = <0x0>;

                nvidia,enable-input = <0x1>;

                nvidia,pull = <0x0>;

            };

 

            hdr40-pin33 {

                nvidia,pins = "soc_gpio21_ph0";

                nvidia,tristate = <0x0>;

                nvidia,enable-input = <0x1>;

                nvidia,pull = <0x0>;

            };

            hdr40-pin27 {

                nvidia,pins = "gen2_i2c_sda_pdd0";

            };

            hdr40-pin28 {

                nvidia,pins = "gen2_i2c_scl_pcc7";

            };

        };

        };

    };

};

I’m trying to output PWM signals to the board (tested channel 15 / OUT15), but when measuring the yellow PWM output pin, I only get a few millivolts, far below the expected 3.3 V or 5 V. I’ve also tested with a LED and a series resistor, but it barely lights up.

My questions:

  1. Could my I²C configuration in the .dts file be incorrect, causing communication issues with the PCA9685?

  2. Is it possible that the PCA9685 board is defective, given the address changes (0x60) after shorting A1?

  3. How can I safely enable I²C on the Jetson without breaking my existing GPIO setup?

Any advice on debugging this PCA9685 + Jetson Orin Nano setup would be greatly appreciated.

Thanks in advance!

I2C bus default enable don’t need jetson-io to enable it.

You may need to probe the signal to confirm the device ack for the i2c broadcast command.

Thanks

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.