“CAN 与 CAN FD 通信详解:协议、时间分析与延迟补偿机制“

目录

1.can 协议总结

2.CAN 控制器结构:

扩展帧:

远程帧:

远程扩展帧:

标准can fd 帧:

can fd 扩展帧:

2.1 帧起始:

2.2 仲裁段:

2.3 控制段:

2.4 数据段

2.5 CRC段:

2.6 ACK 段

2.7 帧结束

3.Can位时间:

3.1.CANFD(TDC以及SSP)收发延迟补偿和第二采样点:

3.2loop delay 环路延迟:



1.can 协议总结

CAN采用的是差分信号:由两根线组成CANH和CANL。

按照定义:CANH-CANL<0.5v时候为隐性,逻辑电平为高

CANH-CANL>0.9v时为显性,逻辑电平为低。

CAN总线与IIC一样采用线与,在总线上显性电平具有优先权,当同时出现显性信号和隐性信号时,总线上为显性数据即0。

通信过程:

由于CAN通信只有两根数据线,没有时钟线所以并不知道数据

是什么时候开始发送什么时候开始接收,不像IIC有SCL时钟线,SPI有CS片选信号,那么每个ECU是怎么知道CAN总线上的数据是发给自己呢,CAN有一套复杂的协议。

空闲状态:在CAN协议中,在总线上出现连续的11位隐性电平(电压差<0.5V),表示总线在空闲状态。

像前面说的CAN采用的是线与通信,当所有总线上的单元都发送隐性信号,才说明总线是空闲的。

2.CAN 控制器结构:

can 现场总线仅仅定义第一层(物理层 ISO11898-2,数据链路层11898-1),而canopen 是一种架构在控制局域网络(Controller Area Network,CAN)上的高层通信协议,包括通信子协议以及设备子协议。
物理层:can、can fd(flexible data),简单说一下can 有以下几种帧类型:
标准帧

扩展帧:

远程帧:

远程扩展帧:

can fd 有以下几种数据帧类型:

标准can fd 帧:

can fd 扩展帧:

can fd 波特率切换,仲裁段波特率为500k,数据段为4M

2.1 帧起始:

SOF: 帧起始, 帧起始由1个显性位 构成,标志着报文的开始,并在总线上起着同步的作用

2.2 仲裁段:

base id: 标识符ID
RRS:代替原来的can 帧的RTR,常为显性(0), CAN FD 不支持远程帧

2.3 控制段:

控制段中CANFD与CAN有着相同的IDE res DLC 位;同时增加了三个控制bit位,
FDF、BRS、ESI
IDE: 标准帧和扩展帧标志位
IDE=0,标准帧,IDE=1,扩展帧
FDF 表示是否是CAN 还是can fd :
FD=1,CAN FD 数据帧
r:reserve 位
BRS:
BRS=0,保持低速传输,BRS=1,数据段以高速传输
之后数据段传输是否变换速度 ,BRS 之前属于仲裁段,会以低速传输;BRS 开始到 CRC 分隔符为止,属于数据段,可以高速传输。CRC 分割符之后,由于需要 ACK 应答,因此又变为低速传输。
ESI:
  • ESI = 0:表示发送节点处于 错误主动状态(Error Active),即正常通信状态。
  • ESI = 1:表示发送节点处于 错误被动状态(Error Passive),即该节点错误计数较高,但仍然能发送数据
0-8 线性表示数据长度,9-15离散的表示数据长度。

2.4 数据段

CAN 支持0-8字节报文CANFD 可以支持 12, 16, 20, 24, 32, 48, 64字节

2.5 CRC段:

  • 为了避免位填充对CRC的影响,CAN FD在CRC场中增加了stuff count记录填充位的个数对应8的模,并用格雷码表示,还增加了奇偶校验位;且在CRC中加入了填充位FSB(fixed stuff-bit)
