can总线一帧多少字节多少位_一条CAN报文到底有多少位?-汽车电子-与非网

CAN-bus 总线是应用最广泛的现场总线之一,而很多非常熟练的CAN 工程师,面对一条 CAN报文到底有多少位的问题时,却不能非常准确地回答。今天我们就从最基本的帧格式来解惑一条 CAN 报文的到底有多少位。

CAN 报文帧分为几种呢?CAN-bus 通信帧共分为数据帧、远程帧、错误帧、过载帧和帧间隔。而数据帧和远程帧又有标准帧和扩展帧两种。其帧类型以及用途如表 1 所示:

表 1  帧类型及用途

Ø数据帧

数据帧从结构上看分为 7 段,分别为起始段、仲裁段、控制段、数据段、CRC 校验段、ACK 应答段、帧结束段。如图 1:

图 1  标准数据帧跟扩展数据帧结构图

l 帧起始段:该段由单个显性位构成,在总线空闲时才允许发送,所有节点必须同步于开始发送的数据帧的起始位;

l 标准帧仲裁段:标准帧的仲裁段由 11 位 ID 码和一个显性位 RTR 码组成,RTR 码为远程帧标识位;

l 扩展帧仲裁段:扩展帧的仲裁段由 29 位 ID 码、一位显性的 SRR 码、一位隐性的 IDE 码和一位显性的 RTR 码组成;

l 标准帧控制段:标准帧的控制段由单位显性的 IDE、保留位 r0 和 4 位数据长度代码 DLC 组成,DLC 数据段采用 BCD 编码;

l 扩展帧控制段:扩展帧的控制段由两个保留位 r1 和 r0 和 4 位的 DLC 数据段组成,r1 和 r0 都为显性填充,接收时无论保留位是显性还是隐性都没有影响;

l 数据段:一个数据段为 8 个字节;

lCRC 校验段:CRC 校验段由 15 位的校验码和 1 个隐性位填充的 CRC 界定符组成,CRC 校验范围为帧起始、仲裁段、控制段和数据段;

lACK 段:ACK 段由 ACK 码和一个隐性位 ACK 界定符组成,发送节点在 ACK 段发送两个隐性位,接收节点在收到的报文 ACK 前面的帧格式没有错误时,他将发出 ACK 码为显性位的报文。

l 帧结束段:由 7 个连续的隐性位组成。

Ø远程帧

远程帧帧格式跟数据帧类似,也分为标准帧跟扩展帧,但是远程帧属于被请求发送节点发送的报文,而数据帧是发送节点的报文。如图 2,远程帧没有数据帧。

图 2  标准远程帧和扩展远程帧的结构图

参照数据帧可了解远程帧的结构,但是两者之间也有不同:

lSRR 段和 RTR 段:数据帧是显性电平,远程帧是隐性电平;

l 节点性质:数据帧是发送节点发出的报文格式,远程帧是被请求发送的节点发送的报文格式;

lCRC 校验范围:数据帧是帧起始、仲裁段、控制段和数据段,而远程帧则是帧起始、仲裁段和控制段。

了解了数据帧跟远程帧的标准报文格式后,有些人可能会问了,我有时看到的报文为什么跟你的标准格式的位数不一样呢?

Ø位填充

CAN-bus 属于异步串行通信,这种通信方式没有时钟线,所以各个收发器的时钟不可能完全一致,时钟不一致就会造成偏差。所以为了解决这个问题,CAN 总线采用同步的方式来校准时钟。CAN-bus 规定信号的跳变沿为同步信号,只要信号发生变化,节点时钟就被同步一次。CAN-bus 还规定同步的最大周期为 5 个位。

但是问题来了,要是出现连续性的 5 个位甚至更长时间没有边沿跳变(例如数据段全为 0x56),那该如何解决呢?CAN-bus 对这种情况又进行了规范,如果传输的位信号连续 5 个位是相同的,就要插入一个电平相反的位,这个就是 CAN-bus 的“位填充”规则。如图 4。

图 4  位填充规则

Ø0x00 和 0x55

由于位填充规则的存在,所以就存在即使两个帧都是标准数据帧,但发送不同 ID 或者数据段的时候报文时间会不同,图 5 为 1M 波特率下 ID 跟数据都为 0x00 的标准数据帧报文。原本 108 个位的标准数据帧的真实的报文时间为 123us。

图 5 标准数据帧 0x00 报文

而 0x55 的标准数据帧报文格式则如图 6:ID 为 555H,数据段为 55H,报文没有出现连续的相同位,所以填充位最少,8 位的数据段位时间为标准的 8us,全报文时间为 108us。

图 6  标准数据帧 0x55 报文

下表给出了标准数据帧、扩展数据帧、标准远程帧、扩展远程帧四种帧类型在发送不同 ID 和数据时位时间的差别。

表 2  不同 ID 和数据位填充位数不一样

通过 CAN-Scope 总线分析仪的报文接收和示波器,可以将每一帧报文跟波形做一一对应,快速分析总线上的报文时间和波形情况,实现 CAN 总线的快速故障定位和干扰排除。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值