当前位置:   article > 正文

Jetson Nano GPIO使用、四种模式以及串口解释_gpio::setmode(gpio::tegra_soc);

gpio::setmode(gpio::tegra_soc);

参考:

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
  • 1
  • 2

这个的源码在:
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
  • 1
  • 2

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

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

重新加载udev规则:

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

重启

sudo reboot now
  • 1

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
  • 1
  • 2
  • 3
  • 4
  • 5

import RPi.GPIO
  • 1

设置GPIO模式

GPIO.setmode(GPIO.BOARD)
# or
GPIO.setmode(GPIO.BCM)
# or
GPIO.setmode(GPIO.CVM)
# or
GPIO.setmode(GPIO.TEGRA_SOC)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

举例如:

#!/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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

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编码方式。
  • 1
  • 2
  • 3

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

LIBS += -lwiringPi
#include "wiringPi.h"
wiringPiSetup();
  • 1
  • 2
  • 3

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/399357
推荐阅读
相关标签
  

闽ICP备14008679号