Steins;Lab

  • 项目
  • 折腾
  • 笔记
  • 图册
  • 杂谈
  • 文章索引 - 博主自荐博文
  • 关于/留言
Steins;Lab
某团的自留研究所
  1. 首页
  2. 学习笔记
  3. 正文

在Nvidia Jetson Xavier开发者套件上启用CAN总线

2019年4月2日 24123点热度 11人点赞 6条评论

 

本文为本人调试Xavier时遇到的,演示了如何开启Nvidia Jetson Xavier开发者套件的CAN总线,是一篇非常优秀的指导文章。本文原作者为Ramin Nabati,由SPtuan获取其授权并翻译。原文链接为:

https://medium.com/@ramin.nabati/enabling-can-on-nvidia-jetson-xavier-developer-kit-aaaa3c4d99c9

在Nvidia Jetson Xavier开发者套件上,共有2路CAN(Controller Area Network)控制器,但是板上没有CAN收发器。而收发器可以很轻松地连接上 Jetson Xavier套件。在这个教程中,我将介绍并示范在Jetson Xavier启用CAN控制器的所有步骤。

步骤为,首先配置GPIO引脚并启用CAN控制器,最后连接CAN收发器。

Table of Contents

  • 1 启用CAN控制器
  • 2 安装CAN收发器
  • 3 笔记
  • 4 译者注

 

1 启用CAN控制器

可以看出Jetson Xavier有一组GPIO扩展口,CAN 控制器可以在此引出。但是,CAN控制器对应的引脚被默认配置为符合Raspi 40引脚标准的GPIO,因此我们首先需要进行引脚配置,来打开CAN功能。根据Nvidia Xavier开发人员论坛上的这篇文章,有两种方法可以重新配置这些引脚。第一种方法是使用特定的pinmux配置闪烁Xavier,但是要求重新使用Jetpack刷写Xavier固件。由于不想重新刷写Xavier,因此我选择第二种解决方案。

第二种解决方案,是使用寄存器读写工具来覆盖CAN控制器引脚对应寄存器值。唯一的问题是这些设置不是持久的,这意味着每次重新启动Jetson Xavier时都需要重复这些操作。

可以通过编写在系统启动时自动运行的脚本来解决问题。在Jetson Xavier上打开一个终端并按照以下步骤操作。

  • 安装busybox以更改寄存器值
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比特率(Bitrate)设置为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
  • 使用ifconfig命令以检查CAN是否成功启用。应该能看到can0和can1这两个网络设备,如下图

  • 恭喜!你已经完成了CAN的设置。由于重启后会失效,接下来创建一个enable_CAN.sh以实现系统启动时自动配置
touch /enable_CAN.sh
chmod 755 /enable_CAN.sh

(译者注:不要盲目复制命令,如果遇到权限不足时可尝试使用sudo提升权限)

  • 接下来编辑这个脚本。你可以使用vim、nano、gedit等你最喜欢的工具
#!/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
  • 如果你的Jetson Xavier上已经有了文件/etc/rc.local,请直接跳至下一步。如果它不存在,在终端中运行以下命令来创建它。(译者注:/etc/rc.local为开启自动启动脚本,如果你不喜欢优雅的脚本管理,可以将上述脚本直接写在/etc/rc.local的exit 0前)
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,在终端中运行ifconfig命令,检查是否看到can0和can1设备。

 

2 安装CAN收发器

KNACRO CAN总线收发器

我使用了两个KNACRO CAN总线收发器进行设置,两个CAN总线连接起来。如果只需要一路CAN总线,安装一个收发器即可。我使用的收发器工作电压为3.3V,并且已经在总线上焊接了120欧姆的终端电阻。

(译者注:CAN总线收发器模块很常见,在淘宝上直接搜索即可。)

 

Jetson Xavier上扩展GPIO引脚排列以及引脚#1的位置如下图。

Nvidia Jetson Xavier扩展接头引脚

