https://blog.csdn.net/weixin_40367126/article/details/106189254
回环指令:
ip link set down can0
ip link set can0 type can loopback on
ip link set up can0
candump can0 -L &
cansend can0 123#1122334455667788

ip -details link show can0

1.如何发送或接收 CAN 数据

目的 本文介绍如何使用 can-utils [1 ]包在 SocketCAN 接口上发送/接收数据。

can-utils 包含一些用于 Linux®SocketCAN 子系统的用户空间实用程序。它已集成在STM32微处理器系列的 SDK 中。在此示例中,仅使用到 cansend 和 candump,但软件包中还提供了许多其他的工具。
准备条件
至少需要两个设备才能在 CAN 网络上进行通信。要实现这种配置,请在同一 CAN 总线上连接两个设备。然后,从一个节点发送数据,并在另一节点上接收数据。
在开始通信之前,必须在每块板上配置并启用 SocketCAN 接口。请参阅如何设置 SocketCAN 接口。
在CAN总线上发送数据

要发送单个帧,请使用 cansend 实用程序:

Board $> cansend can0 123#1122334455667788

1

获取 cansend 实用程序中的使用帮助信息:

Board $> cansend -h
Usage: cansend <can_frame>

1
2

如果出现帧错误,请尝试下面的操作:

<can_id>#{R|data} for CAN 2.0 frames
<can_id>##{data} for CAN FD frames

<can_id> can have 3 (SFF) or 8 (EFF) hex chars
{data} has 0…8 (0…64 CAN FD) ASCII hex-values (optionally separated by ‘.’)
a single ASCII Hex value (0 … F) which defines canfd_frame.flags

e.g. 5A1#11.2233.44556677.88/123#DEADBEEF/5AA#/123##1/213##311
1F334455#1122334455667788/123#R for remote transmission request.

在CAN总线上接收数据

要实时显示总线上收到的消息列表,请使用 candump 实用程序:

Board $> candump can0
can0 123 [8] 11 22 33 44 55 66 77 88

1
2

在 candump 实用程序上获取帮助信息:

Board $> candump -h

1

Usage: candump [options] +
(use CTRL-C to terminate candump)

