CAN报文解析

这篇具有很好参考价值的文章主要介绍了CAN报文解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

CAN报文定义

CAN报文是指发送单元向接受单元传送数据的帧。我们通常所说的CAN报文是指在CAN线(内部CAN、整车CAN、充电CAN)上利用ECU和CAN卡接收到的十六进制报文。

CAN编码格式(Intel、Motorola)

CAN总线数据传输规则

对于单个Byte,CAN总线在进行数据传输时,首先传输一个字节的高位(MSB),最后传输该字节的低位(LSB)。
一般情况下,主机厂在定义CAN总线信号的时候,都会明确定义字节的发送顺序,总共有两种顺序:1.首先发送byte0(LSB),然后byte1,byte2,…,最后byte7(MSB)。
2.首先发送byte7(MSB),然后byte6,byte5,…,最后byte0(LSB)。
其中前者发送顺序(先LSB,后MSB)是目前主机厂的主流。
下面以CAN总线报文的发送顺序为首先发送LSB,最后发送MSB的方式为前提,介绍Intel格式和Motorola格式这两种编码方式的不同。

Intel格式编码

当一个信号的数据长度不超过1 Byte,并且信号在一个字节内实现时,该信号的高位(S_msb)将被放在该字节的高位,信号的低位(S_lsb)将被放在该字节的低位。
当一个信号的数据长度超过1 Byte或者数据长度不超过1 Byte,但是采用跨字节的方式实现时,该信号的高位(S_msb)将被放在高字节(MSB)的高位,信号的低位(S_lsb)将被放在低字节(LSB)的低位,这样信号的起始位就是低字节的低位。

Motorola格式编码

当一个信号的数据长度不超过1 Byte并且信号在一个字节内实现时,信号的高位(S_msb)将被放在该字节的高位,信号的低位(S_lsb)将被放在该字节的低位,这样,信号的起始位就是该字节的低位。
当一个信号的数据长度超过1 Byte或者数据长度不超过一个字节但是采用跨字节方式实现时,该信号的高位(S_msb)将被放在低字节(MSB)的高位,信号的低位(S_lsb)将被放在高字节(LSB)的低位,这样信号的起始位就是高字节的低位。

注意

当一个信号的数据长度不超过1 Byte时,Intel和Motorola两种格式的编码结果完全一致,但是当数据长度超过1 Byte时,两者的编码结果出现了明显的不同。

CAN协议中CAN报文种类

报文传输过程中有:数据帧、远程帧、错误帧、过载帧和帧间隔。

CAN报文的组成

通常接收到的CAN报文由很多部分(图1)组成,解析报文时用到的主要是帧ID和数据两部分。
CAN报文解析

帧ID的组成

接收到的十六进制的ID实际上是由 29 位标识符转换而来,目前大多数的通信协议中都直接给出了相应的帧ID,不需要换算。如表 1 所示。CAN报文解析
表1中,P为优先级,有3位,可以有8个优先级( 0 ~ 7 );R为保留位,有 1位,固定为0 ;DP为数据页,有1位,固定为0;PF为报文的代码,有8 位;PS为报文的目标地址(也就是报文的接收方),有8位;SA为报文的源地址(也就是报文的接收方),有8位。

数据段的组成

数据段一般由1 ~ 8个字节(Byte)组成,来代表通信协议中相应的含义。每个字节有2个字符,分为高4位和低4位。有的数据需要相邻的2个字节组合才能表示,则需要分为高字节和低字节。

例如 ,通信协议中需要的报文(ID:0000060B ): 0000060B 57 4e 01 7d 00 6d 11 00 。
第 1 个字节57中的5为高 4 位,7为低 4 位。第 1 、 2字节表示横向距离,而且注明Byte 1 为低字节,Byte 2 为高字节,那么解析时就应该为: 4e57。

CAN报文的解析

根据需要收到CAN报文之后,需要根据具体的通信协议解析,然后分析解析出的数据是否正确。下面进行报文实例解析。数据类型定义如表 所示。
CAN报文解析
CAN报文解析