我们首先将扩展接头连接器的引脚#29(CAN0_DIN)和引脚#31(CAN0_DOUT)分别连接一个收发器上的CRX和CTX引脚。同样,引脚#37(CAN1_DIN)和引脚#33(CAN1_DOUT)连接到另一个收发器上的CRX和CTX引脚。

另外,CAN收发器需要供电,因此还需要将扩展​​插头连接器上的两组3.3V和GND引脚分别连接到收发器上的3V3和GND引脚。下图演示了引脚连线图。

收发器和扩展接头之间的接线

收发器上的CANH和CANL引脚需要连接到要与之通信的两条CAN总线的CAN高电平和CAN低电平线,即接入CAN网络。为了放置这两块小PCB板,我制作了个平台,如下图。

如上图所示,我使用DB-9连接器接入CAN总线。两组绞合线分别为是CAN0和CAN1的CANH和CANL线。为了保持低错误率,CAN高和CAN低电线通常是扭曲的(译者注:CAN总线使用双绞线形式,以减少干扰)。在DB-9连接器上,我用引脚1和8连接CAN0低和高,针脚2和7对应CAN1低和高。您可以按照自己的需求安排DB-9引脚。

 

3 笔记

  1. 根据Jetson AGX Xavier规范和文档,由于默认启用SoC内部的3.3V上拉电阻,系统上电时,引脚37,29,33和31将被拉至3.3V。因此,您使用的收发器必须能够在其CTX和CRX引脚上应对初始的3.3V电压。本教程中使用的收发器似乎正在处理这个初始的3.3V,没有发生任何问题。
  2. 有一组非常方便的脚本:https://github.com/hmxf/can_xavier。

 

4 译者注

在使用Jetson Xavier开发者套件时,您可能还对以下资源感兴趣:

  • JetsonHacks https://www.jetsonhacks.com/
    • 是一个专门分享Jetson套件的网站,有一些非常方便的脚本,例如在TX2、Xavier上一键编译OpenCV,自定义系统内核工具等等
  • https://www.jetsonhacks.com/nvidia-jetson-agx-xavier-gpio-header-pinout/
    • Xavier GPIO定义和IC2等接口开启方法

相关

标签: CAN CAN BUS DIY Jetson Xavier
最后更新:2019年4月2日

SPtuan

SPtuan 是一名普通的工程师,最大的愿望是度过平静的时光。 当前从事网络/CDN/对象存储研发。

点赞
< 上一篇
下一篇 >
0 0 votes
文章评分
Subscribe
Login
提醒
guest

guest

6 评论
最新
最旧 得票最多
Inline Feedbacks
View all comments
bigz
bigz
4 年 之前

你好,你那个 rc.local 里面并未包含控制器引脚配置的命令,重启之后不需要?

0
回复
John Raymond
John Raymond
6 年 之前

艹 带哥这不是PX2啊,咋又换到TX2去了

0
回复
SPtuan
SPtuan
作者
Reply to  John Raymond
6 年 之前

@John Raymond 啥玩意儿?这是Jetson Xavier啊

0
回复
SPtuan
SPtuan
作者
Reply to  John Raymond
6 年 之前

@John Raymond 你说的DRIVE Xavier吧?那玩意儿也就贵司能有一两个了

0
回复
15393083471
15393083471
Reply to  SPtuan
1 年 之前

@SPtuan 你好作者,我想问一下,我的工控机可以正常发送信息通过can收发器发送数据到win系统的cantest软件,但是不能通过win发给工控机,想咨询以下你

0
回复
SPtuan
SPtuan
作者
Reply to  15393083471
1 年 之前

@15393083471 如果 win 通道多的话,可以试着自己给自己发,看看是不是根本没有发送出去

0
回复

SPtuan

SPtuan 是一名普通的工程师,最大的愿望是度过平静的时光。
当前从事网络/CDN/对象存储研发。

  • 1 启用CAN控制器
  • 2 安装CAN收发器
  • 3 笔记
  • 4 译者注
