【在英伟达nvidia的jetson-orin-nx上使用调试can基础收发-硬件连接-开机自启动can-初步调试】

news2024/9/23 17:20:32

【在英伟达nvidia的jetson-orin-nx上使用调试can基础收发-硬件连接-开机自启动can-初步调试】

  • 1、概述
  • 2、实验环境
  • 3、自我学习
  • 4-1、实验过程
      • 1、硬件原理图+焊接+连接模块
      • 2、输入命令
      • 3、测试过程
  • 4-2、目前遗留问题
      • # 1-1、发送可以发送,但是PC发送数据收不到。
      • # 1-2、接收是可以接收,但是发送PC收不到数据
  • 5、其它细节
        • (1)发送时输入错误警告
        • (2)发送时输入没有FDcan警告
        • (3)其他can工具
  • 6、总结

1、概述

近期开始学习英伟达的工控板,作为新手还是有很多不同懂得地方,但是一部分它用的linux系统,有点像玩树莓派,通过自己一段时间学习can调试,终于可以简单通信了。

开始的时候,自己也是什么都不是很懂,从新手一点点摸索过来,现在使用工控机,简单can通信也已经没有问题了,算是有些进步吧。

2、实验环境

初次了解,这里使用提供软硬件信息吧。
硬件信息:Jetson Orin nx
软件版本:5.10.104-tegra #1 SMP PREEMPT Sun Mar 19 07:55:28 PDT 2023 aarch64 aarch64 aarch64 GNU/Linux
在这里插入图片描述
其它硬件:can卡 和 can转TTL模块TJA1050T模块

3、自我学习

(1)硬件连接电路
想要调试can,我们需要先知道硬件情况,如下图,一般在这个位置有,
在这里插入图片描述
不过本身不像其他开发板,不自带can转换模块,因此需要买个模块,上次买的模块还在(TJA1050T模块)。
在这里插入图片描述

(2)查找资料学习
这类不会从头讲一遍can,相关can资料网上还是挺多,可以自行查找和了解。

这个can,在不同工控机上,并不是完全一样的,有的工控机配置上还有些麻烦,不过jetson orin nx,还行,就几个命令行,技能启动,具体有什么不一样会在后面说,下面是资料问题,可以了解命令行。
参考文档:https://docs.nvidia.com/jetson/archives/r34.1/DeveloperGuide/index.html#
在这里插入图片描述

(3)调试命令
调试命令,在上述文档有说明,核心是使用工具“busybox”,不过一般都自带,也不需要安装,如果没用可以安装下。

在这里插入图片描述

(4)开机脚本学习
当你熟悉can的启动命令后,并且一些工具装好后,你会发现,就是一些命令,但是不可能每次开机手敲一遍,所以要使用开机自启动方式。

在网上搜索,开机启动的话,有几种,下面是一些常用的方法:

1 、使用 /etc/rc.local 文件:可以在 /etc/rc.local 文件中添加需要在开机时启动的命令或脚本,这些命令会在系统启动时自动执行。

2、使用 systemd:在使用 systemd 系统管理工具的 Linux 发行版中,可以通过编写 systemd unit 文件来实现开机自启动。
3、使用 crontab:可以通过 crontab 工具在系统启动时运行一个脚本或命令。

4-1、实验过程

1、硬件原理图+焊接+连接模块

在这里插入图片描述
具体can的硬件外露硬件上边已经说明,我们直接看下去,是实际的硬件照片,可以看到没用连接引脚,
在这里插入图片描述

我们需要自己焊接,另外我这模块是需要5V的供电,可以从40pin那边取得。
在这里插入图片描述

焊接好了以后就可以连到硬件模块上了。

在这里插入图片描述
模块再出canH和canL,如果调试时不通,可以交换CAN_RX和CAN_TX引脚,如下图,已是弄好的,并连接好can卡的。
在这里插入图片描述

2、输入命令

根据资料与文档吧,直接说应该输入命令。

sudo modprobe can_raw 
sudo modprobe mttcan
sudo ip link set can0 type can bitrate 500000 loopback on
sudo ip link set can0 up

请注意,以上实在jetson orin NX的情况,实际发现,如果是其他系列很可能不一样,在实际使用== Jetson-Xavier-NX==的时候,要该基地址,加入如下两行。如下所示意

sudo busybox devmem 0x0c303020 32 0x0000C458
sudo busybox devmem 0x0c303018 32 0x0000C400
sudo modprobe can_raw
sudo modprobe mttcan
sudo ip link set can0 type can bitrate 500000 loopback on
sudo ip link set can0 up

3、测试过程

如果一切输入没有问题,那么can就应该启动了,我们输入“”ifconfig“”命令可以查看。
在这里插入图片描述

