TX2/Xavier Linux GPIO 计算

2023-05-16

目录

    • Linux GPIO子系统
    • TX2 Linux GPIO计算
    • Xavier Linux GPIO计算
    • 参考
    • 用C快捷计算TX2 Linux GPIO
    • 用C快捷计算Xavier Linux GPIO
    • Debug
    • 微信公众号

Linux GPIO子系统

Linux命令行常用echo, cat等操作GPIO:

# 列出Linux GPIO空间目录
$ ls /sys/class/gpio
export  gpiochip232  gpiochip240  gpiochip256  gpiochip320  unexport

# 导出GPIO到用户空间
# GPIO4_CAM_STROBE -> GPIO3_PV.05 -> V=>2, 2*8+256+5=277
$ echo 277 > /sys/class/gpio/export
# 取消导出把export换成unexport

$ ls /sys/class/gpio
export  gpio277  gpiochip232  gpiochip240  gpiochip256  gpiochip320  unexport

# 设置GPIO方向为输出
$ echo out > /sys/class/gpio/gpio277/direction

# 输出高电平
$ echo 1 > /sys/class/gpio/gpio277/value

# 查看电平
$ cat /sys/class/gpio/gpio277/value
1

当然这些命令断电失效, 可以写成脚本设置开机运行, 有兴趣搜索Ubuntu16,或者Ubuntu18设置开机脚本.

TX2 Linux GPIO计算

关于上面277的由来 GPIO4_CAM_STROBE -> GPIO3_PV.05 -> V=>2, 2*8+256+5=277.

原理图中用的是GPIO4_CAM_STROBE这个引脚:

在这里插入图片描述

查 Jetson TX2 Series Pinmux 这个xls表格:

在这里插入图片描述

表格中 GPIO4_CAM_STROBE -> GPIO3_PV.05.

linux/include/dt-bindings/gpio/tegra186-gpio.h github, linux的代码对TX2端口进行了编号(TX2->tegra186-gpio.h, Xavier->tegra194-gpio.h):

/* GPIOs implemented by main GPIO controller */
#define TEGRA186_MAIN_GPIO_PORT_A 0
#define TEGRA186_MAIN_GPIO_PORT_B 1
#define TEGRA186_MAIN_GPIO_PORT_C 2
#define TEGRA186_MAIN_GPIO_PORT_D 3
#define TEGRA186_MAIN_GPIO_PORT_E 4
#define TEGRA186_MAIN_GPIO_PORT_F 5
#define TEGRA186_MAIN_GPIO_PORT_G 6
#define TEGRA186_MAIN_GPIO_PORT_H 7
#define TEGRA186_MAIN_GPIO_PORT_I 8
#define TEGRA186_MAIN_GPIO_PORT_J 9
#define TEGRA186_MAIN_GPIO_PORT_K 10
#define TEGRA186_MAIN_GPIO_PORT_L 11
#define TEGRA186_MAIN_GPIO_PORT_M 12
#define TEGRA186_MAIN_GPIO_PORT_N 13
#define TEGRA186_MAIN_GPIO_PORT_O 14
#define TEGRA186_MAIN_GPIO_PORT_P 15
#define TEGRA186_MAIN_GPIO_PORT_Q 16
#define TEGRA186_MAIN_GPIO_PORT_R 17
#define TEGRA186_MAIN_GPIO_PORT_T 18
#define TEGRA186_MAIN_GPIO_PORT_X 19
#define TEGRA186_MAIN_GPIO_PORT_Y 20
#define TEGRA186_MAIN_GPIO_PORT_BB 21
#define TEGRA186_MAIN_GPIO_PORT_CC 22

