注意:确保jetson AGX Xavier系统是英文版本的(中文系统版本存在有很多漏洞,可能会导致CAN口无法调试)
首先安装一个工具来更改Xavier上的寄存器值: sudo apt install busybox 或 sudo apt install busybox |
然后我们需要重新配置与CAN控制器引脚对应的四个寄存器值。以下命令将重新配置这些引脚: sudo busybox devmem 0x0c303000 32 0x0000C400 sudo busybox devmem 0x0c303008 32 0x0000C458 sudo busybox devmem 0x0c303010 32 0x0000C400 sudo busybox devmem 0x0c303018 32 0x0000C458 |
现在修改了寄存器值,我们可以使用以下modprobe命令安装CAN控制器并加载驱动程序: sudo modprobe can
sudo modprobe can_raw sudo modprobe mttcan |
下一步是根据CAN总线和收发器的规格配置CAN控制器。在这里,我将CAN比特率设置为500 Kbps,启用灵活数据速率(FD),将有效负载比特率设置为2 Mbps并启用总线错误报告。如果您不确定所有这些设置,则可以在此之后设置bitrate值并忽略其他选项。 sudo ip link set can0 type can bitrate 500000 dbitrate 2000000 berr-reporting on fd on
sudo ip link set can1 type can bitrate 500000 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_raw sudo modprobe mttcan sudo ip link set can0 type can bitrate 500000 dbitrate 2000000 berr-reporting on fd on sudo ip link set can1 type can bitrate 500000 dbitrate 2000000 berr-reporting on fd on sudo ip link set up can0 sudo 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行: /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开发人员套件并安装在此平台上的收发器。
|