解析实例:
CAN报文解析
我们看到有8个signal。分别是ID、纵向距离、横向距离、纵向速度、横向速度、动态属性、RCS、class(在这里没用)。
拿纵向距离跟横向距离解释一下:
目标纵向距离:
CAN报文解析
CAN报文解析
这个signal有13个位组成,字节1为 0x4E*32的意思是向左移动5位,(2的5次幂是32),0xc4<<3是右移三位,跟上面的字节对齐,相加形成一个13位的信号。CAN报文解析
目标横向距离:
CAN报文解析

0xc4与上0x70是保留后三位。乘以256(2的8次幂是256)是左移8位,给下面的8为字节留地方(补0)。
CAN报文解析
CAN报文解析文章来源地址https://www.toymoban.com/news/detail-401194.html

到了这里,关于CAN报文解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【深入解析spring cloud gateway】07 自定义异常返回报文

    Servlet的HttpResponse对象,返回响应报文,一般是这么写的,通过输出流直接就可以将返回报文输出。 在filter中如果发生异常(例如请求参数不合法),抛出异常信息的时候,调用方收到的返回码和body都是Spring Cloud Gateway框架处理来处理的。这一节我们分析一下,gateway的异常返

    2024年02月10日
    浏览(34)
  • MCU 是指微控制器单元(Microcontroller Unit)

    MCU 是指微控制器单元(Microcontroller Unit)。 微控制器是一种集成了处理器核心、存储器、输入/输出接口和其他外围设备的集成电路。它通常用于嵌入式系统中,负责控制和执行特定任务,例如控制家电、汽车电子、工业自动化等。 MCU 的主要特点包括: 处理器核心:MCU 包含

    2024年01月18日
    浏览(47)
  • kafka实现消息接受和发送

    1、下载镜像 2、创建容器

    2024年02月12日
    浏览(36)
  • Springboot接受文件与发送文件

    ` 前后端涉及到文件的传输,都是以二进制流的形式进行交互的。 springboot内部封装了MultipartFile接口,用于接收和处理前端发送过来的文件。 代码如下(示例): 代码如下(示例): action属性指定了upload接口。由于get请求是将传输数据封装在URL里的,所以get请求无法传输二

    2024年02月06日
    浏览(41)
  • 车载通信——CAN报文信号排列方式(报文/信号结构)

    一、CAN报文信号排列方式 在定义CAN通信矩阵或制作dbc时,需确定报文的信号排列方式。字节的排列顺序有:Intel的排列顺序;Motorola的排列顺序。 注: Motorola和Intel格式,只在信号数据跨字节解析时有区别,单个字节数据没有区别 。 二、 编码格式 (1)Intel格式——小端 当

    2024年02月14日
    浏览(47)
  • STM32实验:串口接受和发送消息

    在STM32里,USART负责进行串口通信。STM32可以通过串口和其他设备进行传输并行数据,是全双工、异步时钟控制,设备之间进行的是点对点的数据传输。对应的STM32引脚分别是RX(接收端)和TX(发送端)。STM32的USART串口资源有USART1、USART2、USART3。 串口有以下几个几个重要的参

    2023年04月25日
    浏览(33)
  • CAN报文基础

    通信分类 根据数据传输方式可分为 串行通信 和 并行通信 ,根据接收端和发送端时钟频率的异同可以分为 同步通信 和 异步通信 ,根据通信双方的分工和信号传输方向可分为 单工通信 、 半双工通信 和 全双工通信 。 串行通信、并行通信 串行通信:数据的各位在 同一根数

    2024年02月04日
    浏览(38)
  • UDP网络编程的接受与发送信息

     

    2024年02月07日
    浏览(42)
  • Unity串口通信、接受和发送数据、C#

    串行接口(串口)通常指COM接口,是采用串行通信方式的扩展接口。串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。特别适用于远距离通信。 查看串口:右键 我的电脑-管理-设备管理器

    2023年04月13日
    浏览(55)
  • CAN总线报文格式———标准数据帧

    标准数据帧由帧起始、仲裁段、控制段、数据段、CRC段、ACK段、帧结束等组成。 CAN总线空闲时,总线上会输出持续的高电平“1”。当总线空闲时任何连接的单元都可以开始发送新的报文。 SOF是数据帧传输的起始位。发送方(sender)会发送一个显性电平作为SOF,由于总线空闲

    2024年01月22日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包