Jetson Nano GPIO使用、四种模式以及串口解释

2023-05-16

参考:

  • http://www.waveshare.net/study/portal.php?mod=view&aid=882
  • https://www.jianshu.com/p/f98a69b94deb
  • https://blog.csdn.net/qq_26904271/article/details/79829363
  • https://www.cnblogs.com/wangha/p/10475719.html

Jetson Nano GPIO说明

1. 安装Jetson.GPIO 库
Jetson.GPIO库 已经预装在Nano,无需再安装其他GPIO Python库,如果安装了其他GPIO库需先卸载方可以正常适用Jetson.GPIO, 预安装路径:

/opt/nvidia/jetson-gpio

安装GPIO库

sudo pip install Jetson.GPIO
sudo pip3 install Jetson.GPIO

这个的源码在:
https://pypi.org/project/Jetson.GPIO/

安装到Jetson Nano上
创建一个新的gpio用户组。然后将用户添加到新创建的组中,your_user_name是用户名。

sudo groupadd -f -r gpio
sudo usermod -a -G gpio your_user_name

通过将99-gpio.rules文件复制到rules.d目录来安装自定义udev规则:

sudo cp /opt/nvidia/jetson-gpio/etc/99-gpio.rules /etc/udev/rules.d/

重新加载udev规则:

sudo udevadm control --reload-rules && sudo udevadm trigger

重启

sudo reboot now

2. 代码中使用Jetson.GPIO 库

在python代码中需添加如下语句,才可以调用 import the RPi.GPIO (或者 motorhat library等)

import sys
sys.path.append('/opt/nvidia/jetson-gpio/lib/python/')
sys.path.append('/opt/nvidia/jetson-gpio/lib/python/Jetson/GPIO')

import Jetson.GPIO

import RPi.GPIO

设置GPIO模式

GPIO.setmode(GPIO.BOARD)
# or
GPIO.setmode(GPIO.BCM)
# or
GPIO.setmode(GPIO.CVM)
# or
GPIO.setmode(GPIO.TEGRA_SOC)

举例如:

#!/usr/bin/env python
#BCM 是Broadcom SOC GPIO序列号,此处需修改为BOARD
#即Nano载板的40Pin GPIO序列号,参考上图<Nano_J41_40Pin.png>

#import jetson gpio
import sys
sys.path.append('/opt/nvidia/jetson-gpio/lib/python/')
sys.path.append('/opt/nvidia/jetson-gpio/lib/python/Jetson/GPIO')

import Jetson.GPIO as GPIO
import time

# Pin Definitions
output_pin = 13  #J41_BOARD_PIN13---gpio14/GPIO.B06/SPI2_SCK

def main():
    # Pin Setup:
    # Board pin-numbering scheme
    GPIO.setmode(GPIO.BOARD)
    # set pin as an output pin with optional initial state of HIGH
    GPIO.setup(output_pin, GPIO.OUT, initial=GPIO.HIGH)

    print("Starting demo now! Press CTRL+C to exit")
    curr_value = GPIO.HIGH
    try:
        while True:
            time.sleep(2)
            # Toggle the output every second
            print("Outputting {} to pin {}".format(curr_value, output_pin))
            GPIO.output(output_pin, curr_value)
            curr_value ^= GPIO.HIGH
    finally:
        GPIO.cleanup()

if __name__ == '__main__':
    main()

GPIO四种模式:BOARD、BCM、CVM和TEGRA_SOC 的不同

四种模式可以分为两组:BOARD和BCM一组,CVM和TEFRA_SOC一组。

1.BOARD和BCM是来源于RPi.GPIO library,因此Jetson Nano的标识对照和树莓派一致,可参考树莓派对照表
树莓派对照表:
在这里插入图片描述
Jetson Nano正面:
在这里插入图片描述
Jetson Nano反面:
在这里插入图片描述
物理管脚BOARD编码和Jetson Nano上的管脚是正好一一对应的,是物理关系,手册中写为GPIO Header。但BCM中就不是物理数值关系对应了,BCM是根据博通SoC的GPIO规则命名的。BOARD编码中的12号管脚,在BCM 中的编码就是18号管脚,他们的功能都是GPIO.1(通用输入输出管脚1)。在Jetson Nano正面写的是Board编码,反面写的是相应的BCM编码,可以留心查看。

如下是Jetson Nano正视管脚图。可见Jetson Nano中GPIO的各个管脚功能,具有Sysfs GPIO的管脚都可以作为通用输入输出管脚。其余管脚可以在name下面看到各自功能,具有通信功能的可看到查询地址或串口名称等信息。
在这里插入图片描述

2.BCM,BOARD使用场合
BOARD编码和BCM一般都在python库中使用

