Jetson下的i2c、spi、gpio、can、uart、485代码示例can接口使用说明

28 篇文章 1 订阅
2 篇文章 0 订阅

Nvidia Jetson Xavier配备了两个控制器局域网 (CAN) 控制器,但没有任何 CAN 收发器。这些收发器可以轻松添加到 Jetson Xavier 开发套件中,以实现与其他设备的 CAN 总线通信。在本教程中,我将完成在 Jetson Xavier 开发套件上启用 CAN 控制器所需的所有步骤。我首先配置 Jetson Xavier 上的 GPIO 引脚并启用 CAN 控制器,然后完成收发器安装步骤。

感谢Tuan Misaka ,现在可以在此处获得本教程的中文翻译。

第 1 部分:启用 CAN 控制器

Jetson Xavier 开发套件中的 CAN 控制器可通过 GPIO 扩展接头进行访问。默认情况下,CAN 控制器的引脚配置为具​​有 GPIO 功能,以符合 Raspi 40 引脚标准,因此我们需要做的第一件事是重新配置这些引脚以启用 CAN 功能。根据Nvidia Xavier 开发者论坛上的这篇文章,有两种方法可以重新配置这些引脚。第一种方法涉及使用特定的 pinmux 配置来刷新 Xavier。由于我不想重新刷新我的 Xavier,因此我将采用第二种解决方案。

第二种解决方案是使用寄存器读/写工具覆盖CAN控制器引脚对应的寄存器值。该解决方案的唯一问题是这些设置不是持久的,这意味着每次 Jetson Xavier 开发工具包启动时都需要重复这些设置。我们将通过编写一个在系统启动时自动运行的配置脚本来解决这个问题。让我们开始在 Jetson Xavier 上打开一个终端并按照以下步骤操作。

Welcome — Jetson Linux<br/>Developer Guide 34.1 documentation

  • 我们首先安装一个用于更改 Xavier 上的寄存器值的工具:
sudo apt-get 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命令。在输出中,您应该能够在网络设备中看到can0can1,如下图所示:

  • 要使上述 CAN 控制器配置在系统启动时自动完成,请enable_CAN.sh在根目录中创建一个名为的文件并使其可执行:
touch /enable_CAN.sh
chmod 755 /enable_CAN.sh
  • 将以下行添加到该文件中并保存。这些命令与我们配置 CAN 控制器时运行的命令基本相同。
#!/bin/bash
sudo busybox devmem 0x0c303000 32 0x0000C400
sudo busybox devmem 0x0c303008 32 0x0000C458
sudo busybox devmem 0x0c303010 32 0x0000C400
sudo busybox devmem 0x0c303018 32 0x0000C458
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.local已存在于您的 Jetson 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和设备。can1ifconfig

第 2 部分:安装 CAN 收发器

KNACRO CAN 总线收发器

我在设置中使用了两个KNACRO CAN 总线收发器,这样我就可以同时与两个 CAN 总线连接。如果您只需要与一根CAN总线通信,则可以只安装一台收发器。我使用的收发器运行电压为 3.3V,总线上已焊接有 120 欧姆终端电阻。

Jetson Xavier 上扩展接头的引脚分配以及引脚 #1 的位置如下图所示。

Nvidia Jetson Xavier 扩展接头引脚分配

我们首先将扩展接头连接器的引脚 #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 开发套件并安装在该平台上的收发器。

如上图所示,我使用 DB-9 连接器与 CAN 总线连接。两组绞线分别是 CAN0 和 CAN1 的 CANH 和 CANL 线。为了保持较低的错误率,CAN 高线和 CAN 低线通常是绞合的。在 DB-9 连接器上,我使用引脚 1 和 8 作为 CAN0 低电平和高电平,使用引脚 2 和 7 作为 CAN1 低电平和高电平,但您可以使用适合您的应用的任何其他引脚分配。

笔记

  1. 根据 Jetson AGX Xavier 开发套件载板规范文档,系统开机时,由于 SoC 中默认启用内部 3.3V 上拉,引脚 37、29、33 和 31 被拉至 3.3V。因此,您使用的收发器必须能够处理其 CTX 和 CRX 引脚上的初始 3.3V 电压。本教程中使用的收发器似乎可以毫无问题地处理这个初始 3.3V。
  2. Jetson Xavier 用户在此存储库中发布了一组非常好的脚本,用于在 Jetson Xavier 上配置和测试 CAN 控制器。

  • 27
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无证驾驶梁嗖嗖

让我们解决Jetson使用问题

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值