CAN数据帧格式解析与波形实例

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

CAN数据帧格式

CAN总线的数据帧有标准帧和扩展帧两种格式,区别在于标准帧具有 11-bit 的帧ID,扩展帧具有 29-bit 的帧ID;
CAN数据帧由以下七个段组成:
  1. 1、帧起始,又叫SOF(Start of Frame):帧起始位,表示一帧的开始;
  2. 2、仲裁段:决定该帧在总线传输上的优先级的数据段,根据仲裁段ID码长度的不同,分为标准帧(CAN 2.0A)和扩展帧(CAN 2.0B);
  3. 3、控制段:表示数据的字节数及保留位的段;
  4. 4、数据段:数据的内容,可发送0~8个字节的数据;
  5. 5、CRC段:检查帧的传输错误的段;
  6. 6、ACK段:表示确认正常接收的段;
  7. 7、帧结束,又叫EOF(End of Frame):表示数据帧结束的段;
具体这七个段在标准帧和扩展帧当中的分布如下图:
can波形,通信总线学习,单片机,stm32,嵌入式硬件
对上图做以下说明:
  1. 1、图中各个段中的数字代表这一段所占的 bit 数,例如标准格式帧的ID部分占 11-bit 对应图中的 11;
  2. 2、数据段是不定长的,因为一个CAN数据帧可以在数据段携带至多 8-byte 的数据,所以这部分的空间所占位的大小为 0~64-bit;
  3. 3、在标准格式帧中的r0和扩展格式帧中的 r1、r0 为保留位,一般为 0 ;
  4. 4、在标准格式帧中的IDE位表示标识符扩展位(Identifier Extension Bit)。它指示了标识符是标准标识符(11位)还是扩展标识符(29位)。当IDE位为0时,表示标识符为标准标识符,即11位;当IDE位为1时,表示标识符为扩展标识符,即29位。这个位的值会影响到CAN数据帧的标识符的长度和格式;
  5. 5、在扩展格式帧中的SRR位与第4点的IDE相同,可以理解为在扩展格式帧中的IDE位,名称不同,含义一致;

CAN总线信号说明

对CAN信号在CAN总线上的表现形式做简单介绍:
  • 完整的CAN电路是由CAN控制器和CAN收发器组成的,二者之间一般通过TTL电平的收发信号(CAN_RX、CAN_TX)连接,由CAN收发器将CAN_TX的TTL信号转换为CAN规范差分信号输出(CAN_H、CAN_L),同时接收差分线上的实际信号并转换为TTL信号输出到CAN_RX管脚上;
  • 当CAN_H与CAN_L存在差值时,被认为是一个显性电平,视作逻辑0;反之,被认为是一个隐性电平,视作逻辑1;
can波形,通信总线学习,单片机,stm32,嵌入式硬件

CAN波形实例

结合具体的逻辑分析仪波形和示波器实测波形来分析一帧标准格式帧,以及对比的问题帧数据;
使用 STM32F3Discovery开发板与CAN收发器 对接 FPGA仿真的CAN设备;
发送的是:标准数据帧---帧ID 0x1---帧长 2---数据 0x1 0x2
ST to FPGA——FPGA能够正常接收到ST设备发送来的帧数据
逻辑分析仪结果:
can波形,通信总线学习,单片机,stm32,嵌入式硬件
示波器实测波形:
can波形,通信总线学习,单片机,stm32,嵌入式硬件

根据逻辑分析仪的结果,我们按段将数据帧拆解:

0 || 
SOF,一个显性位代表帧起始;
0000[1]00000[1]01 ||
仲裁段的ID部分,这里的数据表明这个数据帧的ID为0x1
0 ||
仲裁段的RTR部分,RTR位表示远程传输请求位(Remote Transmission Request Bit)。它用于指示发送的帧是否为远程帧请求。当RTR位为1时,表示这是一个远程帧请求。远程帧请求是用于请求另一台CAN节点发送一个数据帧的帧类型。当RTR位为0时,表示这是一个数据帧;这里的数据为0,说明为一帧数据帧;
0 ||
控制段的IDE部分,这里的值为0,表示当前帧为标准格式帧;
0 ||
控制段的保留位
00[1]10 ||
控制段的DLC部分,表示后面数据段的数据长度,虽然有四位,但是最大只能是1000,也就是表示8个byte的数据长度;
0000[1]0001 ||
数据段的第一个数据,这里的值为0x1;
00000[1]010 ||

数据段的第二个数据,这里的值为0x2;
0100000[1]0100000[1]0 ||
CRC段,是一个15-bit的数据,根据的是标准的CRC-16/XMODEM算法
101 ||
ACK段,这三位分别代表:CRC界定符,ACK槽(ACK slot),ACK界定符;可以理解为CRC结束标志,接收机的ACK应答位和ACK结束标志,如果接收机确认收到这个帧,那么ACK槽这一位就由接收机返回显性信号;
在逻辑分析仪的结果当中将ACK槽这一位解析为了1,是因为两边CAN收发器的电平标准不同,逻分的电压阈值没法兼顾二者的高低电平点,参考示波器的实际波形(最后一个小的显性信号),这里应该是一个0;
1111111 ||
EOF,七个连续的隐性信号表示帧结束;
注意:当CAN总线信号连续输出5个相同的位,则需要插入一个反码位 ,如连续输出5个0则需要插入一个1,但这个1在读数时要去掉,如上述数据帧拆解当中的[1],就是补位,在实际数据解析当中要忽略;这是CAN总线协议的位填充机制,它的作用是:CAN网络同步需要足够多的上升沿;确保数据帧不会被当作错误帧(由6个连续的显性或隐性位组成)、确保正确识别帧结束标志(7个连续隐性位);
在逻分的数据解码结果当中也可以看到,补位的数据标识颜色与其他数据不同
FPGA to ST——ST不能接收到FPGA设备发送来的帧数据
逻辑分析仪结果:
can波形,通信总线学习,单片机,stm32,嵌入式硬件