import RPi.GPIO as GPIO  //引入RPi.GPIO库
GPIO.setmode(GPIO.BCM) //设置引脚编号为BCM编码方式;
GPIO.setmode(GPIO.BOARD) //设置GPIO引脚为BOARD编码方式。

PS:在树莓派中会遇到wiringPi编码
wiringPi一般用于C++等平台

LIBS += -lwiringPi
#include "wiringPi.h"
wiringPiSetup();

3. CVM 和TEGRA_SOC编码

CVM和TEGRA_SOC均使用字符串(strings )而不是数字作为各个GPIO管脚的命名。
其中CVM是根据 CVM/CVB connector中信号名称命名,TEGRA_SOC是根据Tegra SoC中信号名称来命名的。

4. Jetson Nano GPIO一些说明

Jetson.GPIO Library doesn’t support PWM**
(不支持PWM,如需要PWM需外接一个I2C转PWM信号的板子)
However, the following I2C controlled board can generate PWM signals up to ~1.6kHz and should have Python libraries available.
https://www.adafruit.com/product/815
You could potentially connect this to whatever H-Bridge meets the power requirements of your application. The motor driver we used for JetBot actually combines this chip and multiple H-bridge on the same board.
https://www.adafruit.com/product/2927

PS:
NVIDIA Forum:
Nano GPIO Python support
https://pypi.org/project/Jetson.GPIO/
Jetson Nano GPIO 代码目录及部分说明

GPIO DTS:
hardware/nvidia/platform/t210/porg/kernel-dts/porg-platforms/tegra210-porg-gpio-p3448-0002-a02.dtsi
P37-gpio12-GPIO.B04
P22-gpio13-GPIO.B05
P13-gpio14-GPIO.B06
P18-gpio15-GPIO.B07
VDD-USB-HUB-EN gpio151-GPIO.S07
IMX219 DTS:
hardware\nvidia\platform\t210\porg\kernel-dts\porg-platforms\tegra210-porg-camera-rbpcv2-imx219.dtsi

关于串口的解释说明