分类
  • Uncategorized
  • 图册
  • 学习笔记
  • 库
  • 折腾
  • 杂谈
  • 瞎**扯
  • 碎碎念
  • 项目跟踪
最近评论
SPtuan 发布于 2 个月前(03月22日) 书签: 关于 disk-io 的经验, 异步/同步 io 系统设计的经验 https://you...
SPtuan 发布于 2 个月前(03月21日) 如果公司不是对外提供这些服务的,这种岗位都是 infra 部门,平均年龄确实会大一些。尤其构建和维护...
HUA 发布于 2 个月前(03月19日) 想请问博主对于国内CDN行业,以及CDN调度、DNS托管类服务相关岗位的看法,以及是否还推荐校招新人...
SPtuan 发布于 3 个月前(02月03日) 2025 注: 长辈对于只身去深圳的担忧,更多地来自于 80s/90s 治安情况。近几年了解了严打...
SPtuan 发布于 4 个月前(01月16日) 哈哈,100就100吧,新年快乐!
热门主题 & 页面
  • 全球互联网拓扑探索 (1) : 互联网是如何工作的
  • 使用 WSL2 + X11 转发 - 在 Windows10 中打造 GNU/Linux 学习生产环境
  • 动手做!基于nRF24L01P的Arduino无线通信
  • [实验]VPS搭建ss服务中转实现纯ipv6访问网络-校园网免流量
  • PYNQ上手体验:以目标检测应用为例
归档
  • 2025 年 5 月
  • 2025 年 3 月
  • 2024 年 12 月
  • 2024 年 9 月
  • 2024 年 8 月
  • 2024 年 5 月
  • 2024 年 3 月
  • 2024 年 2 月
  • 2023 年 12 月
  • 2023 年 11 月
  • 2023 年 9 月
  • 2023 年 8 月
  • 2023 年 4 月
  • 2023 年 1 月
  • 2022 年 12 月
  • 2022 年 10 月
  • 2022 年 9 月
  • 2022 年 7 月
  • 2022 年 6 月
  • 2022 年 2 月
  • 2021 年 12 月
  • 2021 年 11 月
  • 2021 年 2 月
  • 2021 年 1 月
  • 2020 年 9 月
  • 2020 年 4 月
  • 2020 年 3 月
  • 2020 年 1 月
  • 2019 年 8 月
  • 2019 年 7 月
  • 2019 年 5 月
  • 2019 年 4 月
  • 2019 年 3 月
  • 2019 年 2 月
  • 2018 年 12 月
  • 2018 年 10 月
  • 2018 年 9 月
  • 2018 年 8 月
  • 2018 年 5 月
  • 2018 年 2 月
  • 2018 年 1 月
  • 2017 年 11 月
  • 2017 年 9 月
  • 2017 年 7 月
  • 2017 年 6 月
  • 2017 年 5 月
  • 2017 年 4 月
  • 2017 年 3 月
  • 2017 年 2 月
  • 2017 年 1 月
  • 2016 年 12 月
  • 2016 年 11 月
  • 2016 年 10 月
  • 2016 年 9 月
  • 2016 年 8 月
  • 2016 年 7 月
  • 2016 年 6 月
  • 2016 年 5 月
  • 2016 年 4 月
  • 2016 年 3 月
  • 2016 年 2 月
  • 2016 年 1 月
  • 2015 年 12 月
  • 2015 年 11 月
  • 2015 年 9 月

友情链接:

Blessing Studio hahaschool 绘枫和畅 魔法少女Fandy monsterx Clarke的博客 Luminous’ Home Shintaku's Blog
蓝黑的博客 haruhi.club Yida的博客 Bo2SS 涛叔 TangBao 同和君Hocassian

Steins;Lab 团子神社 zdfmc.net

steinslab.io built with ❤. Thanks for all 2015-2025.

Theme Kratos Made By Seaton Jiang

wpDiscuz