I got a Jetson Nano from the office lab but in a very basic test (generating a square wave) I see a lot of noise/weirdness in the output.
I want to know if, maybe, there is some damage to the GPIO.
I’ve attached a photo: on the right it’s the scope measured output from pins 38/9 (38 configured as an output, 9 gnd) for the Jetson, and the left photo is the same measurement, but from a raspberry pi 4. Same simple code.
import RPi.GPIO as GPIO
# import Jetson.GPIO as GPIO # uncomment when on jetson
from time import sleep
PIN = 38
DELAY = 0.01 # 10ms
GPIO.setmode(GPIO.BOARD)
GPIO.setup(PIN, GPIO.OUT)
try:
while True:
GPIO.output(PIN, GPIO.HIGH)
sleep(DELAY)
GPIO.output(PIN, GPIO.LOW)
sleep(DELAY)
except KeyboardInterrupt:
print("Quiting...")
GPIO.cleanup()
I’m slightly new to Jetson, so I don’t know if maybe it’s the bare way in which I measured the output (just put the probe on the pins directly) and maybe some circuit is required to stabilize the output… any help is much appreciated.
The Jetson boards and modules are dufferent in one thing from a Pi:
The processer it self as well as the module on the module connector uses 1.8V levels for GPIO, UARTs, SPI, I2S, SDIO and some I2C (some are 3.3V, some are 1.8V). In order to get 3.3V levels on the pin headers they had to use level shifters. NVidia uses TI TXB0108 chips on their carrier boards. On the Nano devikit carrier board there are three of them (U7, U22, U48), and they use QFN20 (RGYR) package.
These have advantages and disadvantages.
The advantage is that these chips are fairly cheap. So if you cause damage to your system it is the level shifter on the carrier board that dies first. The module itself (the expensive part) will most likely be ok. On a Pi damaging the io pins will directly damage the main processor, and this is never repairable. The level shifter chips only have 20 pins, and with the right equipment (hot air station and microscope) it is no problem to replace them.
The disadvantage is that the level shifter chips don’t know the direction of the signals. The processor itself has configuration registers that determine if a pin is an input or an output. The level shifters don’t know this, so the need to have a somewhat tricky circuit inside that figures this out. Problems here:
This auto direction circuits are somewhat sensitive and can easily be disturbed.
The level shifter output drivers are rather weak.
So:
avoid pullups and pulldowns smaller than100k.
turn your oscilloscope into 1M input impediance, no 50 ohm termination!
use a 10x probe
To check if one of the level shifters is defective:
U7 drives SPI1 and UART1 TXD,RXD,CTS signals
U22 drives SPI0, GPIO07, GPIO12, and UART1 RTS
U48 drives I2S0 and GPIO 09,13,11,01
Use a 74LVCxxx buffer chip in order to get higher output currents.