可参照博客 https://blog.csdn.net/qq_26904271/article/details/79829363 ,详细解释了串口,COM口,UART,USART之间的区别和关系。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jetson Nano GPIO使用、四种模式以及串口解释 的相关文章

  • uboot移植Linux-SD驱动代码解析

    一 uboot与linux驱动 1 1 uboot本身是裸机程序 1 狭义的驱动概念是指 xff1a 操作系统中用来具体操控硬件的代码叫驱动 广义的驱动概念是指 xff1a 凡是操控硬件的代码都叫驱动 2 裸机程序中是直接使用寄存器的物理地
  • 移植三星官方的uboot到x210

    1 移植前的准备工作 1 1 三星移植过的uboot源代码准备 1 三星对于S5PV210的官方开发板为SMDKV210 xff0c 对应移植的 uboot smdkv210 tar bz2 1 2 SourceInsight准备 1 移植
  • 4g模块与51单片机通信

    本文硬件选自忆佰特的4g模块和老陈的上官一号 第一步先使用电脑配置4g模块 xff0c 配置好后再与51单片机进行接线完成通信 xff0c 需要提前插入SIM卡 xff0c 接线如下 通电后模块右下角会亮起红灯 xff0c 并且右上角四颗l
  • 用51单片机IIC协议OLED显示汉字

    接线如下 xff1a IIC协议 xff1a xff08 IIC全称Inter Integrated Circuit 集成电路总线 xff09 由PHILIPS公司在80年代开发的两线式串行总线 xff0c 用于连接微控制器及其外围设备 I
  • Linux中的open()、write()与read()函数,超详细

    open xff08 xff09 函数 xff1a int open const char pathname int flags mode t mode 使用open函数需要的头文件 xff1a include lt sys types h
  • C语言结构体对齐,超详细,超易懂

    结构体对齐规则 结构体的第一个成员总是存放在结构体变量开辟的空间的起始地址其它成员变量要存储在一个名叫对齐数的整数倍的地址结构体总大小为最大对齐数的整数倍 xff0c 结构体内每一个变量都会产生一个对齐数 xff0c 取其最大的对齐数如果是
  • 51单片机之串口通信、WiFi模块、蓝牙模块、4G模块

    目录 串口通信 全双工通信 xff08 打电话 xff09 TTL电平 UART 字节帧 串口相关的寄存器 串口的工作模式 蓝牙模块HC 08 HC 08的AT指令 编辑 WiFi模块ESP8266 配置WiFi模块作为客户端连入当前局域网
  • STM32单片机之温湿度检测系统(DTH11、OLED、LCD1602)

    LCD1602 LCD1602引脚 第 1 脚 VSS 为电源地 第 2 脚 VDD 接 5V 正电源 第 3 脚 VL 为液晶显示器对比度调整端 接正电源时对比度最弱 xff0c 接地时对比度最高 xff0c 对比度过高时会产生 鬼影 x
  • C_records

    1 include inlcude lt file h gt include file h lt gt 从编译器指定目录查找 从当前目录查找 xff0c 未发现再从指定目录查找 2 enum enum TYPE A B C 注意内部 xff
  • STM32之智能小车,手把手从0到1,模块化编程

    小车介绍 本博文将会从0到1实现一个智能小车 xff0c 该小车实现功能 xff1a 1 摇头避障模式 2 跟随模式 3 循迹模式 4 小车测速并显示在OLED屏幕 5 语音控制小车等等 硬件组成 STM32F103开发板 小车套件 L91
  • STM32之增量式编码器电机测速

    STM32之增量式编码器电机测速 编码器编码器种类按监测原理分类光电编码器霍尔编码器 按输出信号分类增量式编码器绝对式编码器 编码器参数分辨率精度最大响应频率信号输出形式 编码器倍频 STM32的编码器模式编码器模式编码器的计数方向仅在TI
  • STM32之MPU6050获取欧拉角

    STM32之MPU6050获取欧拉角 MPU6050MPU6050特点MPU6050电路图以及框图MPU6050框图MPU6050电路图 MPU6050相关寄存器电源管理寄存器1 xff08 0x6B xff09 陀螺仪配置寄存器 xff0
  • Postman(接口测试工具)

    目录 一 基本介绍 1 Postman 是什么 2 Postman 快速入门 2 1快速入门需求说明 二 Postman 完成 Controller 层测试 需要的代码 xff1a Java类 request jsp success jsp
  • QT网络编程TCP/UDP开发流程 制作网络调试助手

    目录标题 一 开发基础知识1 QT的网络编程 TCP和UDP2 网络编程接口1 listen2 connect 二 TCP编程1 TCP服务端实现流程2 TCP客户端实现流程 三 UDP编程四 源码1 TCP服务端2 TCP客户端3 UDP
  • Vscode 运行C++文件无法显示输出

    一 情况是 xff1a 运行简单的HelloWodld cpp程序能在终端显示结果 xff0c 如下 xff1a include lt iostream gt using namespace std int main cout lt lt
  • Jetson nx或其他aarch64 使用anaconda虚拟环境构建GPU版本的Pytorch cuda可用的前提下完整教程

    一 Anaconda 下载安装包 首先 xff0c 到anaconda官网下载安装包 xff0c 注意不是下载平常linux系统所用的安装包 xff0c 而是下载ARM架构的安装包 xff0c 若使用其他的版本会提示版本不符合无法安装 安装
  • 11-C语言对寄存器的封装

    1 xff1a 仅通过指针进行封装 xff1a 编译可能出错 xff0c 这个地方只是表示思路 在基地址基础上加上偏移地址 define GPIOF BASE 0x40021400 define GPIOF BASE 0x40021400
  • 13-寄存器编写程序入门

    与51单片机对比 xff0c 32单片机控制寄存器要复杂的多 xff1b 在51单片机中 xff0c 可以直接控制端口的高低电平 xff1b 然而32单片机却不可以 xff0c 因为32为了减小功耗 xff0c 默认情况下这些时钟都是关闭的
  • C++两个类头文件互相包含

    在构造自己的类时 xff0c 有可能会碰到两个类之间的相互引用问题 xff0c 例如 xff1a 定义了类A类B xff0c A中使用了B定义的类型 xff0c B中也使用了A定义的类型 class A int i B b class B
  • 【手拉手 带你准备电赛】April Tag标记跟踪(3D定位)详解

    目录 关于April Tag April Tag介绍 April Tag分类 April Tag标记跟踪原理 April Tag标记跟踪代码分析 April Tag标记跟踪测试结果 相关内容解惑 梯度图像 关于April Tag April

