Jetson Nano GPIO example problem

Hello,
I try to make blink example on Jetson Nano kit with PyPi.When I use simple_out example on Pypi folder, GPIO’s voltage was 1.4 V and 1.5 V instead of 0 V and 3.3 V . It is changing but wrong level. I tried to blink with linux code (sysfs ). But result was same. What may be my problem? Code is working but voltage levels are wrong?
Thanks for interesting.

hello serkanturkkolu,

may I know had you refer to Topic 1049116 for Python GPIO support.
you might also check Topic 1030443 for tutorials showing how to use GPIO.
please also share the steps that you saw GPIO’s voltage was 1.4V and 1.5V instead of 0V and 3.3V.
thanks

When Code is gpio get high voltage is approximately 1.5V and one sec later code is gpio get low voltage is approximately 1.4V.

hello serkanturkkolu,

may I have more details, which pin of 40PIN header did you use?
thanks

I seem to have the same problem as serkanturkkolu. Did you resolve the issue?

I have installed the Jetson.GPIO package. Upon testing it, I am seeing a ‘low’ voltage of 1.4V and a ‘high’ voltage of 1.5/1.6V. Occasionally the low voltage will drop to proper ground, but this is rare and not repeatable. In similar fashion, I have seen the high voltage sometimes climb to ~2.3V, but not 3.3V like it should. I tested on a number of different GPIO pins including 7, 15, 21, 29, 38 and 40.

I have tried using a 10k pull down resistor, tried uninstalling and reinstalling Jetson.GPIO and tried restarting multiple times. I had a second brand new Jetson Nano in the box. Upon putting the SD card in the new one, the exact same issue occurred leading me to believe that this is a software issue.

Any help with this issue would be greatly appreciated.

Thanks.

hi all,

suggest you also refer to Topic 1052582 for Jetson.GPIO interrupt processing on Jetson-Nano.

On the Jetson Nano, like the Raspberry Pi, there are built in Pull up and Pull down resistors which internalize the actual resistor itself. On the Raspberry Pi, the direction (pull up, pull down) are programmable in user space, on the Jetson Nano they are setup in the device tree and not easily accessible at run time. Therefore you need to pick your method and wire the switch accordingly.

Hello,

I understand the function of the pull up/down resistors when the GPIO is being used as an input, but how would they affect the GPIO when used as an output?

Thanks.

I am also having GPIOs go to 1.5 V. I am using the Python library to output low or high on the pins and a multimeter to measure the output voltage. When I change the output state of the pin with the multimeter attached, the output goes to ~1.5 V. Pins that behave this way include 7, 15, 21, 29, 38, 40 (the same as sdugan.ca) and others. Even more strange is that I can switch the output between 0 and 3.3 V without the multimeter attached. For example, say pin 15 is low. If I disconnect the multimeter, use Python to set the output high, and reconnect the multimeter, then the pin will be ~3.3 V.

Some pins that function correctly, i.e., go to near 0 V or 3.3 V with the multimeter attached, are 13, 16, 18, and 22.

Thanks in advance for any help.

hi all,

could you please check you had correct pin configuration.
for example, Pin-7(AUD_MCLK) and Pin-15 (LCD_TE) can be set as GPIO.
suggest to access Pinmux spreadsheet via Jetson Download Center,
and please also refer to Jetson Nano Developer Kit 40-Pin Expansion Header Configuration for the steps of pin configuration.
thanks

I am facing same issue, in document referred here (expansion header configuration) it is mentioned that this pins are already configured as GPIO.
But instead of GPIO operation we are getting something strange, sometimes pin is pulled to 0V, sometimes not (for example GPIO20, pin 26 on expansion header), and as @pinballWizard mentioned, pin 13 for example working as it should.

So, perhaps the default device tree that’s loaded, isn’t the right device tree for GPIO pins?
Which image did you use to boot the Nano? The image from the JetPack kit, or the Python deep learning class image, or something else?

It would be great to have such nuances more explicitly noted in the documentation.
This is the first SoC where I see such strange GPIO configuration procedures, tricks and unclear documentation about that, and all this to use the basic functionality.

