CAN总线通信——CAN通信的数据帧(Data Frame)

CAN总线通信——介绍下CAN通信的数据帧(Data Frame)。

CAN总线以“帧(Frame)”形式进行通信。“数据帧(Data Frame)”,顾名思义,是用来传输数据的。CAN总线的数据帧有标准格式(Standard Format)和扩展格式(Extended Format)的区分,标准帧的格式如下图:

数据帧可以分为七段:

1)帧起始(Start Of Frame-SOF): 1bit,显性信号,表示数据帧(或远程帧)的开始。

2)仲裁段(Arbitration Field):包括两部分:标识符位(Identifier field-ID)和远程发送请求位(Remote Transfer Request-RTR)。

  • 标识符位,是一个功能性的地址(Functional address),CAN接收器通过标识符来过滤数据帧。标准格式的数据帧的标识符(CAN-ID)长度为11位(11 bits),ID10~ID0,ID10为最高权重位(MSB),ID0为最低权重位(LSB),按照ID10~ID0的顺序进行传输。CAN协议还规定:前7位最高权重位(ID10~ID4)不能都为“隐性”信号。

  • 远程发送请求位,简称“RTR”,1 bit。虽然这个位的名字很长,但它的功能很简单,用于区分该帧是数据帧还是远程帧:“显性信号(0)”代表数据帧(Data Frame);“隐性信号(1)”代表远程帧(Remote Frame)。

3)控制段(Control Field):包括6个位(6 bits),分别是扩展标识符位(Identifier Extension bit-IDE,1 bit);保留位0(Reseved bit0-r0,1 bit);数据长度编码位(Data Length Code-DLC,4 bits),如下图:

  • 扩展标识符位(IDE),用来表示该帧是标准格式还是扩展格式;

  • 保留位0(r0),保留,以后使用;

  • 数据长度编码位(DLC),4位(4 bits),包括DLC3~DLC0,表示该帧实际发送的数据的长度(以字节为单位);DLC的编码规则如下:

其中“d”表示显性信号;“r”表示隐性信号;

4) 数据段(Data Field):发送数据的内容,最多8个字节。数据段与DLC的对应关系如下图:

5)循环校验段(CRC Field):包括循环校验序列(CRC Sequence)和界定符(Delimiter,DEL):

  • 循环校验序列(CRC Sequence),15 bits,用于校验传输是否正确;

  • 界定符(DEL),1 bit,隐性信号,表示循环校验序列的结束;

6) 确认段(ACK Field):包括确认位(ACK SLOT)和界定符(Delimiter,DEL),表示确认是否正常接收。

  • 确认位(ACK),1 bit,节点收到正确的CRC序列时,发送端的ACK位被置位;

  • 界定符(DEL),1 bit,隐性信号;

7) 帧结束(End of Frame-EOF):7位(7 bits),隐性信号,表示帧的结束。

以上是标准格式的数据帧,下面来看看扩展格式与标准格式有哪些不同,先看看下面这张图:

仲裁段与控制段有所不同:

1)仲裁段(Arbitration Field):扩展格式的仲裁段包括五个部分:

  • 基本标识符位(Base identifier-Base ID),11 bits,与标准格式的标识符相同;

  • 替代远程请求位(Substitute Remote Request Bit,SRR),1 bit,隐性信号;

  • 扩展位(Identifier Extension bit,IDE),1 bit,标识扩展帧还是标准帧;

  • 扩展标识ID位(Extended Identifier, Extended ID),18 bits,存放扩展标识ID;

  • 远程发送请求位(Remote Transmission Request,RTR),1 bit,数据帧中为显性信号,远程帧中为隐性信号;

2)控制段(Control Field):6 bits,与标准帧不同的是:用保留1(r1)取代了标准帧的IDE,r0和DLC是一样的;也就是说,扩展帧有两个保留位r1 和r0,这两个保留位均需要发送显性信号;

  • 6
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CAN总线通信协议错误帧是指在CAN总线通信中发生了一些问题或错误导致数据传输出现异常的情况。错误帧可以分为以下几种类型: 1. 误码帧(Error Frame):当总线上的任一节点检测到总线上出现了错误时,会发送一个误码帧给其他节点,来通知它们发生了错误。 2. 传输错误帧(Transmission Error Frame):当一个或多个CAN节点尝试发送数据帧时,如果在总线中发生了传输错误,例如位错误、标识符错误或CRC校验错误等,就会发送传输错误帧。 3. 硬件错误帧(Hardware Error Frame):当CAN控制器发现硬件故障或错误时,会发送硬件错误帧来通知其他节点,同时也会主动使整个系统进入总线离线状态,以防止错误数据的传输。 4. 重传错误帧(Retry Error Frame):当发送节点在传输数据帧时,如果在规定的重传次数内未能成功发送,就会发送重传错误帧。这种错误帧通常会引发其他节点对数据帧的重传,以保证数据的正确传输。 5. 格式错误帧(Format Error Frame):当节点在接收数据帧时,如果发现数据帧的格式不符合当前总线通信协议的规范,例如帧格式错误或帧类型错误等,就会发送格式错误帧来通知发送节点。 总的来说,CAN总线通信协议错误帧的出现意味着通信中出现了异常情况,可能是硬件故障、传输错误、格式不正确等原因导致的数据传输异常。及时检测和处理错误帧对于确保CAN总线通信的稳定性和可靠性非常重要。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值