https://blog.csdn.net/hhlenergystory/article/details/81976069

TX2具有两个can设备,分别为can0和can1。这两个can设备自带can控制器和收发器,其原理图如下。

每个can设备都有rx和tx,其发送和接收都是ttl电平,即数字信号,而不是can_h和can_l的模拟信号。想将这两个设备相连进行收发,必须分别外接两个can收发器,转换成差分信号后进行传输,如图

如果将rx接tx这样相连并不能成功传送,会导致can设备由于错误过多而进入can-off状态

为了对can设备进行软件上的测试,可以将其设置成回环模式,进入回环模式的残设备会将发送的数据直接放入接收的buffer中,直接对软件进行测试。

  1. 加载can设备驱动

modprobe can

modprobe can_raw

modprobe mttcan

  1. 设置can设备属性

设置波特率

ip link set can0 type can bitrate 500000 dbitrate 2000000 berr-reporting on fd on
ip link set can1 type can bitrate 500000 dbitrate 2000000 berr-reporting on fd on

设置成回环模式

ip link set can0 type can loopback on

ip link set can1 type can loopback on

开启can设备

ip link set up can0
ip link set up can1

安装第三方开源app can-utils测试canbus

sudo apt-get install can-utils

使用应用程序进行测试

发送程序:

cansend <can_interface> <can_frame>

e.g. cansend can0 123#abcdabcd

接收程序:

candump can_interface

e.g. candump can1

检测canbus的状态:

ip -details -statistics link show can0

ip -details -statistics link show can1

收发实际测试

  1. 载入can设备驱动,设置can设备并启用

modprobe can

modprobe can_raw

modprobe mttcan

ip link set can0 type can bitrate 500000 dbitrate 2000000 berr-reporting on fd on

ip link set can1 type can bitrate 500000 dbitrate 2000000 berr-reporting on fd on

ip link set up can0

ip link set up can1

可以在命令行中手动输入,也可以将这些代码写成脚本一键运行,或是在Linux开机启动脚本中加入以上代码使其开机载入驱动模块。

完成后命令行输入ifconfig,可以看到can0和can1设备,说明设备已经启用

  1. 对TX2平台的can设备进行连线,将can0和can1组成网络,进行收发测试

Tx2的can设备与网络连线如下图所示,TX2的两个can设备引出的引脚为rx和tx为数字信号,需要外接can收发器之后才能将其接入网络

TX2can外设原理图如图下所示,将这两个设备加入网络只需连接rx和tx口,CAN_WAKE、CAN0_STBY和CAN1_STBY暂时不需要连接。同时TX2自带5伏VDD输出,可以给CAN收发器进行供电。

具体连线图如下所示,至此两个CAN设备已组成网络,系统中的can设备驱动也已载入并启用,接下来使用开源软件can-utils对其进行测试。

  1. 下载开源程序can-utils以对后续can总线进行测试(Linux必须联网)

命令行输入:

sudo apt-get install can-utils

输入后系统会自动进行下载和安装。

  1. 使用can-utils命令对can设备进行测试

首先先打开两个终端,一个进行can0设备的发送,一个进行can1设备的接收。

在一个终端中命令行输入candump can1,意义是can1设备开始进行接收,进程为阻塞型,can1设备将一直会接收发来的can消息直到用户终止。

在另一个终端中进行数据发送,使用cansend命令,其格式为

cansend <设备号> <要发送的消息>

对于发送的消息can-utils对其进行了格式定义,只能以16进制发送,一次发送的内容为8字节,如下:

123#1122334455667788    

发送一个标准数据帧,标识ID为123内容为0x1122334455667788

12345678#aabbccdd

发送一个扩展帧,标识ID为12345678,内容为0xaabbccdd

123#R7

发送一个远程帧,长度为7

在另一个终端中命令行输入cansend can0 123#1122334455667788

意义为:使用can0外设进行发送一个标准数据帧,标识符为123,内容为0x1122334455667788,在另一个终端中可以看到收到的的消息:

后续通过can总线的编程模型实现dbc载入,和收发,canoe测试的具体实现以及源代码文章:

TX2/Linux下can总线的接收与发送详解!(回环测试)相关推荐

  1. Linux下boost库的编译、安装详解

    1.下载源文件 去官网下载:http://www.boost.org/ 这里下载最新版本 wget https://dl.bintray.com/boostorg/release/1.64.0/sou ...

  2. Linux下的tar归档及解压缩功能详解

    Linux下的tar归档及解压缩功能详解 一.Linux下解压缩工具 二.gzip工具的使用方法 三.其他解压缩工具 一.Linux下解压缩工具 二.gzip工具的使用方法 三.其他解压缩工具 一.L ...

  3. linux为什么用tar压缩,linux下tar压缩和解压命令用法详解

    linux下tar压缩和解压命令用法详解 2017-03-25 14:06 分享人:老牛 将/usr/local/test目录下所有文件仅打包,不压缩到 /usr/local/auto_bak/目下 ...

  4. linux 子域dns,linux下搭建DNS子域及相关授权详解

    linux下搭建DNS子域及相关授权详解forward功能是本地无法解析的域名,转发给指定DNS服务器 forward only; 所有无法解析的域名,都转发给指定DNS服务器,必须有解析结果 for ...

  5. linux添加nginx,linux下安装Nginx1.16.0的教程详解

    因为最近在倒腾linux,想安装新版本的nginx,找了一圈教程没有找到对应的教程,在稍微倒腾了一会之后终于成功的安装了最新版. 服务器环境为centos,接下来是详细步骤: 安装必要依赖插件 ? 创 ...

  6. Linux环境下怎么使用pip,linux下pip的安装步骤及使用详解

    linux下pip的安装步骤及使用详解 pip类似RedHat里面的yum,安装软件非常方便.下面话不多说,来看看详细的介绍: pip下载:# wget "https://pypi.pyth ...

  7. linux nginx编译详解,Linux下nginx编译安装教程和编译参数详解

    这篇文章主要介绍了Linux下nginx编译安装教程和编译参数详解,需要的朋友可以参考下 一.必要软件准备 1.安装pcre 为了支持rewrite功能,我们需要安装pcre 复制代码 代码如下:# ...

  8. linux下搭建DNS子域及相关授权详解

    linux下搭建DNS子域及相关授权详解 forward功能是本地无法解析的域名,转发给指定DNS服务器 forward only; 所有无法解析的域名,都转发给指定DNS服务器,必须有解析结果 fo ...

  9. linux下mysql数据库基础及客户端命令详解

    linux下mysql数据库基础及客户端命令详解 1.mysql数据库存储引擎: SHOW ENGINES;   #查看mysql支持的存储引擎 常见有如下两个存储引擎: MyISAM:每表三个文件: ...

最新文章

  1. 为什么颜值越来越重要_看脸时代来了吗?为什么这个时代越来越注重颜值?
  2. php168齐博,php168整站系统(齐博CMS)下载
  3. c# 调matlab传字符串_C# Matlab 相互调用
  4. [译]BitTorrent协议规范
  5. BZOJ 1026 windy数 (数位DP)
  6. 软件测试人员棘手的问题,Èí¼þ²âÊԵļ¬ÊÖÎÊÌ⣺ÈçºÎ±ÜÃâÖظ´ÌύȱÏÝ...
  7. 排序算法之--归并排序(好玩的一个算法o。o)快速入门
  8. ArcGIS如何利用已有坐标转成点(arcgis生成、python生成)
  9. [设计模式] javascript 之 策略模式
  10. 科研|诺奖得主本庶佑: 不要相信论文里写的东西,《自然》《科学》这些杂志上的观点有九成是不正确的...
  11. Java中加载properties文件的6种方法
  12. 【跃迁之路】【479天】程序员高效学习方法论探索系列(实验阶段236-2018.05.30)...
  13. Vue.js学习笔记(一) - 起步
  14. c语言自治区二级考试题库,新疆自治区计算机二级c语言考试题库---副本.pdf
  15. springboot+旅游管理系统 毕业设计-附源码261117
  16. 细说PHP电子书pdf下载
  17. Python之路(一)
  18. 学习open62541 --- [15] 使用建模工具UaModeler
  19. 服务器系统漏洞rc4,服务器如何修复旧加密算法漏洞
  20. 自定义下拉刷新之仿AcFun下拉刷新

热门文章

  1. OJ刷题 |超大目标值(1亿)求质数个数问题
  2. 《北京DRGs系统的研究与应用》学习笔记
  3. Invalid argument during startup: Failed to open the .conf file: redis-window
  4. 哈工程计算机考研复试各科总分,考研复试总分是多少
  5. LeetCode 1528. 重新排列字符串
  6. SqlServer 汉字转换拼音首字母函数
  7. React中文文档之introducing JSX
  8. endnote没有加载项_word中手动添加endnote的加载项
  9. 计算机管理系统在哪里,图文详解win10设备管理器在哪打开
  10. 一个Metro风格的开源项目 MahApps.Metro