详解CAN总线:CAN总线报文格式—数据帧

CAN总线上传输的信息称为报文,当总线空闲时任何连接的单元都可以开始发送新的报文。

CAN通信是通过以下5种类型的帧进行的:

  • 数据帧
  • 遥控帧
  • 错误帧
  • 过载帧
  • 帧间隔

另外,数据帧和遥控帧有标准格式和扩展格式两种格式。标准格式有 11 个位的标识符(Identifier: 以下简称 ID), 扩展格式有 29 个位的 ID。

各种帧的用途如下表所示:

​近期打算写5篇文章,分别详细介绍这5种类型的CAN总线报文格式,本篇博文将详细讲解CAN数据帧格式,创作不易,请各位朋友多多点赞、收藏、关注支持~

关注公众号:美男子玩编程,优先推送最新技术博文~

数据帧由7个段构成,图解说明如下所示:

  • 帧起始:表示数据帧开始的段;
  • 仲裁段:表示该帧优先级的段,根据仲裁段ID码长度的不同,分为标准帧(CAN 2.0A)和扩展帧(CAN 2.0B);
  • 控制段:表示数据的字节数及保留位的段;
  • 数据段:数据的内容,可发送0~8个字节的数据;
  • CRC段:检查帧的传输错误的段;
  • ACK段:表示确认正常接收的段;
  • 帧结束:表示数据帧结束的段。

1、帧起始

帧起始由1个显性位组成。总线空闲时,发送节点发送帧起始,其他接收节点同步于该帧起始位。

​总线上的电平有显性电平和隐性电平两种。

总线上执行逻辑上的线“与”时,显性电平的逻辑值为“0”,隐性电平为“1”。

“显性”具有“优先”的意味,只要有一个单元输出显性电平,总线上即为显性电平。并且,“隐性”具有“包容”的意味,只有所有的单元都输出隐性电平,总线上才为隐性电平。(显性电平比隐性电平更强。)

2、仲裁段

仲裁段用于写明需要发送到目的CAN节点的地址、确定发送的帧类型(当前发送的是数据帧还是遥控帧),并确定发送的帧格式是标准帧还是扩展帧。

仲裁段在标准格式帧和扩展格式帧中有所不同。标准格式帧的仲裁段由11位标识符和远程发送请求位RTR组成,扩展格式帧的仲裁场由29位标识符和远程发送请求位RTR组成。

2.1、标准数据帧

标准数据帧基于早期的CAN规格(1.0和2.0A版),使用了11位的识别域。

CAN标准帧帧信息是11字节,包括帧描述符和帧数据两部分。如下表所列:

​前3字节为帧描述部分。字节1为帧信息,第7位(FF)表示帧格式,在标准帧中FF=0,第6位(RTR)表示帧的类型,RTR=0表示为数据帧,RTR=1表示为远程帧。DLC表示在数据帧时实际的数据长度。

标准数据帧的 ID 有 11 个位。从 ID10 到 ID0 依次发送。禁止高 7 位都为隐性(禁止设定:ID=1111111XXXX)。

字节2~3为报文识别码,其高11位有效。

字节4~11为数据帧的实际数据,远程帧时无效。

2.2、扩展数据帧

CAN扩展帧帧信息是13字节,包括帧描述符和帧数据两部分,如下表所示:

​前5字节为帧描述部分。字节1为帧信息,第7位(FF)表示帧格式,在扩展帧中FF=1,第6位(RTR)表示帧的类型,RTR=0表示为数据帧,RTR=1表示为远程帧。DLC表示在数据帧时实际的数据长度。

扩展格式的 ID 有 29 个位。基本 ID 从 ID28 到 ID18,扩展 ID 由 ID17 到 ID0 表示。基本 ID 和 标准格式的 ID 相同。禁止高 7 位都为隐性(禁止设定:基本 ID=1111111XXXX)。

字节2~5为报文识别码,其高28位有效。

字节6~13为数据帧的实际数据,远程帧时无效。

3、控制段

控制段由6个位组成,包括数据长度代码和两个将来作为扩展用的保留位,标准格式和扩展格式的构成有所不同。

数据长度代码指示了数据段中的字节数量。数据长度代码为4个位,在控制段里被发送,数据帧长度允许的字节数为0、1、2、3、4、5、6、7、8,其他数值为非法的。

​保留位(r0、r1)必须全部以显性电平发送。但接收方可以接收显性、隐性及其任意组合的电平。

数据长度码(DLC)与数据的字节数的对应关系如下表所示:

​数据的字节数必须为 0~8 字节,但接收方对 DLC = 9~15 的情况并不视为错误。

4、数据段

数据段由数据帧中的发送数据组成,它可以为0~8字节,每字节包含了8位,首先发送最高有效位MSB,依次发送至最低有效位LSB。

​5、CRC段

CRC段是检查帧传输错误的帧,包括:15 个位的 CRC序列(CRC SEQUENCE)和1 个位的CRC界定符(CRC DELIMITER)构成。

CRC序列是根据多项式生成的 CRC 值,CRC 的计算范围包括:帧起始、仲裁段、控制段、数据 段。 接收方以同样的算法计算 CRC 值并进行比较,不一致时会通报错误。

6、ACK段

ACK段用来确认是否正常接收。由 ACK 槽(ACK SLOT)和 ACK 界定符(ACK DELIMITER)2 个位构成。

发送单元在 ACK 段发送 2 个位的隐性位。当接收器正确地接收到有效的报文时,接收器就会在应答间隙(ACK SLOT)期间(发送ACK 信号)向发送器发送一个“显性”的位以示应答,通知发送单元正常接收结束,这称作“发送 ACK”或者“返回 ACK”。

发送 ACK/返回 ACK是在既不处于总线关闭态也不处于休眠态的所有接收单元中,接收到正常消息的单元 (发送单元不发送 ACK)。所谓正常消息是指不含填充错误、格式错误、CRC 错误的消息。

7、帧结束

帧结束是由每一个数据帧和远程帧的标志序列界定的,这个标志序列由7个“隐性”位组成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 内容概要 《计算机网络》档包含了70个关于计算机网络基础知识的单项选择题,内容涉及互联网起源、网络协议、IP地址、DNS服务、电子邮件、网络拓扑结构、网络设备、网络连接方式、网络速度等多个方面。每个问题后面都提供了正确答案,适合作为学习和测试材料。 ### 适用人群 本档适合以下人群: - 计算机科学与技术、信息技术、网络工程等专业的在校学生。 - 准备计算机网络相关考试或认证的专业人士。 - 对计算机网络基础知识感兴趣的自学者。 - 信息技术教师,作为教学资源或测试材料。 ### 使用场景及目标 1. **学习测试**:作为学生学习计算机网络理论知识后的测试工具,检验学习效果。 2. **教学辅助**:教师可以用于课堂教学,作为课后作业或课堂小测验,增强学生的理解和记忆。 3. **自学检验**:个人自学者可以通过这些题目检验自己对计算机网络基础知识的掌握程度。 4. **职业发展**:职场人士可以通过学习和测试,提升自己在计算机网络领域的专业能力。 5. **竞赛准备**:适合准备计算机网络相关竞赛的学生,作为强化训练材料。 档的目标是通过这些精心设计的题目,帮助读者全面了解和掌握计算机网络的基本概念、原理和应用,提高解决实际问题的能力。通过学习和练习,读者将能够更加深入地理解计算机网络的工作原理,为进一步的专业学习或职业发展打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_44079197

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值