#gpio-pin #gpio #nvidia #jetson

jetson_gpio

Rust 版本的 NVIDIA Python 库,用于控制选定 Jetson 设备的 GPIO 引脚

2 个版本

0.1.1 2023 年 1 月 24 日
0.1.0 2023 年 1 月 24 日

#584硬件支持

MIT 许可证

67KB
1.5K SLoC

jetson-gpio-rust

这是 NVIDIA Python 库的 Rust 版本,用于控制选定 Jetson 设备的 GPIO 引脚。它基于 jetson-gpio Python 库。

crates.io 上找到该软件包。

入门指南

此软件包的使用与 Python 库非常相似。主要区别在于,Python 库使用全局的 GPIO 对象,而此软件包使用 GPIO 结构体。这意味着您在使用之前需要创建一个 GPIO 结构体。使用 new 方法创建 GPIO 结构体。

use jetson_gpio::{GPIO, Direction, Level, Mode};

let mut gpio = GPIO::new();
gpio.setmode(Mode::BOARD).unwrap();

gpio.setup(vec![7, 11], Direction::OUT, Some(Level::LOW)).unwrap();
gpio.output(vec![7, 11], vec![Level::HIGH, Level::HIGH]).unwrap();

gpio.cleanup(None).unwrap();

此示例设置两个引脚为输出,并将它们设置为初始 LOW 值。然后,将引脚设置为 HIGH,最后清理 GPIO 引脚。使用 unwrap 方法展开由方法返回的 Result。如果发生错误,程序将崩溃(您应该在代码中正确处理错误 🤓)。

通过将以下内容添加到您的 Cargo.toml 文件开始使用此软件包

[dependencies]
jetson_gpio = { version = "0.1.0" }

引脚编号模式

与 Python 库一样,您在使用 GPIO 引脚之前必须指定引脚编号模式。可以使用 setmode 方法设置引脚编号模式。引脚编号模式可以是以下之一

  • Mode::BOARD - 引脚号是 Jetson 板上的物理引脚号。
  • Mode::BCM - 引脚号是 Broadcom SOC 通道号。
  • Mode::TEGRA_SOC - 引脚号是 Tegra SOC 通道号。
  • Mode::CVM - 引脚号是 CVM 通道号。

使用此库,您可以将 GPIO 引脚配置为输入或输出。您还可以读取输入引脚的当前值或设置输出引脚的值。

软件包支持

此软件包在以下 Jetson 设备上进行了测试

  • Jetson Xavier NX 生产模块与第三方载体板(JP4.6.1)

此软件包处于开发中,目前仅支持 Python 库提供的功能子集。当前支持的板

  • Jetson Orin
  • Jetson Xavier NX

支持的引脚编号模式

  • 模式::BOARD
  • 模式::BCM

仅支持没有事件的 GPIO 引脚。

许可证

此软件包根据 MIT 许可证授权。有关更多信息,请参阅 LICENSE 文件。

贡献

欢迎贡献!如果您有任何问题或建议,请在 GitHub 仓库 上打开一个问题或拉取请求。


待办事项

目前,此软件包仅支持 Python 库提供的功能子集。以下功能正在计划中

  • 为所有 Jetson 板添加引脚定义
  • 添加所有引脚模式的支持
  • 添加 PWM 引脚的支持
  • 在所有 Jetson 板上测试库

依赖关系

~130KB