Jetson Nano Developer Kit 40-Pin Expansion Header Configuration appnote:
“The Jetson Nano Developer Kit carrier board includes a 40-pin expansion header. By default, all interface signal pins are configured as GPIO inputs, except pins 3 and 5 and pins 27 and 28, which are I2C SDA and SCL, and pins 8 and 10, which are UART TX and RX.”

Image is trivial and i dont see much choice, “Jetson Nano Developer Kit SD Card Image”, latest one at Jetson Download Center | NVIDIA Developer with keyword Jetson Nano .
I go inside of “Jetson_Nano_Developer_Kit_User_Guide.pdf”, and it is stated as well there:

"[J41] 40-pin expansion header includes:
•Power pins. Two 3.3V power pins and two 5V power pins. These are not switchable; power is always available when the developer kit is connected to power.Two 5V pins can be used to power the developer kit at 2.5A each.
•Interface signal pins.
All signals use 3.3V levels. By default, all interface signal pins are configured as GPIOs, except pins 3 and 5 and pins 27 and 28, which are I2C SDA and SCL, and pins 8 and 10, which are UART TX and RX. "

Thats clear, GPIO should work, isn’t it?

The Jetson Nano carrier board uses TXB0108 bidirectional voltage-level translators on the GPIOs to go from the module’s 1.8 V levels to the headers 3.3 V levels. The data sheet for the TXB0108 states “With regard to capacitive loads, TXB translators are designed to drive up to 70 pF without issue.” The capacitance of my test leads is above 70 pF, so I tried an oscilloscope with 10 MΩ, 16 pF probes and the Jetson Nano outputs work fine. With both the multimeter and oscilloscope connected, I get a 56 MHz oscillation on the outputs. The multimeter reads the average, which is ~1.55 V.

The TXB0108 also has a 4 kΩ output impedance. That combined with the 70 pF capacitance limit means that any load on the Jetson Nano’s GPIOs should be both high impedance and low capacitance.

2 Likes

Sure enough, it seemed to be the capacitance of the multimeter leads causing the issues for me. It was exactly as @PinballWizard described.

When applying the multimeter directly to the output pins, the multimeter will read the ~1.5V. The MOSFET that I was also using to test the GPIO had a capacitance of approximately 500nF. As such, nothing was working as expected.

However, I happened to have a 74HC04 hanging around that has a capacitance of only 10nF. Hooked it up and measured with the multimeter on the output side. The signals were exactly as expected.

Thank you very much for the help, this was a huge pain during the last few days. Hopefully others can learn from this as well.

Thank you again!

1 Like

Interesting observation, i noticed my multimeter/scope shows in voltage reading proper voltages, and in scope mode it shows garble.
Probably different capacitance… but then Jetson Nano, frankly, harder to name as a raspberry replacement. Yes, not a bad computational power, but using GPIO is much more difficult and unpredictable.

1 Like

How many mAmp supports (input) or sends (output) the GPIO pins of the Jetson Nano? I would appreciate sending specification sheet. Thank you.

Hi, it’s typical +/- 1mA. Please refer to spec: [url]http://developer.nvidia.com/embedded/dlc/jetson-tx1-tx2-developer-kit-carrier-board-spec-20180618[/url]

With the Jetson Xavier its really easy to find the current limit for any of the Pins on the 40pin Expansion header by looking on Page 29 of the Jetson Xavier Developer Kit Carrier Board Specification.

https://static5.arrow.com/pdfs/2018/12/12/12/23/1/848262/nvda_/manual/jetson_xavier_developer_kit_carrier_board_specification.pdf

But, I can’t find that for the Jetson Nano.

Should we assume that the 40pin Expansion header is the same for the Jetson Nano, Xavier, and TX2?

For Jetson Nano, you can take board spec of Tx1/Tx2 as the linked doc in comment #17.

Actually Jetson works in two power modes i.e., LOW and HIGH. To set Jetson in low power mode type the following command-
$ sudo nvpmodel -m1
$ sudo nvpmodel -q

As you enter these commands your Jetson will start working in LOW Power mode and now you can easily control the GPIOs