0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CAN总线的帧类型及结构

FPGA之家 来源:FPGA之家 作者:FPGA之家 2022-11-03 09:05 次阅读

本文主要介绍CAN总线的帧类型及结构。

CAN总线定义五种帧类型,分别为数据帧、远程帧、错误帧、过载帧和帧间隔。数据帧就是总线上传输用户数据的帧,其最高有效载荷是8字节(CAN FD为64字节),除了有效载荷外,数据帧还包括必要的帧头帧位部分以执行CAN标准通信,比如消息标识符(Identifier)、数据长度代码、校验信息等。远程帧是用来向总线上其它节点请求数据的帧,它的帧结构与数据帧相似,只不过没有有效载荷部分;错误帧是表示通信出错的帧;帧间隔是用来隔离数据帧或者遥控帧的。

数据帧和远程帧有标准格式和扩展格式两种格式。标准格式有11位的标识符,扩展格式有29位标识符。

帧类型 帧用途 备注
数据帧 用于发送单元向接收单元传送数据的帧 分为标准格式和扩展格式,标准格式有11位标识符,扩展格式有29位标识符
遥控帧 用于接收单元向具有相同ID的发送单元请求数据的帧
错误帧 用于当检测出错误时向其它单元通知错误的帧
过载帧 用于接收单元通知其尚未做好接收准备的帧
帧间隔 用于将数据帧及遥控帧与前面的帧分离开来的帧 过载帧和错误帧前不能插入帧间隔

数据帧

数据帧的帧结构如下图所示:

7d03c54e-5b12-11ed-a3b6-dac502259ad0.png

7d19af9e-5b12-11ed-a3b6-dac502259ad0.jpg

各个字段定义及长度分别为:

SOF:表示数据帧开始;(1bit)

Identifier:标准格式11 bit,扩展格式29 bit包括Base Identifier(11bit)和Extended Identifier(18bit),该区段标识数据帧的优先级,数值越小,优先级越高;

RTR:远程传输请求位,0时表示为数据帧,1表示为远程帧,也就是说RTR=1时,消息帧的Data Field为空;(1bit)

IDE:标识符扩展位,0时表示为标准格式,1表示为扩展格式;(1bit)

DLC:数据长度代码,0~8表示数据长度为0~8 Byte;(4bit)

Data Field:数据域;(0~8Byte)

CRC Sequence:校验域,校验算法G(x) = x15 + x14 + x10 + x8 + x7 + x4 + x3 + 1;(15bit)

DEL:校验域和应答域的隐性界定符;(1bit)

ACK:应答,确认数据是否正常接收,所谓正常接收是指不含填充错误、格式错误、 CRC 错误。发送节点将此位为1,接收节点正常接收数据后将此位置为0;(1bit)

SRR:替代远程请求位,在扩展格式中占位用,必须为1;(1bit)

EOF:连续7个隐性位(1)表示帧结束;(7bit)

ITM:帧间隔,Intermission (ITM),又称Interframe Space (IFS),连续3个隐性位,但它不属于数据帧。帧间空间是用于将数据帧和远程帧与前面的帧分离开来的帧。数据帧和远程帧可通过插入帧间空间将本帧与前面的任何帧(数据帧、遥控帧、错误帧、过载帧)分开。过载帧和错误帧前不能插入帧间空间。

远程帧

一般情况,数据是由发送单元主动向总线上发送的,但也存在接收单元主动向发送单元请求数据的情况。远程帧的作用就在于此,它是接收单元向发送单元请求发送数据的帧。远程帧与数据帧的帧结构类似,如下图所示。

7d331d58-5b12-11ed-a3b6-dac502259ad0.jpg

远程帧与数据帧的帧结构区别如下表所示:

帧起始 仲裁段 控制段 数据段 CRC段 ACK段 帧结束
意义 表示帧开始 表示数据优先级 表示数据段的字节数
数据帧 1位显性位 11位或29位(RTR位为显性) 6位 0~8个字节 15位CRC值和1位CRC界定符 1位ACK槽和1位ACK界定符 7位隐性位
遥控帧 1位显性位 可请求具有相同ID的数据帧(RTR位为隐性) 6位

当总线上具有相同标识符的数据帧和远程帧同时发送时,由于数据帧的 RTR 位是显性的,数据帧将在仲裁中赢得总线控制权。

错误帧

用于在接收和发送消息时检测出错误时,通知错误的帧。错误帧由错误标志和错误界定符构成。错误帧的帧结构如下图所示。

7d455248-5b12-11ed-a3b6-dac502259ad0.png

错误标志:6-12 个显性/隐性重叠位

主动错误标志(6个显性位):处于主动错误状态的单元检测出错误时输出的错误标志

被动错误标志(6个隐性位):处于被动错误状态的单元检测出错误时输出的错误标志

错误界定符:8 个隐性位

过载帧

过载帧是用于接收单元通知发送单元它尚未完成接收准备的帧。在两种情况下,节点会发送过载帧:

接收单元条件的制约,要求发送节点延缓下一个数据帧或远程帧的传输;
帧间空间(Intermission)的3 bit内检测到显性位