#define TEGRA186_MAIN_GPIO(port, offset) \
    ((TEGRA186_MAIN_GPIO_PORT_##port * 8) + offset)

/* GPIOs implemented by AON GPIO controller */
#define TEGRA186_AON_GPIO_PORT_S 0
#define TEGRA186_AON_GPIO_PORT_U 1
#define TEGRA186_AON_GPIO_PORT_V 2
#define TEGRA186_AON_GPIO_PORT_W 3
#define TEGRA186_AON_GPIO_PORT_Z 4
#define TEGRA186_AON_GPIO_PORT_AA 5
#define TEGRA186_AON_GPIO_PORT_EE 6
#define TEGRA186_AON_GPIO_PORT_FF 7

#define TEGRA186_AON_GPIO(port, offset) \
    ((TEGRA186_AON_GPIO_PORT_##port * 8) + offset)

其中的:

  • TEGRA186_MAIN_GPIO, 也就是tegra-gpio, at base index 320, 来源 TX2 GPIO Changes
  • TEGRA186_AON_GPIO, 也就是tegra-gpio-aon, at base index 256
  • offset = base + pin
  • TEGRA186_AON_GPIO_PORT_V对应2, 属于tegra-gpio-aon组, 基值是256, 那么 GPIO3_PV.05 对应的就是TEGRA186_MAIN_GPIO(V, (256+5)) => ((TEGRA186_MAIN_GPIO_PORT_V* 8) + offset) = 2*8+256+5 = 277.

Xavier Linux GPIO计算

tegra194-gpio.h, 这里把Xavier的 linux/include/dt-bindings/gpio/tegra194-gpio.h github也贴过来方便查阅:

#ifndef _DT_BINDINGS_GPIO_TEGRA194_GPIO_H
#define _DT_BINDINGS_GPIO_TEGRA194_GPIO_H

#include <dt-bindings/gpio/gpio.h>

/* GPIOs implemented by main GPIO controller */
#define TEGRA194_MAIN_GPIO_PORT_A 0
#define TEGRA194_MAIN_GPIO_PORT_B 1
#define TEGRA194_MAIN_GPIO_PORT_C 2
#define TEGRA194_MAIN_GPIO_PORT_D 3
#define TEGRA194_MAIN_GPIO_PORT_E 4
#define TEGRA194_MAIN_GPIO_PORT_F 5
#define TEGRA194_MAIN_GPIO_PORT_G 6
#define TEGRA194_MAIN_GPIO_PORT_H 7
#define TEGRA194_MAIN_GPIO_PORT_I 8
#define TEGRA194_MAIN_GPIO_PORT_J 9
#define TEGRA194_MAIN_GPIO_PORT_K 10
#define TEGRA194_MAIN_GPIO_PORT_L 11
#define TEGRA194_MAIN_GPIO_PORT_M 12
#define TEGRA194_MAIN_GPIO_PORT_N 13
#define TEGRA194_MAIN_GPIO_PORT_O 14
#define TEGRA194_MAIN_GPIO_PORT_P 15
#define TEGRA194_MAIN_GPIO_PORT_Q 16
#define TEGRA194_MAIN_GPIO_PORT_R 17
#define TEGRA194_MAIN_GPIO_PORT_S 18
#define TEGRA194_MAIN_GPIO_PORT_T 19
#define TEGRA194_MAIN_GPIO_PORT_U 20
#define TEGRA194_MAIN_GPIO_PORT_V 21
#define TEGRA194_MAIN_GPIO_PORT_W 22
#define TEGRA194_MAIN_GPIO_PORT_X 23
#define TEGRA194_MAIN_GPIO_PORT_Y 24
#define TEGRA194_MAIN_GPIO_PORT_Z 25
#define TEGRA194_MAIN_GPIO_PORT_FF 26
#define TEGRA194_MAIN_GPIO_PORT_GG 27

#define TEGRA194_MAIN_GPIO(port, offset) \
    ((TEGRA194_MAIN_GPIO_PORT_##port * 8) + offset)

/* GPIOs implemented by AON GPIO controller */
#define TEGRA194_AON_GPIO_PORT_AA 0
#define TEGRA194_AON_GPIO_PORT_BB 1
#define TEGRA194_AON_GPIO_PORT_CC 2
#define TEGRA194_AON_GPIO_PORT_DD 3
#define TEGRA194_AON_GPIO_PORT_EE 4

#define TEGRA194_AON_GPIO(port, offset) \
    ((TEGRA194_AON_GPIO_PORT_##port * 8) + offset)

#endif

基地值也变了:

  • tegra-gpio, at base index 288
  • tegra-gpio-aon, at base index 248

如 原理图中的信号 SPI1_SCK:

  • 查 [Jetson AGX Xavier Pinmux] 表格, 对应 GPIO3_PZ.03
  • 上面头文件tegra194-gpio.h定义了#define TEGRA194_MAIN_GPIO_PORT_Z 25
  • TEGRA194_MAIN_GPIO, 也就是tegra-gpio, 基值为288
  • Linux GPIO计算结果: 25*8 + 288 + 3 = 491

参考

Tegra Wiki 里面写了模型号 TX2->T186, Xavier->T194:

在这里插入图片描述

Xavier GPIO Changes 里面指出了tegra-gpio基值288, tegra-gpio-aon基值248.

TX2 GPIO Changes 里面指出了tegra-gpio基值320, tegra-gpio-aon基值256.

Jetson TX2 Series Pinmux excel表格可以查TX2信号名与引脚标号的对应关系.

Jetson AGX Xavier Pinmux excel表格可以查Xavier信号名与引脚标号的对应关系.

Jeson Pinmux

NVIDIA Jetson TX2 J21 Header Pinout JetsonHacks

NVIDIA Jetson AGX Xavier GPIO Header Pinout JetsonHacks

用C快捷计算TX2 Linux GPIO

顺手撸了个TX2的tx2_pinout.c:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>

// #define TEGRA186_MAIN_GPIO_BASE 320
// #define TEGRA186_AON_GPIO_BASE  256

char port_array[33][3] = {"P0","P1",
                          "S","U","V","W","Z","AA","EE","FF", \
                          "A","B","C","D","E","F","G","H", \
                          "I","J","K","L","M","N","O","P", \
                          "Q","R","T","X","Y","BB","CC"};

char *strupr(char *str){
    char *orign=str;
    for (; *str!='\0'; str++)
        *str = toupper(*str);
    return orign;
}

int main(int argc, char **argv)
{
    if(argc >= 3) {
        //printf("%d, %s, %s, %s\n", argc, argv[0], argv[1], argv[2]);
        for(int i = 0; i < 33; i++) {
            if( (strcmp(port_array[i], strupr(argv[1])) == 0) && (atoi(argv[2]) < 8)) {
                printf("%s.%s Linux GPIO: %d\n", argv[1], argv[2], i * 8 + atoi(argv[2]) + 240);
                return 0;
            }
        }
    } 

    printf("Segmentation fault, input like \"./tx2_pinout AA 02\"\n");

    return 0;
}

gcc -o tx2_pinout tx2_pinout.c, 然后测试一下:

$ ./tx2_pinout A 04
A.04 Linux GPIO: 324

$ ./tx2_pinout P1 6
P1.6 Linux GPIO: 254

$ ./tx2_pinout N 04
N.04 Linux GPIO: 428

$ ./tx2_pinout EE 01
EE.01 Linux GPIO: 305

其中, ./tx2_pinout P1 6指P16. 这里的P0, P1是为了迎合 TX2用I2C通过TCA9539扩展的GPIO对应的P16, P17的计算, 这个基值是240:

在这里插入图片描述

可参考Jetson TX2 GPIO mapping

用C快捷计算Xavier Linux GPIO

再顺手撸个Xavier的xavier_pinout.c:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>

// #define TEGRA194_MAIN_GPIO_BASE 288
// #define TEGRA194_AON_GPIO_BASE  248

char port_array[33][3] = {"AA","BB", "CC", "DD", "EE", \
                          "A","B","C","D","E","F","G", \
                          "H","I","J","K","L","M","N", \
                          "O","P","Q","R","S","T", \
                          "U","V","W","X","Y","Z", \
                          "FF","GG"};

char *strupr(char *str){
    char *orign=str;
    for (; *str!='\0'; str++)
        *str = toupper(*str);
    return orign;
}

int main(int argc, char **argv)
{
    if(argc >= 3) {
        //printf("%d, %s, %s, %s\n", argc, argv[0], argv[1], argv[2]);
        for(int i = 0; i < 33; i++) {
            if( (strcmp(port_array[i], strupr(argv[1])) == 0) && (atoi(argv[2]) < 8)) {
                printf("%s.%s Linux GPIO: %d\n", argv[1], argv[2], i * 8 + atoi(argv[2]) + 248);
                return 0;
            }
        }
    } 

    printf("Segmentation fault, input like \"./tx2_pinout AA 02\"\n");

    return 0;
}

gcc -o xavier_pinout xavier_pinout.c, 然后测试一下:

$ ./xavier_pinout Q 06
Q.06 Linux GPIO: 422

$ ./xavier_pinout R 02
R.02 Linux GPIO: 426

$ ./xavier_pinout B 00
B.00 Linux GPIO: 296

$ ./xavier_pinout BB 00
BB.00 Linux GPIO: 256

$ ./xavier_pinout CC 07
CC.07 Linux GPIO: 271

$ ./xavier_pinout I 01
I.01 Linux GPIO: 353

可以和 Jetson AGX Xavier GPIO Expansion Header Mapping 对照结果.

Debug

有时出现错误:

$ ls /sys/class/gpio
export  gpio245  gpiochip232  gpiochip240  gpiochip256  gpiochip320  unexport

$ echo 247 > /sys/class/gpio/export
-bash: echo: write error: Device or resource busy

用sudo, unexport也不行, 可以sudo cat /sys/kernel/debug/gpio查看:

$ sudo cat /sys/kernel/debug/gpio
gpiochip3: GPIOs 232-239, parent: platform/max77620-gpio, max77620-gpio, can sleep:
 gpio-232 (                    |external-connection:) in  hi
 gpio-237 (                    |spmic_gpio_input    ) in  hi
 gpio-238 (                    |spmic_gpio_input    ) in  hi

gpiochip2: GPIOs 240-255, parent: i2c/0-0074, tca9539, can sleep:
 gpio-240 (                    |vdd-usb2-5v         ) out lo
 gpio-241 (                    |en-vdd-ts-1v8       ) out hi
 gpio-242 (                    |en-vdd-ts-hv-3v3    ) out hi
 gpio-243 (                    |en-vdd-disp-3v3     ) out lo
 gpio-244 (                    |vdd-fan             ) out hi
 gpio-245 (                    |sysfs               ) out hi
 gpio-247 (                    |en-mdm-pwr-3v7      ) out lo
...

可以看到, 247已经用作输出0被占用了, 这种需要修改刷写设备树了.

微信公众号

欢迎扫描二维码关注本人微信公众号, 及时获取或者发送给我最新消息:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TX2/Xavier Linux GPIO 计算 的相关文章

  • 使用“touch”创建目录? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 1 在 A 目录中 find type f gt a txt 2 在 B 目录中 cat a txt while read FILENAMES do
  • Linux环境下串口数据转换为TCP/IP

    我需要从Linux系统的串口获取数据并将其转换为TCP IP发送到服务器 这很难做到吗 我有一些基本的编程经验 但对 Linux 的经验不多 有没有开源应用程序可以做到这一点 在 Linux 中您不需要编写程序来执行此操作 只是pipe h
  • 缺少 /var/lib/mysql/mysql.sock 文件

    我正在尝试访问 mysql 当我运行 mysql 命令时 我得到以下信息 root ip 10 229 65 166 tpdatabase 1 8 0 28356 mysql 错误 2002 HY000 无法连接到 通过socket本地My
  • 专门逐行调试

    我有一个用 Pascal 编写的脚本 我会以这种方式调试它 在每一行停止 转储内存中所有变量的值 然后转到下一行 是否可以使用 gdb 或其他 Linux 开源工具来完成此操作 使用选项编译文件 g fpc gpc g file pas R
  • 如何在 C++ 中检查文件是否已被另一个应用程序打开?

    我知道 有is open C 中的函数 但我希望一个程序检查文件是否尚未被另一个应用程序打开 有没有办法使用标准库来做到这一点 编辑 在答案中澄清这是针对 Linux 应用程序的 不仅标准库没有这个功能 一般来说也是不可能的 你可以 在li
  • 在 Alpine Docker 容器上安装 OpenSSH

    第一次运行 alpine docker 容器并尝试 openssh 安装时 会发生以下情况 ole T docker run it rm alpine bin ash apk add openssh WARNING Ignoring APK
  • 如何格式化 .CSV 文件的日期字段并在字符串字段中包含多个逗号

    我有一个 CSV 文件 file csv 其数据全部用双引号引起来 文件的示例格式如下 column1 column2 column3 column4 column5 column6 column7 Column8 Column9 Colu
  • 如何在 Amazon Linux 上安装最新版本的 GDAL?

    我想安装GDAL https gdal org 在运行 Amazon Linux 的 EC2 实例上 我认为它基于 RHEL 6 如果可能的话 我想避免从源代码编译 EPEL Yum 存储库中包含的 GDAL 版本对于我的目的来说太旧了 g
  • pthread_create 编译返回错误

    我使用以下代码创建两个线程 header files include
  • 出现错误 /usr/bin/env: 节点:权限被拒绝

    我已经在我的服务器 Centos 上完成了 ODOO v9 安装 一切都已安装成功 登录页面也可以正常工作 但登录后我收到一个包含以下错误的页面 usr bin env node Permission Denied 我尝试更改权限 但我的问
  • DHCP 服务器将任何 url 重定向到登陆页面

    我有一个 Linux DHCP 服务器 我需要将所有网络流量重定向到一个登陆页面 该页面将包含有关如何在网络上注册计算机的说明 无论用户输入什么 URL 都需要将用户重定向到网页 在 DHCP 服务器上 即 用户输入 google com
  • python kivy在矩形内添加文本

    如何在矩形内添加文本 我使用下面的代码并在画布内添加了一个标签 希望它能显示在矩形内 import kivy from kivy app import App from kivy uix anchorlayout import Anchor
  • 如何将目录路径转换为唯一的数字标识符 (Linux/C++)?

    我正在研究获取目录 文件夹 并派生某种形式的唯一数字标识符的方法 我研究了 字符串到哈希 方法 但是 鸽子洞原理 http www codinghorror com blog 2007 12 hashtables pigeonholes a
  • 什么是 Linux 上易于使用的 C++ 分析器? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我需要分析一些在 Linux 上运行 C 的代码 你们能推荐一些分析器吗 使用 gprof 只需编译 pg标志 我认为 但不确定 你必须关
  • 如果执行 shell 失败,jenkins 构建不会失败

    作为构建过程的一部分 我运行 git commit 作为执行 shell 步骤 但是 如果工作区中没有任何更改 Jenkins 将导致构建失败 这是因为当没有要提交的更改时 git 返回错误代码 如果是这种情况 我想要么中止构建 要么将其标
  • 编辑 CMakeLists.txt 以使用 -fPIC 进行编译

    我正在尝试为名为 libnifalcon 的 NOVINT Falcon 安装驱动程序 我使用 cmake 创建 make 文件 但是当我运行 make 时出现错误 Linking CXX shared library lib libnif
  • 我如何知道哪个 /dev/input/eventX (X=0..7) 有 Linux 输入流?

    我正在尝试捕获 Linux 键盘 鼠标输入 并且我正在读取类似的事件 dev input event2 但似乎输入有时会定向到 dev input event2 有时到 dev input event3 我想知道是否有一个地方可以找出哪个流
  • 如何找到某个命令的目录?

    我知道 当您使用 shell 时 唯一可以使用的命令是可以在 PATH 上设置的某些目录中找到的命令 即使我不知道如何查看 PATH 变量上的目录 这是另一个可以回答的好问题 我想知道的是 我来到 shell 并写道 lshw 我想知道 s
  • 在C中获取终端宽度?

    我一直在寻找一种从 C 程序中获取终端宽度的方法 我不断想出的是这样的东西 include
  • 如何在没有 root 访问权限的情况下在 Ubuntu 上安装 Google Test?

    我正在尝试根据以下方式安装 Google Test这个答案 https stackoverflow com a 21314020 6560773在没有 root 访问权限的 Ubuntu 上 因为我需要在工作中学习和使用它 设法在我自己的用

随机推荐

  • nautilus命令介绍

    nautilus 图形化桌面包括了一个叫做 Nautilus 的文件管理器 在GNOME中是Nautilus 鹦鹉螺 xff0c 而KDE中是Konqueror
  • 写个strcat函数

    include 34 stdio h 34 include lt string h gt void stracat char a char b char temp 128 char p 61 temp int alen 61 strlen
  • linux 下 tcp client的 demo

    include lt stdio h gt include lt stdlib h gt include lt string h gt include lt unistd h gt include lt sys socket h gt in
  • 解决MATLAB2020B关于找不到vs2019C++编译器问题

    在配置matlab 深度学习环境过程中 xff0c 出现找不到vs219C 43 43 编译器 问题 xff0c 尝试了各种办法 xff0c 还是失败 xff0c 经过摸索和结合他人经验 xff0c 最终成功 xff0c 予以总结 xff0
  • Ubuntu下使用w3m命令行模式浏览网页

    w3m是一个基于文本的网页浏览器 xff0c 支持多种操作系统 xff0c 在命令行终端可以很好的支持中文 即使在没有鼠标支持的情况下也可以检查网页的输出 我们一般用Ubuntu的X Windows来看图形界面的东西 xff0c 有没有想过
  • CC3D飞控说明书/使用手册

    CC3D飞控说明书 使用手册openpilot librepilot CC硬件配置 记得点赞哦 xff01 xff01 xff01
  • 串口服务器的原理及使用方法

    串口服务器是将来自TCP IP协议的数据包 xff0c 解析为串口数据流 xff1b 反之 xff0c 也可以将串口数据流打成TCP IP协议的数据包 xff0c 从而实现数据的网络传输 它能多个串口设备连接并能将串口数据流进行选择和处理
  • tcpdump命令

    tcpdump tcpdump命令介绍 tcpdump xff0c 用简单的语言概括就是dump the traffic on a network xff0c 是一个运行在linux平台可以根据使用者需求对网络上传输的数据包进行捕获的抓包工
  • 小程序登录后,接口调用失败返回401

    问题描述 xff1a 小程序登录后 xff0c 所有的内部接口不可调用 xff0c 全部授权失败 xff0c 接口返回401 xff1b 解决办法 xff1a 服务端清缓存就可以了 微信开发者工具中 xff0c 小程序多次登录 xff0c
  • 车牌识别算法 基于yolov5的车牌检测+crnn中文车牌识别 支持12种中文车牌识别

    yolov5 车牌识别算法 xff0c 支持12种中文车牌类型 基于yolov5的车牌检测 车牌矫正以及 基于CRNN的车牌识别 1 单行蓝牌 2 单行黄牌 3 新能源车牌 4 白色警用车牌 5 教练车牌 6 武警车牌 7 双层黄牌 8 双
  • LINUX nautilus 命令

    最近使用Ubuntu的时候发现了一个很好用的小命令 xff1a nautilus nautilus是GNOME桌面下的一个文件管理工具 通过这个命令我们可以在终端下非常方便的打开指定目录的文件 nautilus 命令后面一个 xff0c 表
  • 无人机学习之路——电机

    一 什么是电机 xff1f 电机是整个无人机的四肢 xff0c 没有电机来驱动的话整个无人机就无法飞起来 因此我们来重点介绍下电机的一些基础知识 本篇内容不会很详细 xff0c 不会全部介绍 xff0c 只会介绍无人机需要学习的知识 二 电
  • c++中“::”和“:”啥意思

    c 43 43 中 和 啥意思 1 1 类作用域操作符 指明了成员函数所属的类 如 xff1a M f s 就表示f xff08 s xff09 是类M的成员函数 2 表示 域操作符 例 xff1a 声明了一个类A xff0c 类A里声明了
  • python中执行shell脚本之subprocess模块

    一 最近subprocess使用背景和介绍 因为最近领导要求 xff0c 在Python端调用大数据的shell脚本 xff0c 所以需要用到Python来执行shell脚本 因此需要查看下subprocess模块文档 根据官网文档描述 x
  • odroid-xu4(ubuntu mate 16.04)源码编译opencv 3.2

    硬件平台 xff1a odroid xu4 软件环境 xff1a ubuntu mate 16 04 1 更新软件列表 xff1a sudo apt get update 2 安装依赖包 xff1a apt get install libq
  • Pytorch Tensor基本数学运算

    1 加法运算 示例代码 xff1a import torch 这两个Tensor加减乘除会对b自动进行Broadcasting a 61 torch rand 3 4 b 61 torch rand 4 c1 61 a 43 b c2 61
  • HC-SR04超声波测距模块介绍

    超声波简介 超声波是由机械振动产生的 可在不同介质中以不同的速度传播 具有定向性好 能量集中 传输过程中衰减较小 反射能力较强等优点 超声波传感器可广泛应用于非接触式检测方法 它不受光线 被测物颜色等影响 对恶劣的工作环境具有一定的适应能力
  • 操作系统之大端小端

    1 什么是大端 什么是小端 所谓的大端模式 xff0c 是指数据的低位保存在内存的高地址中 xff0c 而数据的高位 xff0c 保存在内存的低地址中 xff1b 所谓的小端模式 xff0c 是指数据的低位保存在内存的低地址中 xff0c
  • 激光雷达授时

    文章目录 前言部分原理图调试微信公众号 前言 给Velodyne的16和32线激光雷达授时 用的是 中科微电子 的 ATGM336H 5N31 部分原理图 部分原理图如下 J9是FAKRA接口 直接挂一个GPS有源天线 出来的TX接一个RS
  • TX2/Xavier Linux GPIO 计算

    目录 Linux GPIO子系统TX2 Linux GPIO计算Xavier Linux GPIO计算参考用C快捷计算TX2 Linux GPIO用C快捷计算Xavier Linux GPIODebug微信公众号 Linux GPIO子系统