目录
三、协议帧结构
CAN协议帧共有五种类型:数据帧,遥控帧(远程帧),错误帧,过载帧,帧间隔。
数据帧和遥控帧有标准格式和扩展格式两种格式。标准格式有 11 个位的标识符(Identifier: 以下称 ID), 扩展格式有 29 个位的 ID。
1.数据帧
用于发送单元向接收单元传送数据的帧,由七个部分组成分别是帧起始,仲裁段,控制段,数据段,CRC 段,ACK 段,帧结束,每个部分的作用和组成如图所示,两张图片结合学习效果更好,更加的通俗易懂。
2.遥控帧
用于接收单元向具有相同 ID 的发送单元请求数据的帧,由六个部分组成与数据帧相比少了数据段,分别是帧起始,仲裁段,控制段,CRC段,ACK段,帧结束。每一部分的作用和组成如图所示。
大家学习完后发现数据帧和遥控帧的组成大体上是一样的只有遥控帧的RTR位不一样,图中已经圈出。
所以对于数据帧和遥控帧还有如下几个关键问题:
(1)数据帧和遥控帧的不同以及区分?
遥控帧的 RTR 位为隐性位,没有数据段,没有数据段的数据帧和遥控帧可通过 RTR 位区别开来。
(2)遥控帧没有数据段,数据长度码该如何表示?
遥控帧的数据长度码以所请求数据帧的数据长度码表示
(3)没有数据段的数据帧有何用途?
例如,可用于各单元的定期连接确认/应答、或仲裁段本身带有实质性信息的情况下。
3.错误帧
用于在接收和发送消息时检测出错误通知错误的帧,错误帧由错误标志和错误界定符构成,其具体组成和结构如图所示:
那么什么是主动错误什么是被动错误呢?
(1)主动错误
主动错误状态是可以正常参加总线通信的状态。 处于主动错误状态的单元检测出错误时,输出主动错误标志。
(2)被动错误
被动错误状态是易引起错误的状态。 处于被动错误状态的单元虽能参加总线通信,但为不妨碍其它单元通信,接收时不能积极地发送错误通知。 处于被动错误状态的单元即使检测出错误,而其它处于主动错误状态的单元如果没发现错误,整个总线也被 认为是没有错误的。 处于被动错误状态的单元检测出错误时,输出被动错误标志。 另外,处于被动错误状态的单元在发送结束后不能马上再次开始发送。在开始下次发送前,在间隔帧期间内 必须插入“延迟传送”(8 个位的隐性位)。
(3)总线关闭态
总线关闭态是不能参加总线上通信的状态。 信息的接收和发送均被禁止。 这些状态依靠发送错误计数和接收错误计数来管理,根据计数值决定进入何种状态。错误状态和计数值的关 系如表 1 及图 4 所示
(4)错误计数值
发送错误计数值和接收错误计数值根据一定的条件发生变化。 错误计数值的变动条件如表 2 所示。 一次数据的接收和发送可能同时满足多个条件。 错误计数器在错误标志的第一个位出现的时间点上开始计数。
(5)错误类型
①CRC错误:发送节点计算得到的CRC值与接收到的CRC值不同时发生该错误。
②应答错误:发送节点在ACK阶段没有接收到应答信号时发生该错误。
③位发送错误:发送节点在发送时发现总线电平与发送电平不相同时发生该错误。
④格式错误:传输的数据帧格式与任何一种合法的帧格式不符时发生该错误。
⑤位填充错误:通信线缆上传输信号违反“位填充”规则时发生该错误。
(6)错误产生的原因
①.终端电阻不匹配:终端电阻用以匹配电缆的阻抗特性,减少信号的反射,当终端电阻与总线的阻抗不匹配时,产生的反射现象就会较为严重,影响结果。
②.电容对波形的影响:电容不匹配会影响电平上升下降沿的时间,进而影响采样时的结果。总线电容过大,会导致放电时间增加,下降沿时间会增加,影响最后采样的结果。
③.支线长度的影响:支线长度过长,会对总线的阻抗匹配产生影响,形成的反射也会更严重,进而影响总线上的波形。
④.节点采样点不合适的影响:当总线上的节点的采样点位置设置的不一致,有可能会出现错误帧。
⑤电磁干扰比较大的影响:较大的电磁干扰会影响总线的波形,进而影响总线上的报文,出现错误帧。
4.过载帧
用于接收单元通知其尚未做好接收准备的帧。
5.帧间隔
帧间隔是用于分隔数据帧和遥控帧的帧。数据帧和遥控帧可通过插入帧间隔将本帧与前面的任何帧(数据帧、 遥控帧、错误帧、过载帧)分开。 过载帧和错误帧前不能插入帧间隔。