• CAN报文:数据帧详解


    CAN报文

    CAN使用的是两条差分信号线,只能表达一个信号,简洁的物理层决定了CAN必然要配上一套复杂的协议。

    CAN协议对数据、操作命令(如读/写)以及同步信号进行打包,打包后的这些内容称为报文

    打包的过程就是在原始数据的基础上再加上帧起始段、仲裁段、控制段、CRC校验、应答和帧结束,把这些内容按特定的格式打包好,就可以用一个通道表达各种信号了,当数据包被发送时,只要接收方按约定格式去解读,就能还原出原始数据

    为了更有效地控制通讯,CAN一共规定了5种类型的帧

    CAN帧类型

    帧类型帧用途
    数据帧发送单元向接收单元传送数据的帧
    遥控帧接收单元向发送单元请求数据的帧
    错误帧检测出错误时向其它单元通知错误的帧
    过载帧接收单元通知其尚未就绪的帧
    间隔帧将数据帧及遥控帧与前面的帧分离开来的帧

    数据帧和遥控帧有标准格式和扩展格式两种格式,标准格式有 11 个位的标识符ID,扩展格式有 29 个位的 ID

    数据帧

    数据帧由帧起始、仲裁段、控制段、数据段、CRC、ACK、帧结束共7个段构成

    在这里插入图片描述

    帧起始(Start Of Frame)

    表示帧开始的段,1个位的显性位
    标准格式与扩展格式相同

    仲裁段

    表示数据帧优先级的段
    标准格式与扩展格式的构成有所不同,均禁止高7位为隐性(ID=1111111XXXX…)

    仲裁段的内容主要为本数据帧的ID,标准格式的ID 有11 个位,扩展格式的 ID 有29 个位,在CAN协议中,ID决定着数据帧发送的优先级,也决定着其它节点是否会接收这个数据帧。CAN总线不对挂载在它之上的节点分配优先级和地址,对总线的占有权是由信息的ID决定的,即对于重要的信息,优先级高的ID,能够优先发送出去

    • RTR位(Remote Transmission Request Bit)

      译作远程传输请求位,它是用于区分数据帧和遥控帧的,当它为显性电平时表示数据帧,隐性电平时表示遥控帧。

    • IDE位(Identifier Extension Bit)

      译作标识符扩展位,它是用于区分标准格式与扩展格式,当它为显性电平时表示标准格式,隐性电平时表示扩展格式

    • SRR位(Substitute Remote Request Bit)

      只存在于扩展格式,它用于替代标准格式中的RTR位,由于扩展帧中的SRR位固定为隐性位,RTR在数据帧中为显性位,所以两个ID相同的标准格式与扩展格式,标准格式的优先级较高

    控制段

    控制段由 6 个位构成,表示数据段的字节数
    标准格式和扩展格式的构成有所不同

    保留位(r0、r1)必须全部以显性电平发送。
    数据长度码(DLC),数据的字节数必须为 0~8 字节

    数据段

    标准格式和扩展格式相同
    数据段可包含 0~8 个字节的数据,从MSB(最高位)开始输出

    CRC段

    标准格式与扩展格式相同
    CRC 段是检查帧传输错误的段,由15 个位的CRC值和1 个位的CRC界定符(隐性分隔位)构成

    CRC是根据多项式生成的CRC值,CRC的计算范围包括帧起始、仲裁段、控制段、数据段
    接收方以同样的方式计算CRC值并进行比较,不一致时利用错误帧请求重新发送

    ACK段

    标准格式与扩展格式相同
    ACK段包括ACK槽位、ACK界定符位2个位

    发送单元的ACK 段:发送单元在 ACK 段发送2 个位的隐性位
    接收单元的ACK 段:接收到正确消息的单元在ACK 槽发送显性位,通知发送单元正常接收结束,这称作“发送ACK”或者“返回ACK”

    帧结束(End Of Frame)

    标准格式与扩展格式相同
    帧结束是表示该帧结束的段,由发送节点发送 7 个位的隐性位构成

  • 相关阅读:
    【信息安全原理】——IP及路由安全(学习笔记)
    服务器管理
    分库分表---理论
    你应该知道的 Python 自动化脚本
    stm32单片机的智能交通灯设计
    【string题解 C++】翻转字符串II:区间部分翻转 | 验证回文串
    【Vue】通过事件发布订阅实现跨组件传值
    网页JS自动化脚本(三)查找定位页面元素的多种方法
    Java之线程池:线程池常用类、接口;线程池执行流程,配置参数,分类
    在Ubuntu上安装并运行DeepProbLog的简单过程
  • 原文地址:https://blog.csdn.net/u010650845/article/details/125990942