GPIO

简介

reComputer 载板上的 GPIO 插针是一种多功能硬件接口,用于将 AI 计算模块直接与外部传感器和执行器连接。它具有与树莓派生态系统高度兼容的引脚排列,允许开发者轻松集成现成的电子产品以实现快速原型设计。除了基本的数字输入和输出,这些复用引脚还可以配置为支持标准通信协议(如 I2C、SPI、UART 和 PWM),使开发者能够使用 Jetson.GPIO 等简单库对机器人和物联网项目进行无缝硬件控制。

reComputer J401

reComputer J401

Jetson.GPIO 是 NVIDIA 用于控制 Jetson 设备上 40 针 GPIO 插针的 Python 库。它的 API 有意与 RPi.GPIO 类似,使来自树莓派开发的用户能够轻松上手。

使用 pip 安装

如果库未预装,最简单的方法是:

bash
sudo pip3 install Jetson.GPIO

手动安装

如果需要从源码安装库:

bash
mkdir -p /opt/seeed/development_guide/05_gpio
cd /opt/seeed/development_guide/05_gpio
git clone https://github.com/NVIDIA/jetson-gpio
cd jetson-gpio
sudo python3 setup.py install

用户权限

允许当前用户访问 GPIO:

bash
sudo groupadd -f -r gpio
sudo usermod -a -G gpio seeed

如有需要,请将 seeed 替换为您的实际用户名。

Udev 规则

复制规则文件并重新加载 udev:

bash
cd /opt/seeed/development_guide/05_gpio/jetson-gpio
sudo cp lib/python/Jetson/GPIO/99-gpio.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger

3.27-installing-the-gpio-library-03

JetPack 6.2 兼容性说明

在某些 JetPack 6.2 配置中,使用库之前可能需要导出模型名称:

bash
export JETSON_MODEL_NAME=JETSON_ORIN_NANO

40 针

GPIO 是通用输入/输出的缩写。这些引脚允许软件读取外部数字信号或驱动简单的外围设备(如 LED、按钮、蜂鸣器)和控制线。

编号模式

Jetson.GPIO 库支持两种常见的编号方案:

模式描述典型用途
BOARD按 40 针连接器上的物理位置对引脚进行编号当您直接从连接器的丝印或引脚图布线时最佳
BCM按库使用的 GPIO 映射对引脚进行编号当您遵循引用逻辑 GPIO ID 的 Python GPIO 示例时最佳

GPIO.BOARD 布局

GPIO.BCM 布局

引脚参考示例

下图显示了在测试输入或输出功能之前有用的额外引脚参考示例。

image-20260603112011055

GPIO 输入

本节介绍如何通过将测试引脚连接到 GND3.3V 并在软件中观察输入状态来读取 Jetson 上的 GPIO 输入。

硬件连接

使用跳线按如下图所示连接插针。简单的测试方法是先将 GPIO.BOARD 12 连接到 GND

[!CAUTION] 布线前请仔细检查引脚映射。错误的连接可能会使电路板短路。

读取信号

jetson-gpio 示例运行示例脚本:

bash
cd /opt/seeed/development_guide/05_gpio/jetson-gpio/samples
sudo python3 simple_input.py

如果结果与预期的低电平匹配,将测试引脚从 GND 重新连接到 3.3V 并再次运行脚本:

bash
cd /opt/seeed/development_guide/05_gpio/jetson-gpio/samples
export JETSON_MODEL_NAME=JETSON_ORIN_NANO
python3 simple_input.py

终端输出现在应显示高电平信号。

GPIO 输出

简介

在 JetPack 6.2 上,许多以前同时支持输入和输出的引脚在调整 pinmux 之前可能仅表现为输入模式。本节介绍两种恢复支持引脚输出功能的实用方法:

  1. 临时的 busybox devmem 方法
  2. 更持久的设备树覆盖(device-tree overlay)方法

方法 1:使用 busybox 临时输出

步骤 1:查询 Pinmux 寄存器

使用 jetson-gpio-pinmux-lookup 查找插针的寄存器地址:

bash
jetson-gpio-pinmux-lookup 31

下图显示了该引脚返回的寄存器值。

步骤 2:配置输出模式

如有需要,安装 busybox

bash
sudo apt install busybox

然后写入 pinmux 寄存器值:

bash
sudo busybox devmem 0x02430070 w 0x004

步骤 3:运行输出测试

更新示例脚本以使用适合您测试用例的正确 BCM 引脚,然后运行:

bash
cd /opt/seeed/development_guide/05_gpio/jetson-gpio/samples
export JETSON_MODEL_NAME=JETSON_ORIN_NANO
python3 simple_out.py

您可以使用万用表或示波器验证输出电平变化。

方法 2:设备树覆盖

如果您希望引脚配置持久化,这种方法更好。

克隆辅助项目并编辑 DTS 文件:

bash
cd /opt/seeed/development_guide/05_gpio/jetson-gpio
git clone https://github.com/jetsonhacks/jetson-orin-gpio-patch.git
cd jetson-orin-gpio-patch
vim pin7_as_gpio.dts

调整要更改的 GPIO 引脚定义,然后构建覆盖:

bash
dtc -O dtb -o pin7_as_gpio.dtbo pin7_as_gpio.dts
sudo cp pin7_as_gpio.dtbo /boot
sudo /opt/nvidia/jetson-io/jetson-io.py

启用覆盖后,在测试脚本中使用已知的 BCM 引脚编号。

image-20260603151738253

再次运行输出测试:

bash
cd /opt/seeed/development_guide/05_gpio/jetson-gpio/samples
python3 simple_out.py

参考

reComputer Super J401

reComputer Super J401

简介

GPIO 是通用输入/输出的缩写。这些引脚允许软件读取外部数字信号或驱动简单的外围设备(如 LED、按钮、蜂鸣器)和控制线。reComputer Super 具有 40 针扩展连接器,可访问 GPIO 引脚,方便与外部设备集成。

40-Pin Extension Header

硬件连接

reComputer Super 具有 40 针扩展连接器,可访问 GPIO 引脚。要使用 GPIO 引脚,您需要将外部设备连接到该连接器上的相应引脚。

40 针连接器引脚定义

40 针连接器的详细信息如下:

连接器引脚信号BGA 引脚默认功能
13.3V-主 3.3V 电源
25V-主 5V 电源
3I2C1_SDAPDD.02I2C #1 数据
45V-主 5V 电源
5I2C1_SCLPDD.01I2C #1 时钟
6GND-
7GPIO09PAC.06通用输入/输出
8UART1_TXDPR.02UART #1 发送
9GND-
10UART1_RXDPR.03UART #1 接收
11UART1_RTSPR.04UART #1 请求发送
12I2S0_SCLKPH.07音频 I2S #0 时钟
13SPI1_SCKPY.00SPI #1 时钟
14GND-
15GPIO12PN.01通用输入/输出
16SPI1_CS1PY.04SPI #1 片选 #1
173.3V-主 3.3V 电源
18SPI1_CS0PY.03SPI #1 片选 #0
19SPI0_MOSIPZ.05SPI #0 主机输出/从机输入
20GND-
21SPI0_MISOPZ.04SPI #0 主机输入/从机输出
22SPI1_MISOPY.01SPI #1 主机输入/从机输出
23SPI0_SCKPZ.03SPI #0 时钟
24SPI0_CS0PZ.06SPI #0 片选 #0
25GND-
26SPI0_CS1PZ.07SPI #0 片选 #1
27ID_I2C_SDA (I2C0_SDA)PDD.00I2C #0 数据
28ID_I2C_SCL (I2C0_SCL)PCC.07I2C #0 时钟
29GPIO01PQ.05通用输入/输出
30GND-
31GPIO11PQ.06通用输入/输出
32GPIO07PG.06通用输入/输出
33GPIO13PG.00系统保留
34GND-
35I2S0_LRCK (I2S0_FS)PI.02音频 I2S #0 帧同步
36UART1_CTSPR.05UART #1 清除发送
37SPI1_MOSIPY.02SPI #1 主机输出/从机输入
38I2S0_SDIN (I2S0_DIN)PI.01音频 I2S #0 数据输入
39GND-
40I2S0_SDOUT (I2S0_DOUT)PI.00音频 I2S #0 数据输出

GPIO 库安装

编号模式

Jetson.GPIO 库支持两种常见的编号方案:

模式描述典型用途
BOARD按 40 针连接器上的物理位置对引脚进行编号当您直接从连接器的丝印或引脚图布线时最佳
BCM按库使用的 GPIO 映射对引脚进行编号当您遵循引用逻辑 GPIO ID 的 Python GPIO 示例时最佳

GPIO 使用示例

基础 GPIO 输出

python
import Jetson.GPIO as GPIO
import time

# 设置 GPIO 模式
GPIO.setmode(GPIO.BOARD)

