jetson nano 40 pin Header 的gpio 功能学习笔记

本文的写作目的:

目前网络上有很多文章是介绍如何使用Jetson Nano的40针引脚的GPIO功能,我搜索到的文章都是使用Python库函数来配置与使用Jetson Nano引脚的GPIO功能。本文提供一种使用C语言来配置与使用Jetson Nano引脚的GPIO功能。

先列出本文的参考文献:

1.出自NVIDIA英伟达中国的NVIDIA Jetson Nano 2GB 系列文章(43):jetson的40针引脚

2.Tegra_X1_TRM_DP07225001_v1.3p

3. NV_Jetson_Nano_DeveloperKit_Users_Pinmux_Configuration.xls

http://4.docs.nvidia.com/jetson/

Jetson 系列产品具备智能计算,主要用于模式识别,机器视觉等计算量大的应用,同时Jetson产品配置了“扩充引脚”可用于控制。

一、查询与配置40 pin Header

http://docs.nvidia.com/jetson/…里“Hardware Setup”的“Configuring the 40-Pin Expansion Header”有详细的内容介绍如何如何使用/opt/nvidia/jetson-io/目录下的python工具来查询与设置GPIO引脚属性。

大致过程如下:

1. 在/opt/nvidia/jetson-io/目录下执行以下指令sudo python jetson-io.py 或sudo ./jetson-io.py进入主菜单

主菜单

2. 通过按键盘的上下键反白选择“Configure Jetson 40pin Header”,再按回车就会出现以下选择菜单

40 pin header 菜单

图片中显示为unused 引脚就是系统当前配置为GPIO功能的引脚。

二、 从电子表格NV_Jetson_Nano_DeveloperKit_Users_Pinmux_Configuration.xls中查找某个引脚所属的GPIO的bank编号 和port 编号。例如37号引脚属于GPIO的portB的4位。

三、 查看技术参考手册Tegra_X1_TRM_DP07225001_v1.3p相关章节找出37号引脚属于GPIO的bank1portB各个寄存器的地址

一、Jetson nano 引脚结构(引自Tegra_X1_TRM_DP07225001_v1.3p.pdf228页)介绍

jetson nano 引脚结构图

每个IO引脚最多可以配置为5个功能(4个特殊功能,1个GPIO功能)。

GPIO_sf_sel信号可以决定某个引脚是特殊功能还是GPIO功能。

Pinmux[1:0] 信号可以决定4个特殊功能中的具体哪一个功能。

先看输出部分:GPIO_sf_sel信号可以决定是某个特殊功能输出还是GPIO输出连接到IO引脚。如果GPIO_sf_sel信号决定把特殊功能的输出连接到IO引脚。Pinmux[1:0] 信号再决定将4个特殊功能输出(SFIO_out[3:0])中的具体哪一个特殊功能的输出连接到IO引脚。

再看输入部分:GPIO_sf_sel信号决定是把IO引脚的输入送到特殊功能输入还是送到GPIO输入。如果GPIO_sf_sel信号决定IO引脚的输入送到特殊功能输入。Pinmux[1:0] 信号再决定将IO引脚的输入送到4个特殊功能输入(SFIO_in[3:0])中的具体哪一个特殊功能输入。

其他信号说明:GPIO_oe通用输入输出功能输出使能信号。

SFIO_oe[3:0]特殊功能的输出使能信号。

E_input 输入使能信号。

PUPD=1下拉电阻使能信号。

PUPD=2上拉电阻使能信号。

Tristate高阻态使能信号。

其他信号,E_DPD可能与睡眠模式有关,DRV_TYPE[1:0] 可能用来设置输出电流大小,输出电压高低,输出电阻大小,压摆率等有关功能。

二、查询表格文件NV_Jetson_Nano_DeveloperKit_Users_Pinmux_Configuration.xls可以知道Jetson Nano的40针引脚的某个引脚与具体哪个GPIO 的哪个port的哪个位bit对应。下图是表格的一部分的截图,重点看表格的40 pin Header和GPIO两列。

表格截图

从表格可以知道7号针脚与GPIO的portBB的0位对应。37号针脚与GPIO的portB的4位对应。

三 、Jetson nano GPIO 控制器地址

Jetson nano GPIO 控制器有8组 ,组号从0开始一直排到7;每组可控制32个io 引脚的GPIO功能。一组GPIO 控制器有分成4个端口(port),每个port有8个io引脚。Port号从字母A一直排Z,在从AA排到FF。portA-portD在0组,以此类推。

每个port的GPIO控制器包含若干个用于控制和反馈8个GPIO状态的寄存器。

一组gpio控制器内的几个寄存器

从手册第二章(手册22页)给出的地址映射表中可以知道GPIO控制器的基地址是6000D000

每组gpio控制器的寄存器基地址

从手册9.13节(手册247页)给出的GPIO控制器寄存器地址偏移表中可以知道GPIO控制器寄存器的偏移地址是从0开始的。

每个port的寄存器偏移地址

从图中可以看出,portA的相关地址分别是6000D000,6000D010,6000D020,6000D030,6000D040,6000D050,6000D060,6000D070,6000D080,6000D090,6000D0A0,6000D0B0,6000D0C0,6000D0E0,6000D0F0。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Jetson Nano 上配置 GPIO 引脚需要进行一些设置和安装。以下是一些基本步骤: 1. 确保 Jetson Nano 上安装了 JetPack 软件包。JetPack 是 NVIDIA 提供的针对 Jetson 系列开发板的软件开发套件,其中包含了各种工具和库。 2. 连接到 Jetson Nano 的终端,可以通过 SSH 或直接连接显示器和键盘。 3. 打开终端并执行以下命令,安装 GPIO 库和工具: ``` sudo apt-get update sudo apt-get install python3-dev python3-pip sudo pip3 install Jetson.GPIO ``` 4. 完成上述步骤后,你可以在 Python 代码中使用 `Jetson.GPIO` 库来控制 GPIO 引脚。以下是一个简单的示例代码: ```python import Jetson.GPIO as GPIO import time # 设置引脚模式为 BCM GPIO.setmode(GPIO.BCM) # 设置 GPIO 引脚 pin = 18 GPIO.setup(pin, GPIO.OUT) # 控制 GPIO 引脚状态 GPIO.output(pin, GPIO.HIGH) time.sleep(1) GPIO.output(pin, GPIO.LOW) # 清理引脚设置 GPIO.cleanup() ``` 在这个示例中,我们首先导入 `Jetson.GPIO` 库,并设置引脚模式为 BCM(Broadcom SOC Channel)模式。然后,我们通过 `GPIO.setup()` 函数设置一个引脚为输出模式。接下来,我们使用 `GPIO.output()` 函数控制引脚的状态,将其设置为高电平和低电平,并使用 `time.sleep()` 函数添加延时。最后,我们使用 `GPIO.cleanup()` 函数来清理引脚设置。 你可以根据自己的需求修改和扩展这个示例代码。 以上是在 Jetson Nano 上配置 GPIO 引脚的基本步骤。希望对你有所帮助!如有其他问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值