南希- 发表于 2019-11-20 11:06:32

jetson AGX Xavier关于CAN口调试

注意:确保jetson AGX Xavier系统是英文版本的(中文系统版本存在有很多漏洞,可能会导致CAN口无法调试)
首先安装一个工具来更改Xavier上的寄存器值:
sudo apt install busybox或sudo apt install busybox
然后我们需要重新配置与CAN控制器引脚对应的四个寄存器值。以下命令将重新配置这些引脚:
sudo busybox devmem 0x0c303000 320x0000C400 sudo busybox devmem 0x0c303008 320x0000C458 sudo busybox devmem 0x0c303010 320x0000C400 sudo busybox devmem 0x0c303018 320x0000C458
现在修改了寄存器值,我们可以使用以下modprobe命令安装CAN控制器并加载驱动程序:
sudo modprobe can
sudo modprobe can_rawsudo modprobe mttcan
下一步是根据CAN总线和收发器的规格配置CAN控制器。在这里,我将CAN比特率设置为500 Kbps,启用灵活数据速率(FD),将有效负载比特率设置为2 Mbps并启用总线错误报告。如果您不确定所有这些设置,则可以在此之后设置bitrate值并忽略其他选项。
sudo ip link set can0 type can bitrate500000 dbitrate 2000000 berr-reporting on fd on
sudo ip link set can1 type can bitrate500000 dbitrate 2000000 berr-reporting on fd on
启动CAN接口:
sudo ip link set up can0
sudo ip link set up can1
要检查CAN控制器是否已成功启用,请使用该ifconfig命令。在输出,你应该能够看到can0和can1网络设备之间,如图下图:要在系统启动时自动完成上述CAN控制器配置,请创建一个enable_CAN.sh在根目录中命名的文件并使其可执行:
sudo touch /enable_CAN.sh
sudo chmod 755 /enable_CAN.sh
将以下行添加到此文件并保存。这些基本上与我们配置CAN控制器的命令相同。
#!/bin/bash

sudo modprobe can
sudo modprobe can_rawsudo modprobe mttcansudo ip link set can0 type can bitrate500000 dbitrate 2000000 berr-reporting on fd onsudo ip link set can1 type can bitrate500000 dbitrate 2000000 berr-reporting on fd onsudo ip link set up can0sudo ip link set up can1
exit 0
如果/etc/rc.localJetson Xavier上已存在该文件,请跳至下一步。如果它不存在,请继续并通过在终端中运行以下命令来创建它:
printf '%s\n' '#!/bin/bash' 'exit 0' |sudo tee -a /etc/rc.local
sudo chmod +x /etc/rc.local
在行/etc/rc.local之前的文件中添加以下exit 0行:
sh /enable_CAN.sh&
/etc/rc.local文件现在应该如下所示:
现在应该在系统启动时自动运行enable_CAN.sh脚本并配置CAN控制器。要测试它,请重新启动Jetson Xavier并检查在终端中运行命令时是否仍然看到can0和can1设备ifconfig。

安装CAN收发器

我们首先将扩展接头连接器的引脚#29(CAN0_DIN)和引脚#31(CAN0_DOUT)连接到其中一个收发器上的CRX和CTX引脚。同样,引脚#37(CAN1_DIN)和引脚#33(CAN1_DOUT)需要连接到另一个收发器上的CRX和CTX引脚。我们还需要将扩展​​插头连接器上的两组3.3V和GND引脚连接到收发器上的3V3和GND引脚。下图演示了收发器的引脚如何连接到扩展头引脚。收发器上的CANH和CANL引脚需要连接到要与之通信的两条CAN总线的CAN高电平和CAN低电平线。我们还需要某种结构来修复收发器和Jetson Xavier开发人员套件。我们已经建立了一个简单的平台来安装板和收发器。下图显示了连接到Jetson Xavier开发人员套件并安装在此平台上的收发器。

发表于 2019-11-20 15:26:01

请问所用的收发器型号可以分享一下吗?

peter 发表于 2019-11-24 11:08:54

收发器,其实就是CAN电平转换而已,淘宝上也有的

发表于 2019-11-25 16:31:33

您好,严格按照这个文章里的命令执行了一遍,然后一个命令窗口candump can1,另一个窗口cansend can0 123#1213141516171819,但candump那个窗口却什么也收不到,请问是怎么回事呢?连接和命令见下图。据说要调高低电平,具体是怎么操作呢?能指导一下吗?
http://imgsrc.baidu.com/forum/w%3D580/sign=9a1ac5e651df8db1bc2e7c6c3922dddb/faa473f082025aaf6275bab5f4edab64024f1a44.jpg
http://imgsrc.baidu.com/forum/w%3D580/sign=58be5450a7d3fd1f3609a232004e25ce/a135b9014a90f603a9b85b393612b31bb151edf8.jpg

发表于 2020-6-9 17:53:34

游客 223.71.46.x 发表于 2019-11-25 16:31
您好,严格按照这个文章里的命令执行了一遍,然后一个命令窗口candump can1,另一个窗口cansend can0 123#1 ...

请问你解决了吗,我也遇到这个问题了

风火轮用户99499 发表于 2020-7-21 10:54:53

按照上面步骤,自发自收可以通过,但是针脚没有信号输出,这个是什么问题

Pizrix 发表于 2021-7-2 17:20:45

同样的步骤为什么can0能打开,can1打不开呢?

Pizrix 发表于 2021-7-2 17:38:53

你好,请问一下,我这边就显示Cannot find "can1"怎么办呢
页: [1]
查看完整版本: jetson AGX Xavier关于CAN口调试