每个节点最多连续发送两条过载帧。过载帧由过载标志和过载界定符(8 个隐性位)构成。过载帧的结构如下图所示。

7d5eba3a-5b12-11ed-a3b6-dac502259ad0.png

帧间隔

帧间隔是用来隔离数据帧(或者遥控帧)的,也就是说,数据帧(或者遥控帧)通过插入帧间隔可以将本帧与先行帧(数据帧、遥控帧、错误帧、过载帧)分隔开来。但是过载帧和错误帧的前面不能插入帧间隔。

7d7b9a2e-5b12-11ed-a3b6-dac502259ad0.png

帧间隔有两种不同的形式:

主动错误状态的帧间隔

被动错误状态的帧间隔

间隔段:连续三个隐性位;间隔段期间,所有节点不允许发送数据帧或遥控帧,只要在这期间监听到显性位,接收节点就会发送过载帧。

空闲段:连续隐性位,个数不一定,0个或者多个都可以。总线空闲的时间是任意长的,只要总线空闲,节点就可以竞争总线。

暂停段:又叫做延迟传送段,只有处于被动错误状态的节点在发送帧间隔的时候,才会在帧间隔中插入8个连续隐性位的暂停段。

以上就是针对CAN总线的帧结构的介绍。

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • CAN总线
    +关注

    关注

    145

    文章

    1812

    浏览量

    129600
  • 数据
    +关注

    关注

    8

    文章

    6513

    浏览量

    87609
  • 通信
    +关注

    关注

    18

    文章

    5706

    浏览量

    134407

原文标题:硬件接口协议之“CAN总线报文”

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    CAN总线上可以同时存在标准和扩展吗?

    今天做实验,can总线上同时存在标准和扩展,从上位机上观察到这样的现象:标准可以正常接收,但是扩展
    发表于 02-05 07:41

    CAN数据--结构,你都了解吗?#汽车CAN总线 

    CAN总线数据
    北汇信息POLELINK
    发布于 :2023年10月11日 18:05:00

    CAN总线协议及概念

    )子层完成数据打包/解包、编码、媒体访问管理、错误检测、错误信令、应答、串并转换等功能。这些功能都是围绕信息传送过程展开的。3 CAN总线的报文传输和
    发表于 04-18 16:36

    CAN总线

    层完成数据打包/解包、编码、媒体访问管理、错误检测、错误信令、应答、串并转换等功能。这些功能都是围绕信息传送过程展开的。3 CAN总线的报文传输和
    发表于 04-27 15:16

    CAN错误定义

    上报CAN总线错误,为0,驱动不会上报错误格式CAN
    发表于 01-03 15:57

    关于CAN总线

    CAN总线格式中,为什么数据场只能传输8个字节的数据呢?
    发表于 07-20 16:28

    LIN总线的应用/特点/信号/结构

      汽车电子总线设计,一般都采用LIN总线CAN总线这两种形式。  LIN总线的应用  LIN总线
    发表于 02-20 16:26

    CAN总线通信发送相关库函数发送数据结构

    STM32:CAN总线通信初始化配置一、CAN总线通信 发送1. CAN总线通信发送配置流程写入
    发表于 08-19 06:31

    CAN协议规定了好几种类型

    通过对 CANBUS协议的理解,我们知道:CAN总线上的节点接收或发送数据都是以为单位的!!!CAN协议规定了好几种
    发表于 08-19 08:50

    CAN总线的标准和扩展

    CAN总线的标准和扩展主要决定ID的长度,标准
    发表于 08-20 06:43

    Can总线何时是空闲的

    录1.Can总线电平介绍2.Can总线何时是空闲的3.Can总线的标准
    发表于 08-23 08:44

    can总线结构

    CAN总线用户接口简单,编程方便。网络拓扑结构采用总线结构。这种网络结构简单、成本低,并且采用
    的头像 发表于 11-28 17:16 1.8w次阅读
    <b class='flag-5'>can</b><b class='flag-5'>总线结构</b>

    CAN总线错误的类型介绍

    在本系列文章中,我们将为您详细介绍CAN总线错误的相关知识,包括CAN总线错误的基础概念、CAN总线
    的头像 发表于 06-13 16:08 7392次阅读

    虹科干货 | 带你全面认识“CAN总线错误”(二)——CAN错误类型

    AsimpleintrotoCANerrorsCAN总线错误介绍在本系列文章中,我们将为您详细介绍CAN总线错误的相关知识,包括CAN总线
    的头像 发表于 06-09 09:46 1372次阅读
    虹科干货 | 带你全面认识“<b class='flag-5'>CAN</b><b class='flag-5'>总线</b>错误”(二)——<b class='flag-5'>CAN</b>错误<b class='flag-5'>类型</b>

    虹科干货 | 带你全面认识“CAN总线错误”(二)——CAN错误类型

    AsimpleintrotoCANerrorsCAN总线错误介绍在本系列文章中,我们将为您详细介绍CAN总线错误的相关知识,包括CAN总线
    的头像 发表于 06-02 09:41 870次阅读
    虹科干货 | 带你全面认识“<b class='flag-5'>CAN</b><b class='flag-5'>总线</b>错误”(二)——<b class='flag-5'>CAN</b>错误<b class='flag-5'>类型</b>