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:
-
Could my I²C configuration in the
.dtsfile be incorrect, causing communication issues with the PCA9685? -
Is it possible that the PCA9685 board is defective, given the address changes (
0x60) after shorting A1? -
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!