# 定义引脚
output_pin = 12

# 设置引脚
GPIO.setup(output_pin, GPIO.OUT)

try:
    while True:
        # 点亮引脚
        GPIO.output(output_pin, GPIO.HIGH)
        time.sleep(1)
        # 关闭引脚
        GPIO.output(output_pin, GPIO.LOW)
        time.sleep(1)
except KeyboardInterrupt:
    # 清理
    GPIO.cleanup()

基础 GPIO 输入

python
import Jetson.GPIO as GPIO
import time

# 设置 GPIO 模式
GPIO.setmode(GPIO.BOARD)

# 定义引脚
input_pin = 11

# 设置引脚
GPIO.setup(input_pin, GPIO.IN)

try:
    while True:
        # 读取引脚值
        value = GPIO.input(input_pin)
        print(f"引脚值: {value}")
        time.sleep(0.5)
except KeyboardInterrupt:
    # 清理
    GPIO.cleanup()

Super 特定 GPIO 功能

reComputer Super 的 40 针连接器可访问多种 GPIO 引脚,实现与外部设备的灵活集成。这使其成为各种应用的理想选择,包括:

  • 控制 LED 和其他指示灯
  • 读取按钮按下和传感器输入
  • 控制电机和执行器
  • 与其他微控制器和设备接口

安全注意事项

  • 通电前务必仔细检查引脚连接
  • 连接 LED 和其他组件时使用适当的电阻
  • 避免 GPIO 引脚短路
  • 注意 GPIO 引脚的最大电流额定值

进一步阅读

Seeed Jetson AGX Orin Kit

Seeed Jetson AGX Orin Kit

简介

Seeed Jetson AGX Orin Kit 包含一个 40 针(2 × 20,2.54 mm 间距)扩展连接器(J30)。

image-20260603145642641

40 针连接器引脚定义

agx_40pin.png

40 针扩展连接器包括各种音频和控制接口,包括:

  • 音频:I2S、数字麦克风、时钟和控制
  • I2C (2x)、SPI、UART、CAN 和 PWM (2x)
  • GPIO(专用以及与其他接口引脚共享)

所有信号引脚均为 3.3V 电平。

[!NOTE] 40 针扩展连接器上的许多信号来自 TI TXB0108 电平转换器。由于这些器件的设计,输出驱动器非常弱,因此可以通过另一个连接的设备输出过驱动以支持双向。这些缓冲区相关的信号在以下表格的注释列中有一个"3"。有关详细信息,请参阅 Jetson Nano Developer Kit 40 针扩展连接器 GPIO 使用注意事项应用说明。

image-20260603144115885

image-20260603144154470

[!NOTE] 注释:

  1. 这是每个电源引脚的电流能力。
  2. 这些引脚通过 FXMA2102L8X 电平转换器连接到 SoC。它们是开漏(要么上拉,要么在配置为输出时由 SoC 驱动为低电平)。满足数据手册 VOL 的最大驱动能力为 1mA。
  3. 参见上表的相关注释。
  4. 这些引脚连接到 SN74LVC4T245 缓冲器。
  5. 这些引脚直接连接到 SoC。满足完整数据手册 VOL/VOH 的最大驱动能力为 1mA。
  6. 关于上电默认值,"pd" = SoC 内部下拉,"pu" = SoC 内部上拉,"z" = 三态
  7. 在类型/方向列中,输出是指向扩展连接器,输入是指从扩展连接器。双向是指双向信号。
  8. 指示的方向与参考设计原理图中指示的方向一致。这些信号支持 GPIO 功能,可以是双向的。

自动化连接器

Seeed Jetson AGX Orin Kit 包含一个 12 针、2.54 mm 间距的连接器(J42),可访问多个关键系统控制信号。

  • 引脚 #1, #12: GND
  • 引脚 #2, #3, #4: 输入,与三个按钮具有相同功能:Recovery、Reset、Power。
  • 引脚 #5-#6: 断开:自动开机禁用;短路:自动开机启用。
  • 引脚 #7: CVB_STBY: 输出,指示模块是否处于睡眠状态。
  • 引脚 #8: SYSTEM_OC: 输入,用于触发 Tegra 节流。
  • 引脚 #9-#10: 断开:从关闭状态唤醒(启动)局域网已禁用;短路:从关闭状态唤醒(启动)局域网已启用。
  • 引脚 #11: JTAG_TRST,JTAG 测试复位。
image-20260603145515081

image-20260603144641982