示波器实测波形:

can波形,通信总线学习,单片机,stm32,嵌入式硬件

可以对比看到在CRC段出现了连续6个显性位0,没有正常补位1,这样就会被对端设备识别为错误帧,所以没有去接收;文章来源地址https://www.toymoban.com/news/detail-617522.html

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

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

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

相关文章

  • CAN总线详解及STM32的CAN通信编程指南

    对于CAN通信而言,本人之前也未接触了解过,由于实习的技术要求,因此也花费了一段时间对CAN通信进行学习,并且实现了基于STM32的CAN环回静默模式通信,因此写一遍比较详细的文章对该内容进行总结。本文的参考资料有STM32的中文参考手册、协议手册等。话不多说开始吧!

    2024年02月11日
    浏览(41)
  • STM32在进行CAN总线多节点通信时,同时发数据会一直收不到某设备数据的问题及解决

    最近在开发Canopen项目中,进行一主多从设备通信时,主站发送同步帧,两个从站往往只有帧ID优先级高的设备可以让主站接收到数据,而另一个从设备的数据往往接收不到。但当我关闭其中一个can从设备,另一个就可以和主站设备通信正常。经过排查发现,是由于Can的冲突解

    2024年02月03日
    浏览(55)
  • 关于485、CAN、单总线、SPI、I2C的特点、区别、协议、使用方法、通信方式。

    485(一般称作 RS485/EIA-485)。 是隶属于 OSI 模型物理层电气特性规定为 2 线半双工多点通信标准。 它的电气特性和 RS-232 大不一样,用缆线两端的电压差值来表示传递信号。 特性 1.    接口电平低,不易损坏芯片 RS485 的电气特性:逻辑“1”以两线间的电压差为+(2~ 6)V表示;

    2024年02月07日
    浏览(56)
  • STM32的HAL库开发系列 - CAN通信实例

    CAN通信是一种高效、可靠、灵活的数据传输方式,适用于各种应用场景,在工业自动化、汽车电子、医疗设备等领域有着广泛的应用。 但理解CAN通信的实际应用,也不能全部只看软件方面,还需要对硬件上也有了解。 在硬件上,CAN通信使用两条线路:一条是数据线(CAN_H),

    2024年02月12日
    浏览(46)
  • 485、CAN、单总线、SPI、I2C的概念,特点,协议,使用方法及通信方式,还有它们之间的区别

    1. 485:485(一般称作 RS485/EIA-485)是隶属于 OSI 模型物理层的电气特性规定为 2 线,半双工,多点通信的标准。它的电气特性和 RS-232 大不一样。用缆线两端的电压差值来表示传递信号。 2. CAN:CAN,全称为“Controller Area Network”,即控制器局域网,是一种多主方式的串行通讯总

    2024年02月10日
    浏览(50)
  • DBC文件解析及CAN通信矩阵

    一般的 DBC 文件中包含了如下的8种信息: 1、版本与新符号 2、波特率定义 3、网络节点的定义 4、报文帧的定义 5、信号的定义 6、注解部分 7、特征部分 8、数值表部分 通信矩阵的填写是根据DBC文件中 SG_ 所定义的信号规则来填充的。 填格子的方式分为Intel和Motorola两种: In

    2024年02月17日
    浏览(41)
  • STM32-CAN配置与库函数解析,实现环回模式通信

    CAN总线介绍:https://blog.csdn.net/weixin_46251230/article/details/129147612 STM32-CAN控制器介绍:https://blog.csdn.net/weixin_46251230/article/details/129150872 STM32CubeMx配置 因为bxCAN是挂载在APB1总线上的,所以设置APB1总线的时钟为36M 选择CAN接口进行配置 勾选主CAN模式,这里并不是主机的意思 配置位时

    2024年02月02日
    浏览(46)
  • stm32f407单片机上通过HAL库实现can总线数据的收发

      最近在使用can总线,由于这个以前接触的比较少,所以调试代码的时候直接是下载的正点原子的例程,在这个基础上修改调试的。现在将调试中遇到的问题,总结一下,避免以后踩坑。目前写了一个查询方式的,一个中断方式的。项目代码下载地址: https://download.csdn.n

    2024年02月09日
    浏览(50)
  • AUTOSAR从入门到精通-【应用篇】基于动态数据压缩算法的车载CAN总线安全协议设计

    目录 前言 国内外研究现状 CAN总线及加密与认证算法 2.1引言 2.2常用车载总线网络

    2024年02月13日
    浏览(39)
  • CAN总线学习笔记 | CAN基础知识介绍

    1.1 CAN协议简介 CAN 是控制器局域网络 (Controller Area Network) 的简称,它是由研发和生产汽车电子产品著称的德国 BOSCH 公司开发的,并最终成为国际标准(ISO11519以及ISO11898),是国际上应用最广泛的现场总线之一。差异点如下: 1.2 CAN物理层 CAN 通讯不是以时钟信号来进行同步的,它

    2023年04月09日
    浏览(47)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包