GPIO #10 & #12 test failed

Hi Nvidia team,

We are building custom board for Jetson Orin Series(Orin Nano & Orin NX) Modules with L4T 36.4.3.
(This patch has been applied 40hdr - SPI1 gpio padctl register bit[10] effect by gpiod tools in JP6 - #20 by KevinFFF)
We are testing DIO pins connected to GPIO#10 & GPIO#12 (PEE.02 & PN.01).
Both pins are configured as bidirectional & pull-high by custom board.

I’m testing it by the following steps.

  1. After booting up, I can measure both pins being 5V by voltage meter.
    But get 1 & 0 by gpioget command as below
user@tegra-ubuntu:~$ sudo gpioget $(sudo gpiofind 'PN.01')
0
user@tegra-ubuntu:~$ sudo gpioget $(sudo gpiofind 'PEE.02')
1
  1. I short both pins with GND, I can get both 0 by gpioget
user@tegra-ubuntu:~$ sudo gpioget $(sudo gpiofind 'PN.01')
0
user@tegra-ubuntu:~$ sudo gpioget $(sudo gpiofind 'PEE.02')
0
  1. I short both pins with 5V, I still get both 0 by gpioget
user@tegra-ubuntu:~$ sudo gpioget $(sudo gpiofind 'PN.01')
0
user@tegra-ubuntu:~$ sudo gpioget $(sudo gpiofind 'PEE.02')
0
  1. Set both pins to 1 by gpioset and mesure by voltage meter
# 0.79V
user@tegra-ubuntu:~$ sudo gpioset -m wait $(sudo gpiofind 'PN.01')=1
^C
# 5.04V
user@tegra-ubuntu:~$ sudo gpioset -m wait $(sudo gpiofind 'PEE.02')=1
^C
  1. Set both pins to 0 by gpioset and mesure by voltage meter
# 0.79V
user@tegra-ubuntu:~$ sudo gpioset -m wait $(sudo gpiofind 'PN.01')=0
^C
# 0.79V
user@tegra-ubuntu:~$ sudo gpioset -m wait $(sudo gpiofind 'PEE.02')=0
^C

In summary, PN.01 always keep 0/low voltage and PEE.02 failed to get 1 when short with 5V.
Is there anything else I need to check?

The devicetree generated by spreadsheet as the attachment.
Orin-test-pinmux.zip (5.9 KB)

*** Please note that this reply is generated by LLM automatically ***

The issue you’re experiencing with the Jetson Orin NX and custom board development involves configuring and testing DIO pins connected to GPIO10 and GPIO12 (PEE02 and PN01). Despite setting these pins as bidirectional and pull-high, you’re encountering inconsistent behavior when measuring their states using gpioget and gpioset commands. Let’s break down the key points and potential steps to resolve or further troubleshoot the issue:

  1. Configuration and Initial State:

    • You’ve configured GPIO10 and GPIO12 as bidirectional and pull-high on your custom board.
    • Initially, after booting, both pins measure 5V, which aligns with the pull-high configuration.
    • However, using gpioget, you’re reading both pins as 0, which doesn’t match the expected high state.
  2. Testing with External Connections:

    • When you short both pins to GND, gpioget correctly reads them as 0.
    • When you short both pins to 5V, gpioget still reads them as 0, which is unexpected for PN01 and indicates a failure for PEE02 to be recognized as high when externally driven.
  3. Using gpioset:

    • Setting both pins to 1 with gpioset and measuring with a voltage meter shows the expected behavior for the output state.
    • Setting both pins to 0 with gpioset also shows the expected behavior.

Potential Issues and Troubleshooting Steps:

  • Device Tree Configuration: Ensure that the device tree configuration for these GPIOs is correct. The fact that you’ve generated the device tree using a spreadsheet and applied a patch suggests you’re on the right track, but double-checking the configuration for GPIO10 and GPIO12 in the device tree source files is crucial.

  • Pin Multiplexing: Verify that the pin multiplexing (pinmux) is correctly set for these GPIOs. The Jetson Orin series often requires specific pinmux configurations to ensure GPIO functionality. The Orin_test_pinmux.zip you mentioned should be reviewed to ensure it matches your hardware and software configurations.

  • GPIO Pad Control: The mention of a patch affecting the SPI1 GPIO pad control register bit 10 suggests there might be specific requirements for configuring GPIOs on your custom board. Ensure that any patches or modifications to the GPIO pad control are correctly applied and understood.

  • Hardware Verification: Beyond software, it’s essential to verify the hardware connections and design. Ensure that the connections from the Jetson module to your custom board are correct and that there are no issues with the PCB design that could affect the GPIO functionality.

  • Comparison with Similar Issues: The behavior you’re seeing, especially with PN01 always reading low and PEE02 failing to read high when shorted to 5V, suggests there might be a specific issue with either the hardware or the software configuration of these pins. Comparing your setup and findings with known issues or documentation for the Jetson Orin NX might provide insights.

  • NVIDIA Support and Community: Given the complexity of custom board development and the specific nature of your issue, reaching out to NVIDIA’s support forums or developer communities might provide additional insights or direct assistance from individuals who have encountered similar challenges.

In summary, while you’ve taken significant steps in configuring and testing your custom board’s GPIO functionality, there appear to be discrepancies in how these pins are behaving compared to expectations. A thorough review of the device tree configuration, pin multiplexing, and hardware design, along with potentially seeking community or official support, will be necessary to resolve these issues.

*** Please give the thumbs up if you get answers you like. Or provide feedback to help us improve the answer. ***

Hi kevin.chen5

Is the issue specific to your custom board? (i.e. would you hit the similar issue with the devkit?)

Could you elaborate on this setup?
Would you hit the similar issue if you don’t connect anything on these 2 pins?

I need to check if there is any devkit available from other team.

It’s a isolator design as block diagram below.

And I tried to cut from the red line in the block diagram.
(All Voltage are measured by meter from red line)

  1. Read Default value → Wrong value PEE.02
# < 1V from Red Line 
user@tegra-ubuntu:~$ sudo gpioget $(sudo gpiofind 'PN.01')
0
# < 1V from Red Line
user@tegra-ubuntu:~$ sudo gpioget $(sudo gpiofind 'PEE.02')
1
  1. Set to 1/0 → OK
# 5V
user@tegra-ubuntu:~$ sudo gpioset -m wait $(sudo gpiofind 'PN.01')=1
^C
# 5V
user@tegra-ubuntu:~$ sudo gpioset -m wait $(sudo gpiofind 'PEE.02')=1
^C
# 0V
user@tegra-ubuntu:~$ sudo gpioset -m wait $(sudo gpiofind 'PN.01')=0
^C
# 0V
user@tegra-ubuntu:~$ sudo gpioset -m wait $(sudo gpiofind 'PEE.02')=0
^C
  1. Short GPI & GPO test → OK
# Set PN.01 to GPI
user@tegra-ubuntu:~$ sudo gpioget $(sudo gpiofind 'PN.01')
0
# Set PEE.02 to GPI
user@tegra-ubuntu:~$ sudo gpioget $(sudo gpiofind 'PEE.02')
0
# Short PN.01 & PEE.02
# Set PEE.02 to 1
user@tegra-ubuntu:~$ sudo gpioset -m wait $(sudo gpiofind 'PEE.02')=1
^C
# Read from PN.01
user@tegra-ubuntu:~$ sudo gpioget $(sudo gpiofind 'PN.01')
1
# Set PEE.02 to 0
user@tegra-ubuntu:~$ sudo gpioset -m wait $(sudo gpiofind 'PEE.02')=0
^C
# Read from PN.01
user@tegra-ubuntu:~$ sudo gpioget $(sudo gpiofind 'PN.01')
0
# Set PEE.02 to GPI
user@tegra-ubuntu:~$ sudo gpioget $(sudo gpiofind 'PEE.02')
0
# Set PN.01 to 1
user@tegra-ubuntu:~$ sudo gpioset -m wait $(sudo gpiofind 'PN.01')=1
^C
# Read from PEE.02
user@tegra-ubuntu:~$ sudo gpioget $(sudo gpiofind 'PEE.02')
1
# Set PN.01 to 0
user@tegra-ubuntu:~$ sudo gpioset -m wait $(sudo gpiofind 'PN.01')=0
^C
# Read from PEE.02
user@tegra-ubuntu:~$ sudo gpioget $(sudo gpiofind 'PEE.02')
0

Except for default value, everything works.
I need to check out the design of isolator part.

Any idea about wrong default value?

This pin is used as M2 alert by default and it seems connecting to M2 slot for the notification.
Could you try using another pin instead?

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