Bit Stuffing 位填充概念:
每当总线上5个相同电平信号时就会插入一个相反信号:以数据内容为 1111 1001 1111 1101 1110 000实际发送数据为1111(0)0011111(0)11011110000.
在传统CAN中, 位填充 (连续5位相同位后填充一位相反位)是在CRC计算之后进行。当CAN控制器发送报文时,先对报文CRC计算后,再填入填充位发送;接收时,则对接收数据移除填充位后,再做CRC校验。
CAN FD CRC 包含数据填充位,CAN FD 在CRC 字段的前四位增加了对前面填充位(stuff count:SOF到数据段五个相同位跟一个相反的位)的计数校验。CRC 字段不适用之前的填充,而是使用固定位填充,从CRC字段位置开始填充,固定每隔四个位填充一位前一位的相反值。( 先统计 SOF 开始到 CRC 字段之前填充位的个数对 8 取模,将数值以格林编码的形式存放在高三位,最后一位偶校验位,校验前三位。
当报文为传统CAN时,仍采用原有的CRC多项式。
当报文为CANFD且数据长度小于等于16字节时,调整为17位的CRC多项式。
当报文为CANFD且数据长度大于16字节时,则调整为21位的CRC多项式。
例子:
假设数据段前有 7 个填充位,填充计数器的 4-bit 记录为 0111(7 的二进制)。
发送端 CRC 计算时:
  • 先去掉所有填充位,还原出原始比特流。
  • 计算时包含填充计数器 0111,但不包含插入的填充位。
接收端 CRC 校验时:
  • 先根据填充计数器 删除填充位,恢复原始数据。
  • 计算 CRC 并与接收的 CRC 比较,如果匹配,则数据正确,否则报错。
CAN 协议需要位填充部分:
在经典 CAN 中,当从 起始位(SOF)CRC定界符(CRC Delimiter) 的所有比特流中出现连续 5 个相同的比特时,发送端自动插入一个相反的比特(填充位)。
CAN FD 扩展了帧结构,数据段最大可达 64 字节,同时引入了额外的控制位(如 EDL、BRS、ESI 等)。位填充机制在大部分部分与经典 CAN 类似,但在 CRC 字段采用固定填充。
不需要位填充部分
数据帧或远程帧的剩余位字段【 CRC DELIMITER(CRC界定符) ACK FIELD(ACK段) 、  END of FRAME(帧结束)  】为固定形式,不填充。  ERROR FRAME(错误帧)  、  OVERLOAD FRAME(过载帧)  也是固定形式的,并且不通过比特填充的方法进行编码。

2.6 ACK 段

与CAN相比,在CAN FD中最多可接受2个位时间有效的ACK,允许1个额外的位时间来补偿收发器相移和传播延迟
由从高速的数据场到慢速的仲裁场时,时钟切换会引起收发器相移和总线传播延迟;为了补偿其相移和延迟,相比传统的CAN,在CAN FD中多加了这额外的1位时间
在ACK之后,发送ACK界定符,这是一个表示ACK结束的分隔符,用1位隐性位表示

2.7 帧结束

  • 与CAN一样,CAN FD的帧结尾也为连续7位的隐性位

主动错误帧

主动错误标志由 6 个连续的显性位构成,这种位序列主动打破了位填充规则,所有其他节点在识别到所生成的位填充错误后,会自行产生错误帧,称为错误反射标志。

3.Can位时间:

CAN 采用同步处理传输的报文,通过一个下降沿产生一个帧起始,又叫做硬同步。为了确保 正确采样到最后一位,CAN节点需要在整个帧中重新同步。

重新同步(Re-synchronization):为了确保整个帧中正确采样到最后一位数据,CAN节点需要在整个帧中重新同步。这是在每个隐性到显性的边缘上完成的。这就是进行比特填充(Bit Stuffing)的原因。(由于can EOF 是7bit 隐性所以需要有位填充)

Segment 1- 同步段

这段的长度总是1tq。如果在前一个位和当前位之间存在位状态变化,那么 接收节点期望在此段内发生总线状态变化

Segment2-传播段

这用于补偿网络上的信号延迟。该段长度可能为1 ~ 8tq

Segment3-相位缓冲段1:这是用来补偿边缘相位误差。该段长度在1到8 TQ之间,在重新同步时可能会 加长。采样点是读取总线电平的点,并将其解释为相应位的 值。它位于阶段缓冲段1的末端(在两个阶段缓冲段之间)。

Segment4-相位缓冲段2:该段长度为1 ~ 8tq,在 重同步时需要缩短。它的长度必须至少等于信息处理时间(见下文),并且不能超过 阶段缓冲段1的长度。

3.1.CANFD(TDC以及SSP)收发延迟补偿和第二采样点

基于CAN协议规范(ISO11898-1),CAN总线发送数据都有“回采”的理论基础,

bit error位错误

在总线上,一个节点发送一个位也应监视总线。当监视的位值与发送的位值不同时,就会在该bit time检测到bit error位错误。具体步骤如下:

Step1:ECU准备发送一帧报文,CAN控制器按照经典CAN/CANFD帧格式,通过TX发送0和1数字电平序列给到CAN收发器;

Step2:CAN收发器中的Transmitter将0和1数字电平序列转换差分电平,通过CANH和CANL发送到CAN Bus上;

Step3:与此同时,CAN收发器中的Receiver回读CAN Bus上的差分电平,并转化为0和1数字电平,给到CAN控制器,完成一次“该ECU发送一帧CAN报文的回采”;

CAN FD 高速通信 下的延迟问题,以及在极限情况下如何计算时延补偿:

1. ISO 11898-5 规定传输时延的上限为 255 ns

根据 ISO 11898-5 标准,CAN 收发器的传输时延上限被定义为 255 ns,这意味着信号从发送端到接收端在物理介质上传输的总延迟可能高达 255 ns。

这个时延包括信号在收发器、线缆和网络节点之间传播的延迟。

2. 位速率为 8 Mbps 的 CAN FD 节点的位时间为 125 ns

位速率 是每秒传输的位数。对于 8 Mbps 的速率,每一位的时间为:在 8 Mbps 的速率下,每传输一位数据所需的时间是 125 ns。

3. 以极限状态下 1 个位时间由 8 个 Tq 组成,单位 Tq 为 15.625 ns

Tq(Time Quantum) 是 CAN 控制器在定义位时间时使用的基本单位。在这个例子中,假设 1 个位时间由 8 个 Tq 组成,因此每个 Tq 的时间为:每个 Tq 是定义和计算 CAN 时间段的基本单位。

4. 传输时延需要 17 个 Tq 来补偿

传输时延可能达到 255 ns。而每个 Tq 的时间是 15.625 ns,因此要补偿 255 ns 的时延,需要的 Tq 数量为:传输延迟相当于 17 个 Tq。

5. 显然一个位时间完全不够来补偿传输时延

在 8 Mbps 的位速率下,1 个位时间为 125 ns,而传输时延为 255 ns,这远远超过了 1 个位时间的长度。因此,即使你在 1 个位时间内使用了所有的 8 个 Tq,也无法完全补偿 255 ns 的延迟。

由于位时间只有 125 ns,而补偿所需的时间是 255 ns(17 个 Tq),显然 单个位时间不足以进行完整的补偿,这就引出了使用 发射机延迟补偿(TDC) 的必要性。

3.2loop delay 环路延迟:

在发送一帧数据时,Tranmitter 将0和1数字电平序列转换为差分信号,receiver将差分电平转换为0和1数字电平数量,因为转换需要时间,会造成物理上的延迟。

TDC transceiver delay compensation 收发延迟补偿

TDC实际上就是在发送BRS位为隐性的CANFD报文时(BRS隐性即开启数据域波特率),在发送时延迟一定时间后,在第二采样点采样接收位,以正确采样到发送位对应的接收位。

发送延迟测量

开启TDC后,控制器将自动测量Tx信号线上FDF位到r0位下降沿与Rx信号线上FDF位到r0位边沿的之间的延迟时间,如下图中所示,TDCV即为延迟时间。

第二采样点(SSP)

在达到延迟时间后,控制器此时需要采样接收位,该采样点我们称为第二采样点(SSP=Second Sample Point),以区别未延迟之前的采样点(SP),如下图所示

SSP等于测量延迟TDCV+发送延迟补偿偏移TDCO(TDC Offset)之和。一般TDCO设置与

第一采样点一致,即(PROP+TSEG1) * DBRP。

第二采样点SSP=发送延迟测量值TD + Offset, 其中Offset设置与第一采样点一致或早1Tq。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值