赞
踩
参考:
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()
四种模式可以分为两组: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之间的区别和关系。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。