请使用下面的模版提问(创建话题后勾选相应的选项):
Jetson 模组
Jetson AGX Orin
Jetson Orin NX
Jetson Orin Nano
Jetson AGX Xavier
[*] Jetson Xavier NX
Jetson TX 系列
Jetson Nano
Jetson 软件
JetPack 5.1.3
JetPack 5.1.4
JetPack 6.0
JetPack 6.1
JetPack 6.2
DeepStream SDK
NVIDIA Isaac
SDK Manager 管理工具版本
2.3.0
2.2.0
2.1.0
其他
分析:
通过设计实验发现,通过Python脚本将所有的GPIO电平拉高 (万用表测量电压大约3.37V),然后加负载电阻,直到GPIO电平电压降低为2.0V以下时,记录负载电阻值。
实验发现,负载电阻大约6400欧,2.0V/6400=0.31ma,不到1ma,这个值是非常小的,点亮贴片LED都需要3-5ma。
同时测试树莓派4B,发现相同的条件,树莓派的负载电阻是63欧,此时的电流大约30ma,这个电流值做各种应用都是够用的。
通过分析 Jetson Xavier Nano 的载板发现,模组的GPIO管脚 到 40Pin扩展引脚之间使用了丝印 “YE08 TI59W Z157” 的芯片(共计3片),该芯片为双向电平转换器,主要作用是对接不同的电压系统。
比如Jetson是3.3V系统,外部系统是5V系统,如果5V直接接Jetson电压是超过限制的,同时Jetson输出的3.3V高电平在5V系统中也未必满足高电平判断。该芯片用于解决此问题,隔离两端电压,并且能双向传输信号。
芯片原理是:芯片两侧通过上拉电阻接各自的VCC将电平拉高(有些同类芯片需要外部上拉电阻拉高,该芯片内部有上拉电阻将电平拉高),当输入的一侧将电平拉低的时候,该芯片将另外一侧的电平也拉低,故将低电平作为信号传递过去。
该芯片的主要功能是传递低电平信号,两侧的高电平是通过芯片内部的上拉电阻来实现的。
问题:
通过查阅芯片手册,管脚低电平时 两侧的上拉电阻都是40K (不敢太小 不然VCC到低电平电流太大,一般都大几十K),管脚高电平时 上拉电阻4K ,上拉电阻阻值小了很多,因为VCC电流需要流经此电阻来维持该引脚高电压。
但是接入到此管脚的负载为高阻抗,电流小,该上拉电阻不会有明显压降。但如果管脚负载为低阻抗,电流大,则该上拉电阻就会有明显压降,导致管脚输出电压下降。
验证:
(负载电阻 6400) / (总电阻: 负载电阻6400 + 上拉电阻4000) * 3.3V = 负载电阻两侧电压 2.03V(结果误差 1/60),和实验中负载电阻两端电压1.9999V匹配。
一些低阻抗的仪表的阻抗值和6400欧也没差多少,并且不同的量程阻值可能也不同,非常可能影响测量。
解决:
------该芯片上拉电阻内置,并且自动变更阻值,无法替换。
1,不清楚其他Jetson型号的载板是否使用了此芯片,没有此芯片的型号没这个问题。
2,直接使用模组(不使用载板)的方案中,不采用此芯片方案,需要的保护另外设计。
3,无法避免的用户,测量电压务必使用高阻抗仪表,驱动外部电路时 需要使用三极管或者MOS管增大驱动能力。
附,测试数据:
=====================================
Jetson Xavier Nano
--------------------------------------------
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
for pin in range(1, 41):
try:
GPIO.setup(pin, GPIO.OUT)
GPIO.output(pin, GPIO.HIGH)
print("turn port {} to hight".format(pin))
except Exception as e:
print("turn port {} exception: {}".format(pin, e))
--------------------------------------------
端口 BORAD方式 | 小于2.0V时 负载电阻(欧)
不加电阻直接测量3.37V | +/-100
--------------------------------------------
port 7 to hight 6300
port 11 to hight 6400
port 12 to hight 6400
port 13 to hight 6400
port 15 to hight 6400
port 16 to hight 6500
port 18 to hight 6500
port 19 to hight 6500
port 21 to hight 6500
port 22 to hight 6500
port 23 to hight 6500
port 24 to hight 6500
port 26 to hight 6500
port 29 to hight 6500
port 31 to hight 6500
port 32 to hight 6500
port 33 to hight 6500
port 35 to hight 6500
port 36 to hight 6500
port 37 to hight 有跳线未测试
port 38 to hight 6500
port 40 to hight 6500
--------------------------------------------
计算 电压2.0V,电阻6400欧,电流0.4ma 还不到1毫安,怕是连LED都点不亮。
=====================================
树莓派4B:
--------------------------------------------
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
for pin in range(1, 41):
try:
GPIO.setup(pin, GPIO.OUT)
GPIO.output(pin, GPIO.HIGH)
print("turn port {} to hight".format(pin))
except Exception as e:
print("turn port {} exception: {}".format(pin, e))
--------------------------------------------
端口 BORAD方式 |小于2.0V时 负载电阻(欧)
不加电阻直接测量3.31V |+/-1
--------------------------------------------
port 3 to hight 60
port 5 to hight 62
port 7 to hight 62
port 8 to hight 62
port 10 to hight 62
port 11 to hight 63
port 12 to hight 62
port 13 to hight 62
port 15 to hight 61
port 16 to high 63
port 18 to hight 62
port 19 to hight 62
port 21 to hight 61
port 22 to hight 63
port 23 to hight 62
port 24 to hight 62
port 26 to hight 60
port 29 to hight 61
port 31 to hight 61
port 32 to hight 62
port 33 to hight 62
port 35 to hight 62
port 36 to hight 63
port 37 to hight 63
port 38 to hight 62
port 40 to hight 62
--------------------------------------------
计算:
电压2.0V 电阻63欧 电流大约 30MA