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

news/2025/2/12 20:13:29/

参考:

  • 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_SCKdef main():# Pin Setup:# Board pin-numbering schemeGPIO.setmode(GPIO.BOARD)# set pin as an output pin with optional initial state of HIGHGPIO.setup(output_pin, GPIO.OUT, initial=GPIO.HIGH)print("Starting demo now! Press CTRL+C to exit")curr_value = GPIO.HIGHtry:while True:time.sleep(2)# Toggle the output every secondprint("Outputting {} to pin {}".format(curr_value, output_pin))GPIO.output(output_pin, curr_value)curr_value ^= GPIO.HIGHfinally: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之间的区别和关系。


http://www.ppmy.cn/news/157092.html

相关文章

S5PV210系列(裸机四)mkv210_image.c文件详解

分析启动过程可知&#xff1a; 210 启动后先执行内部iROM中的BL0&#xff0c;BL0执行完后会根据 OMpin 的配置选择一个外部设备来启动&#xff08;有很多&#xff0c;我们实际使用的有2个&#xff1a;usb 启动和 SD卡 启动&#xff09;。在 usb 启动时内部 BL0 读取到 BL1 …

Jetson Nano配置踩坑全记录

Jetson Nano配置踩坑全记录 Jetson Nano相关参数&#xff1a;JetPack 4.6&#xff0c;cuda 10.2&#xff0c; SD卡内存&#xff1a;512G 一、Jetson Nano系统镜像烧录 在Nvidia官网下载Jetson Nano的系统镜像&#xff1a; https://developer.nvidia.com/embedded/learn/get-s…

nVIDIA Jetson TX1 u-boot编译与烧写

1、官网下载源码&#xff1a; https://developer.nvidia.com/embedded/downloads#?tx$software,l4t-tx1 解压u-boot_src.tbz2到本地&#xff1a; $ tar -xvjf u-boot_src.tbz2 $ cd u-boot/ 2、u-boot修改与编译 设置环境变量&#xff1a; $ export ARCHarm $ export CR…

在Jetson Nano中安装Tensorflow与PyTorch,解决arm架构h5py、sklearn、TLS block等问题

Setup Jetson Nano 因为Nano是Arm架构&#xff0c;所以相比x86_64架构的配置流程有所区别。 解决BUG部分请直接跳到本文最后。 1. Notification Arm的许多源是与x86_64源不同的&#xff0c;所以除非很有把握&#xff0c;最好保持Nvidia出厂配置的源不变&#xff0c;轻易不改…

Nvidia内核设备树driver编译

一、环境准备 下载同一个SDK的开源code以及编译好的对应镜像&#xff0c;链接&#xff1a; https://developer.nvidia.com/embedded/linux-tegra-r3271一般选择最新的即可&#xff0c;然后主要需要以下工具 public source code &#xff1a;设备树以及linux源码x86 cross co…

Linux学习——I2C-MPU6050驱动移植记录

开发板&#xff1a;Nvidia Jetson Nano b01 模块&#xff1a;MPU6050 I2C设备 接线 vcc — 3.3v(17) gnd — GND(25) scl — I2C0_SCL(28) -> pJ1 sda — I2C0_SDA(27) //AD0:从机地址设置引脚 :1.接地或悬空时, 地址为0x68&#xff1b;2.接VCC时&#xff0c;地址为0x69 /…

当刷机工具遇到SetupConnection时的解决方法

当刷机工具遇到SetupConnection时&#xff0c;解决方法 首先&#xff0c;在此贴上原文地址&#xff0c;已表感激之情。 http://blog.sina.com.cn/s/blog_636fd7d90101drak.html http://bbs.gfan.com/android-4032375-1-1.html 据说程序员是比较挑剔的&#xff0c;骨子里难…

NVIDIA Jetson TX1刷机,Ubuntu16.04+Jetpack3.0

注意事项 Jetpack3.x只支持ubuntu14.04和ubuntu16.04操作系统&#xff0c;而且系统语言必须是英文。保证网络通畅。 官方回答说3.2版本可以支持大陆&#xff0c;但是我尝试了Jetpack3.2.1&#xff0c;也不能连接到服务器。不知道4.4是否可行。 用虚拟机的小伙伴要额外研究一下…