jinsheng

  • 23 主题
  • 62 帖子
  • 737 积分
  • 身份:版主
  • E币:581

CAN2.0B 数据帧详解

2020-8-14 17:46:27 显示全部楼层

CAN的帧类型分为数据帧、遥控帧、错误帧、过载帧以及帧间空隙,本文将对数据帧的帧结构展开说明:

引言:

  • CAN2.0协议分为A版本和B版本,A版本协议为11位标识符(标准帧),B版本在兼容11位ID标识符的同时,向上扩展到29位ID标识符。
  • 显性电平和隐性电平:

    总线上的电平有显性电平和隐性电平两种,显性电平的逻辑值为“0”,隐性电平为“1”。“显性”具有“优先”的特性,只要有一个单元输出显性电平,总线上即为显性电平,并且,“隐性”具有“包容”的特性,只有所有的单元都输出隐性电平,总线上才为隐性电平。(显性电平比隐性电平更强)




如上图所示,CAN数据帧分为以下7个部分。

  • Start of Frame
  • Arbitration Field
  • Control Field
  • Data Field
  • CRC Field
  • ACK Field
  • End of Frame


1. Start of Frame:

它指示一帧的开始,由1bit的显性位组成,必须在Bus Idle状态发出,网络上所有节点在“下降沿”执行一次同步;


2. Arbitration Field


标准帧和扩展帧的仲裁域是不同的:

  • 标准帧包含11bit的Identifier以及RTR-Bit,Identifier分布于ID28到ID18,禁止高7bit全都为隐性。
  • 扩展帧包含29bit的Identifier,SRR-Bit,IDE-Bit以及RTR-Bit。Identifier分布于ID28到ID0,同样禁止高7bit全都为隐性。


  • RTR-Bit:RemoteTransmission Request BIT,远程请求位,显性表示数据帧,隐性表示远程帧。
  • SRR BIT:Substitute Remote Request BIT,替代远程请求位,它在扩展帧中,位于标准帧RTR的位置上,始终处于隐性。因此一旦标准帧与扩展帧发生冲突,将以标准帧的优先级高于扩展帧而结束。
  • IDE BIT:Identifier Extension Bit,标识符扩展位,它在标准帧中位于控制场,始终处于显性。在扩展帧中位于仲裁场,始终处于显性。


仲裁域表示数据的优先级别,标识符组成的数值越小优先级越高。


3. Control Field


由6个bit组成,指示要传输信息的数据字节数。包含预留位IDE/r1、r0(2bit),DLC(4bit)。

  • r0、r1:保留位必须以显性电平传送,然而,在接收侧可以接收显性、隐性集任意组合的电平。
  • DLC:数据的字节数必须是0-8个字节,但接收方对DLC=9-15的情况并不视为错误。

标准帧和扩展帧的控制场是不同的,在标准帧中r1的位置为IDE-Bit,是一个常态显性位。


4. Data Field

由0到8个字节组成,用于负载传输的数据,数据输出开始于MSB。


5. CRC Field


由15bit CRC Sequence和1bit CRC Delimiter组成,用来检查帧是否有传输错误。

CRC Sequence:CRC序列,计算范围是SOF,仲裁域,控制域和数据域。

CRC Delimiter:CRC界定符,是一个常态隐性位。


6. ACK Field


ACK(应答场)长度为2 个bit。包括ACK Slot和ACK Delimiter。

  • ACK Slot:应答间隙,发送节点送数据时,会将ACK Slot及ACK Delimiter全部置为隐性,接收节点计算CRC Sequence正确无误后,会在ACK Slot期间向发送方发送一个显性位以示应答。

  • ACK Delimiter:ACK界定符,是一个常态隐性位。

如果总线上有2个以上的接收节点,只要它们当中任意一个正常接收到消息,就会有ACK被返回,如果总线上没有节点能够正常接收信息,则NO ACK被返回。另外发送节点不发送ACK。


7. End of Frame

指示帧的结束,由7个隐性位组成。

转载于:https://blog.csdn.net/daweihuahuo/article/details/78352762

免责声明:版权归原作者


最新评论

楼层直达:

charles1986

  • 30 主题
  • 53 帖子
  • 621 积分
  • 身份:版主
  • E币:271
charles1986 2020-8-19 08:46:13 显示全部楼层
CAN.jpg
CAN总线采用不归零码位填充技术,也就是说CAN总线上的信号有两种不同的信号状态,分别是显性的(Dominant)逻辑0和隐形的(recessive)逻辑1,信号每一次传输完后不需要返回到逻辑0(显性)的电平。即CANH端的状态只能是高电平或悬浮状态,CANL端只能是低电平或悬浮状态。这就保证不会在出现在RS-485网络中的现象,即当系统有错误,出现多节点同时向总线发送数据时,导致总线呈现短路,从而损坏某些节点的现象。


我要评论
1
0
广告
关闭 热点推荐上一条 /5 下一条
快速回复 返回列表