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

参考:

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之间的区别和关系。

  • 30
    点赞
  • 239
    收藏
    觉得还不错? 一键收藏
  • 20
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值