有can0的字样就成功了。

然后我们使用发送工具和接收控件进行收发测试。

4-2、目前遗留问题

截止目前发文,依旧没有解决一个问题,就是配置完了代码后,在一种情况下,orin可以收到信息,但是发不出来,另一种情况是可以发出来,但是收不到信息PC,这就很神奇,在其他工控板尝试过,有成功了的,不知道在orin上为啥就不行。

# 1-1、发送可以发送,但是PC发送数据收不到。

使用cansend命令
在这里插入图片描述
命令如下
在这里插入图片描述

在PC电脑软件接受结果,波特率500kbps。
在这里插入图片描述

# 1-2、接收是可以接收,但是发送PC收不到数据

使用candump命令
使用命令

`
在这里插入图片描述
在PC电脑软件接受结果,波特率500kbps。
在这里插入图片描述

此问题暂时搁置吧,在英伟达论坛问过也没有解决,具体链接如下。
https://forums.developer.nvidia.com/t/jetson-orin-nx-can-candump-can0-messages-cannot-be-received-but-cansend-can-be-sent/261012/13
在这里插入图片描述

5、其它细节

(1)发送时输入错误警告

如下图所示,当输入cansend不争取或者有问题是,会警告你,你需要重新输入。
在这里插入图片描述

(2)发送时输入没有FDcan警告

如下图,虽然给出你实例,但是没有FDcan,就可以先不输入这样的。
在这里插入图片描述

(3)其他can工具

这里直接简单简绍can的发送和接受,还有其他工具,有兴趣可以看看其他文章补充下。

博文链接:https://blog.csdn.net/engrossment/article/details/105222753

6、总结

每一步走的都很艰辛,需要反复验证,才能准去无误,开始以为发送没有问题就没事了,没想到发送可以却接受不行,每一步都要反复确认啊,这个问题会持续关注下吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/839549.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

任务 13、MidJourney种子激发极致创作,绘制震撼连贯画作

13.1 任务概述 通过本次实验任务,学员将深入了解Midjourney种子的概念和重要性,以及种子对生成图像的影响。他们将学会在Midjourney平台中设置种子值并调整其参数,以达到所需的效果。此外,任务还详细介绍了Midjourney V4.0版本中…

周末作业 c高级

1.判断家目录下,普通文件的个数和目录文件的个数: #!/bin/bash arr1(ls -la ~/|cut -d r -f 1|grep -wi d) arr2(ls -la ~/|cut -d r -f 1|grep -wi -)echo "普通文件个数为:${#arr2[*]}" echo "目录文件个数为:$…

【TypeScript】TS接口interface类型(三)

【TypeScript】TS接口interface类型(三) 【TypeScript】TS接口interface类型(三)一、接口类型二、实践使用2.1 常规类型2.2 设置属性只读 readonly2.3 设置索引签名2.4 设置可选属性2.5 函数类型接口 一、接口类型 TypeScript中的…

没有配置redis但是报错连接redis失败

问题 没有配置redis但是报错连接redis失败 检查maven配置是否引入了redis依赖(可能是传递依赖,最好检查引进来的公共工程 解决办法 只需要在该工程application.yml文件中配置一下 redis就好,或者移除redis依赖

高效处理矢量大数据的高可用解决方案

高效处理矢量大数据的高可用解决方案 解决方案目标 存储海量矢量数据实时分析海量矢量数据实现海量矢量数据的可视化提供高可用、高性能和高可拓展性解决方案概述 海量数据查询与可视化 系统技术流程 方案一 数据存储: PostgreSQL+PostGIS(矢量数据存储和空间分析)数据服务…

企业场景--技术场景

目录 单点登录如何实现 使用jwt解决单点登录 总结 ​编辑 权限认证如何实现 五张表实现权限认证 框架 具体案例 上传数据的安全性如何控制 对称加密 非对称加密 你的项目遇到了哪些棘手的问题? 项目中日志怎么采集的 ELK进行日志采集 logstash kibana操…

P25LED透明屏:在商业广告中,透明显示效果怎么样?

P25LED透明屏是一种新型的显示屏技术,它具有高透明度和高亮度的特点,可以实现透明显示效果。 P25LED透明屏广泛应用于商业广告、展览展示、户外广告等领域,具有很大的市场潜力。 P25LED透明屏采用了先进的LED显示技术,具有高亮度…

浅析RabbitMQ死信队列

原文首发于公众号【CSJerry】 在现代分布式系统中,消息队列扮演着至关重要的角色。它们可以实现应用程序之间的异步通信,并确保数据的可靠传输和处理。而在这个领域中,RabbitMQ作为一种强大而受欢迎的消息队列解决方案,具备了高…

c语言——求n之内的素数和

//求n之内的素数和 //列如&#xff1a;2、3、5等 #include<stdio.h> #include<math.h> int main() {int i,j,k,n0;scanf("%d",&n);for(i2;i<n;i){k(int)sqrt(i);for(j2;j<k;j)if(i%j0)break;if(j>k){printf("%d,",i);n;if(n%50)p…

23.8.5总结(Web博客项目)

用户搜索&#xff0c;标签搜索。 主页面加上了标签和用户推荐 管理员页面还需要修改 还有这些功能点没有实现&#xff1a; 右键删除评论 点赞次数已达上限 删除博客 消息页面&#xff0c;收消息&#xff08;点赞和收藏要给被点赞这个博主发消息&#xff09; 管理员页面&#…

day52-Redis

Redis 1.Redis 1.1 RESP连接Redis 1.2 定义&#xff1a;是一个高性能的key-value数据库&#xff08;非关系型数据库&#xff09; 1.3 数据类型&#xff1a; key键的类型是字符串类型&#xff1b; 值的类型有五种&#xff1a;字符串String&#xff0c;哈希hash&#xff0…

layui之layer弹出层的icon数字及效果展示

layer的icon样式 icon如果在信息提示弹出层值(type为0)可以传入0-6&#xff0c;icon与图标对应关系如下&#xff1a; 如果是加载层&#xff08;type为3&#xff09;可以传入0-2&#xff0c;icon与图标对应关系如下&#xff1a;

javaAPI(五):System、Math、BigInteger、BigDecimal

System类 System类代表系统&#xff0c;系统级的很多属性和控制方法都放置在该类的内部。该类位于java.lang包。 由于该类的构造器是private的&#xff0c;所以无法创建该类的对象&#xff0c;也就是无法实例化该类。其内部的成员&#xff0c;所以也可以很方便的进行调用。变量…

STM32入门学习之独立看门狗(IWDG)

1.STM32的独立看门狗是一个具有独立时钟的片上外设。通常&#xff0c;为了防止程序卡死&#xff0c;可以设置看门狗定时复位。当看看门狗被使能之后&#xff0c;会按初始化时设置的计数值进行计数。当根据计数值计数的倒数时间为0时&#xff0c;便会自动复位程序&#xff0c;即…

嵌入式开发学习(STC51-12-I2C/IIC)

内容 在数码管右3位显示数字&#xff0c;从0开始&#xff0c;按K1键将数据写入到EEPROM内保存&#xff0c;按K2键读取EEPROM内保存的数据&#xff0c;按K3键显示数据加1&#xff0c;按K4键显示数据清零&#xff0c;最大能写入的数据是255&#xff1b; I2C介绍 I2C简介 I2C&…

CNN成长路:从AlexNet到EfficientNet(01)

一、说明 在 10年的深度学习中&#xff0c;进步是多么迅速&#xff01;早在 2012 年&#xff0c;Alexnet 在 ImageNet 上的准确率就达到了 63.3% 的 Top-1。现在&#xff0c;我们超过90%的EfficientNet架构和师生训练&#xff08;teacher-student&#xff09;。 如果我们在 Ima…

echarts 饼图的label放置于labelLine引导线上方

一般的饼图基础配置后长这样。 想要实现将文本放置在引导线上方&#xff0c;效果长这样 const options {// ...series: [{label: {padding: [0, -40],},labelLine: {length: 10,length2: 50,},labelLayout: {verticalAlign: "bottom",dy: -10,},},], };label.padd…

2配置篇:基础功能配置

前言 在上一章节中,我们学习了 NestJS CLI 的用法,得到了一套基础的项目工程。最开始做项目对比的时候也提到过,NestJS 作为一款自定义程度较高的框架,CLI 直接提供的基础功能虽然并不完善,但同时也为开发者提供了非常多的内置或配套的功能例如高速缓存、日志拦截、过滤器…

栈和队列(一) 栈操作详解

文章目录 一、物理结构和逻辑结构二、栈1、什么是栈2、栈中一些基本操作的实现Stack.hStack.c栈的初始化栈的销毁入栈出栈获得栈顶元素获得栈的元素数判断栈空 三、利用栈解决问题 一、物理结构和逻辑结构 栈和队列都属于逻辑结构&#xff0c;它们既可以用数组实现也可以用链表…

【小沐学前端】VuePress制作在线电子书、技术文档(VuePress + Markdown + node)

文章目录 1、简介1.1 VuePress简介1.2 它是如何工作的&#xff1f; 2、安装node3、安装VuePress4、配置VuePress4.1 修改标题4.2 修改导航条4.3 修改右侧栏4.4 修改正文 结语 1、简介 Vue驱动的静态网站生成器&#xff0c;生成的网页内容放到自己服务器上管理&#xff0c;可用于…