随机推荐

  • VS 无法打开源文件<WinSock2.h> <stdio.h> 等

    一 重装SDK 1 在开始菜单栏打开 VS installer xff1b 在出现的页面中选择 修改 2 修改SDK 注意左侧左侧红色方框中的内容不要点 在右侧 安装详细信息 一栏找到 使用C 43 43 桌面开发 取消勾选已安装的SDK
  • error: #error PCL requires C++14 or above

    运行带有PCL库的文件时报错 error PCL requires C 43 43 14 or above 解决办法 xff1a 找到工程里所有依赖于PCL的功能包 xff0c 改它们对应的CMakelists txt文件 具体修改方法 x
  • ubuntu18.04安装nvidia_driver_510+cuda_11.6+cudnn_11.x

    一 安装nvidia driver 1 在 软件和更新 中选择一个可用的驱动 2 1首先我们需要添加源 sudo add apt repository ppa graphics drivers ppa sudo apt update 2 2
  • Ubuntu18.04下pointnet2(pointnet++)复现

    一 nvidia driver 510 43 cuda 11 6 43 cudnn 11 x安装配置 ubuntu18 04安装nvidia driver 510 43 cuda 11 6 43 cudnn 11 x CPU疼的博客 CSD
  • 镭神激光雷达c16 数据转pcd(基于ros)

    一 问题描述 xff1a 初次接触激光雷达 xff0c rosbag命令录制后 xff0c 用ros pcl中bag to pcd命令转换成的pcd文件 xff0c pcl viewer 即pcl库无法读取 xff0c cloudcompa
  • unbuntu18.04 install pytorch1.8-cpu+yolov5

    1 install pytorch 1 change pip source reference link 2 install all pip3 install torchvision 61 61 0 9 0 pip3 install tor
  • 四、数据转换、ros-CAN通讯

    1 CAN通讯 1 1驱动安装 1 1 1在我的gitee上下载test功能包 xff0c 将libusbcan so文件复制到 lib 其他位置 计算机 lib 目录下 1 2参考 我另一篇博客一 2 1 3 下载功能包 1 3 1 在我
  • Ubuntu20.04 服务器版本 命令学习

    1 vim使用 sudo vim 文件名 按a或i进入编辑模式 按两次Esc进入命令模式 输入 xff1a wq 保存退出 输入 xff1a q xff01 退出 2 apt使用 查看更新 sudo apt update 执行更新 sudo
  • 地平线旭日X3派(一)系统配置

    一 SSH登录 1 1 串口配置 43 串口登录 1 1 1无线网络配置 1 2 SSH登录 1 3 修改文件 用vim 1 4 安装togetherROS 1 4 1 安装ROS2 foxy 安装基础功能包 sudo apt instal
  • 关于UDP的普通C/S模型、广播C/S模型以及组播C/S模型

    简述 xff1a UDP与TCP一个主要的区别就是客户端与服务器之间不需要建立连接 xff0c 即不经历三次握手过程 只需要主动发送数据的一方确定接收数据的一方的地址信息 xff08 IP地址 43 端口号 xff09 xff0c 可以这么
  • 里程计(一) 数学模型及STM32实现

    一 首先确保接线和硬件没问题 xff0c 并确定控制逻辑 测试单片机 驱动板 L298N 电机连线是否接通 xff1a 控制板IN1 IN2一个接3 3V一个接GND ENA默认使能 xff1b 控制板IN3 IN4一个接3 3V一个接GN
  • 关于Keil在stm32编写库函数时头文件找不到的解决方法

    最近在自主学习stm32时遇到了fatal error xff1a h files not found xff0c 总结了一下自己的解决方法 1 首先检查在add files有没有选择all files xff0c 如果默认选择source
  • bypassuac的学习

    什么是UAC 为什么要绕过他MSF自带的bypassuac模块 在Vista及更高版本中通过弹框进一步让用户确认是否授权当前可执行文件来达到阻止恶意程序的目的 为什么要绕过他 为了远程执行目标的exe或者bat可执行文件绕过此安全机制 xf
  • thinkphp3.2.3学习(1)

    thinkphp3 2 3学习 xff08 1 xff09 MVC结构 MVC结构 M gt model数据模型 V gt view识图 C gt controller控制器 lt php return array 39 配置项 39 61
  • thinkphp3.2.3学习(2)

    thinkphp3 2 3学习 xff08 2 xff09 如何读取配置文件路由四种url模式url的设置 函数控制器绑定参数url生成跳转页面重定向输入变量 如何读取配置文件 使用C函数 C 属性名 xff1b 动态配置 C 属性名 xf
  • xdebug下载与配置,有这一篇就够了

    xdebug下载与配置 xff0c 有这一篇就够了 xdebug下载与配置环境步骤一步骤二步骤三步骤四步骤五遇到的问题解决方案第一个坑第二个坑第三个坑 下面是我的xdebug的配置 xdebug下载与配置 下载xdebug的地方https
  • windows下3389端口开启和连接

    windows下3389端口开启和连接 开启3389的命令关闭防火墙的命令添加用户添加到管理员组特殊情况 netstat ano 查看端口开放情况 开启3389的命令 REG ADD HKLM SYSTEM CurrentControlSe
  • ssrf绕过

    ssrf绕过 当涉及到SSRF xff08 服务器端请求伪造 xff09 时 xff0c 可以使用以下5种有效负载绕过防御 xff1a 1 xff09 使用CIDR绕过SSRF xff1a http 127 127 127 127 http
  • 测试点的payload

    一些测试点的payload xff0c 后续继续补充 电子邮件地址图片名字 电子邮件地址 以下payload都是有效的电子邮件地址 XSS xff08 跨站脚本 xff09 xff1a test 43 lt script gt alert
  • Jetson Nano GPIO使用、四种模式以及串口解释

    参考 xff1a http www waveshare net study portal php mod 61 view amp aid 61 882https www jianshu com p f98a69b94debhttps blo