Options: -t (timestamp: (a)bsolute/(d)elta/(z)ero/(A)bsolute w date)
-c (increment color mode level)
-i (binary output - may exceed 80 chars/line)
-a (enable additional ASCII output)
-S (swap byte order in printed CAN data[] - marked with ‘`’ )
-s (silent mode - 0: off (default) 1: animation 2: silent)
-b (bridge mode - send received frames to )
-B (bridge mode - like ‘-b’ with disabled loopback)
-u (delay bridge forwarding by microseconds)
-l (log CAN-frames into file. Sets ‘-s 2’ by default)
-L (use log file format on stdout)
-n (terminate after receiption of CAN frames)
-r (set socket receive buffer to )
-D (Don’t exit if a “detected” can device goes down.
-d (monitor dropped CAN frames)
-e (dump CAN error frames in human-readable format)
-x (print extra message infos, rx/tx brs esi)
-T (terminate after without any reception)

Up to 16 CAN interfaces with optional filter sets can be specified on the commandline in the form: [,filter]*

Comma separated filters can be specified for each given CAN interface:
<can_id>:<can_mask> (matches when <received_can_id> & mask == can_id & mask)
<can_id>~<can_mask> (matches when <received_can_id> & mask != can_id & mask)
#<error_mask> (set error frame filter, see include/linux/can/error.h)
[j|J] (join the given CAN filters - logical AND semantic)

CAN IDs, masks and data content are given and expected in hexadecimal values.
When can_id and can_mask are both 8 digits, they are assumed to be 29 bit EFF.
Without any given filter all data frames are received (‘0:0’ default filter).

Use interface name ‘any’ to receive from all CAN interfaces.

Examples:
candump -c -c -ta can0,123:7FF,400:700,#000000FF can2,400~7F0 can3 can8
candump -l any,0~0,#FFFFFFFF (log only error frames but no(!) data frames)
candump -l any,0:0,#FFFFFFFF (log error frames and also all data frames)
candump vcan2,92345678:DFFFFFFF (match only for extended CAN ID 12345678)
candump vcan2,123:7FF (matches CAN ID 123 - including EFF and RTR frames)
candump vcan2,123:C00007FF (matches CAN ID 123 - only SFF and non-RTR frames)

硬件自检

在内部环回测试模式下,FDCAN将发送的消息作为接收消息进行处理。此选项用于硬件自检(无需在 CAN 总线上连接外部 CAN 节点)。
要在回环模式下配置和启用 SocketCAN,请执行以下操作:

Board $> ip link set can0 up type can bitrate 1000000 dbitrate 2000000 fd on loopback on
[ 78.700698] m_can 4400e000.can can0: bitrate error 0.3%
[ 78.704568] m_can 4400e000.can can0: bitrate error 1.6%
[ 78.710140] IPv6: ADDRCONF(NETDEV_CHANGE): can0: link becomes ready

1
2
3
4

要在同一接口上发送和接收消息,请按照下列步骤操作:

Board $> candump can0 -L &
[1] 475
Board $> cansend can0 300#AC.AB.AD.AE.75.49.AD.D1
(1539944874.949723) can0 300#ACABADAE7549ADD1
(1539944874.949683) can0 300#ACABADAE7549ADD1

1
2
3
4
5

2.Socket CAN指令详解

1、#ip link set canX down //关闭can设备;
2、#ip link set canX up //开启can设备;
3、#ip -details link show canX //显示can设备详细信息;
4、#candump canX //接收can总线发来的数据;
5、#ifconfig canX down //关闭can设备,以便配置;
6、#ip link set canX up type can bitrate 250000 //设置can波特率
7、#conconfig canX bitrate + 波特率;
8、#canconfig canX start //启动can设备;
9、#canconfig canX ctrlmode loopback on //回环测试;
10、#canconfig canX restart // 重启can设备;
11、#canconfig canX stop //停止can设备;
12、#canecho canX //查看can设备总线状态;
13、#cansend canX --identifier=ID+数据 //发送数据;
14、#candump canX --filter=ID:mask//使用滤波器接收ID匹配的数据

参考http://wiki.100ask.org/index.php?title=How_to_send_or_receive_CAN_data&oldid=6022
————————————————
版权声明:本文为CSDN博主「一个勤奋爱写笔记的好菇凉」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_40367126/article/details/106189254

CAN发送和接收数据(回环测试,ok)相关推荐

  1. CC2652RB硬件SPI驱动W5100S网卡进行回环测试

    1. W5100S 1.1 简介 W5100S 是一款多功能的单芯片网络接口芯片,内部集成全硬件的TCP/IP协议栈,以太网MAC和 10Base-T/100Base-TX以太网控制器.主要应用于高集 ...

  2. 串口调试助手C++源代码 可接收发送串口数据 带接收Echo回环到发送的功能

    串口调试助手C++源代码 可接收发送串口数据 带接收Echo回环到发送的功能 使用说明介绍 1.功能介绍: 简单地实现了串口通信的功能,主要有发送窗口和接收窗口组成.该代码注释详细,并带有说明文档,适 ...

  3. 基于 FPGA 的以太网回环测试verilog实现UDP协议

    基于 FPGA 的以太网回环测试verilog实现UDP协议 verilog实现UDP协议: 该 设计使用 UDP 协议,首先通过串口助手接收 PC 发送的 UDP 数据包,然后提取其中的数据部分并使 ...

  4. ESP3 + ESP-IDF | 串口1 - 简单的串口回环测试

    文章目录 一.前言 二.VSCODE + ESP-IDF 2.1.快速创建项目 2.2.选择串口通道,ESP芯片型号 三.代码 3.1.头文件 3.2.全局变量 3.3.app_main( )函数 3 ...

  5. 【以太网通信】PHY 芯片回环测试

    PHY 芯片通常带有回环(Loopback)功能,用于 PHY 通信链路的测试.本文主要讨论三种常用 PHY 芯片的回环功能,并使用 Broadcom 的 B50612D 芯片进行 PHY 回环测试. ...

  6. linux 串口 loopback,友善NanoPC T2 4418开发板Linux下串口回环测试 -申嵌

    注意事项:friendlycore系统下 UART3 对应的设备文件名是 /dev/ttyAMA3 实验目的:实现串口回环测试,即:自己给自己发数据,然后自己接收到自己发送的内容. 实验内容: 1. ...

  7. 基于EP4CE10F17C8的以太网数据回环(UDP)

    目录 一.理论知识(部分来自野火.正点原子资料) (一)TCP/IP五层模型 (二)以太网(自底向上描述) 1.物理层 2.MAC子层 3.网络层(IP.ICMP.ARP) 4.传输层(TCP.UDP ...

  8. STM32CubeMX与HAL库学习--简单的CAN回环测试

    STM32CubeMX与HAL库学习--简单的CAN回环测试 前言 STM32CubeMX生成初始化代码 在MDK-ARM里编辑代码 其他 后续 前言 本人小白,最近看了CAN协议与STM32的bxC ...

  9. MYIR-ZYNQ7000系列-zturn教程(23):DMA回环测试

    开发板环境:vivado 2017.4 ,开发板型号xc7z020clg400-1,这个工程主要使用DMA进行回环测试 先将DDR内写入数据,然后DMA通过MM2S将数据从DDR读出并写入到fifo中 ...

最新文章

  1. CentOS常见配置
  2. 亿图图示线条不要箭头
  3. Task中的异常处理
  4. 朱林北京大学计算机学院,北大、清华状元谈英语学习经验-20210411145045.docx-原创力文档...
  5. jQuery编写插件
  6. 【JavaScript】Canvas绘制美丽的网螺旋旋转图形
  7. 用python效率办公_如何用Python提高办公(Excel)效率?
  8. 中国联通最快明年实现2G全面退网;苹果发布iOS 14.3后火速撤回:原因未知;Angular 11.0.0 正式发布|极客头条
  9. 计算机软件国民经济行业代码,国民经济行业类别及代码.DOC
  10. 生存分析之Cox模型简述与参数求解
  11. jQuery 之过滤选择器
  12. golang并发模式work
  13. KVM虚拟化平台搭建、工作模式与原理
  14. absl教程(五):Synchronization library
  15. 微信jssdk图片上传给服务器,使用微信JSSDK进行图片选择和上传
  16. 转 新入职程序员心得
  17. 只做macd二次金叉_macd二次金叉的定义
  18. 截获QQ数据包 截获QQ聊天记录
  19. 雕刻机主轴正确的选型指引
  20. 鸿蒙系统VR伙伴,鸿蒙2.0系统让开发者看到了未来曙光 华为让AR/VR跨越时空,迈进现实...

热门文章

  1. QT INSTALLS使用
  2. 电路板级的EMC设计 (1)概述
  3. 为什么RGB 与 CMYK的差异,会有所不同?
  4. android图片点击全屏显示,Android浏览图片,点击放大至全屏效果
  5. windows命令字典(收藏)
  6. 阿尔法蛋机器人tf卡_科大讯飞阿尔法蛋tys1智能机器人常见问题解答
  7. 企业运维之七层负载均衡--Haproxy
  8. 视频播放性能优化-视频MOOV前置
  9. 微信h5图表组件制作教程
  10. WSDL——Web Service Description Language