打印
[其他]

CAN FD 总线错误帧排查指南

[复制链接]
194|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 两只袜子 于 2024-6-25 09:37 编辑

最近样车调试遇到了一个CANFD总线错误帧的问题,排查了很长时间,且其故障原因为首次遇到,特在此记录并分享给大家,希望能够对后续遇到同样问题的同行有所帮助。



#01
问题描述


该控制器在装车之前已在供应商进行过零部件网络通讯测试相关工作(包括位时间测试、信号发送电平测试、信号上升沿河下降沿测试、信号发送对称性测试等),单节点收发报文都是正常的,但是在接入整车CANFD网络后会引起总线大量的错误帧,拔掉该节点后网络通讯正常,因此初步判定总线错误帧是由该节点引起的。







#02

问题排查


2.1 线束排查

Ø线束引脚确认:首先确认该控制器的线束端引脚定义是否与控制器端匹配一致,以排除总线CAN_H、CAN_L引脚短接到电源、地以及其他引脚的可能,经过控制器图纸与线束图纸的核对,以及CAN_H、CAN_L对地电压的测量,确认线束设计正确;

Ø终端电阻确认:车辆断电,通过OBD口测量该CANFD网络终端电阻60.2Ω,确认终端电阻正常;


2.2 总线接口电路排查



排查该控制器的接口电路与ISO11898标准规定的一致。



但是根据CANFD总线拓扑设计要求,该控制器到主干网的分支长度L1需小于0.1m,因为控制器布置及线束设计原因,现场排查该控制器分支长度远大于0.1m,按照标准要求需增加1.3KΩ的支线终端电阻,因此按照要求更换R1+R2电阻为1.3KΩ;按照上述要求更改支线终端电阻后再次接入整车CANFD网络测试,错误帧依旧,未明显改善。





2.3 采样点确认

根据ISO11898标准中位定时参数的定义,仲裁域波特率500kbps,数据域波特率2Mbps的CANFD总线,采样点设置应该在75%——82%,现场更改波特率设置从最小75%逐步增加到82%,现场测试错误帧依旧。






#03

分析真因


经过上述总线错误帧问题基本方法的排查后,仍未找到问题的原因,此时我们从头开始梳理问题,并对前期进行的测试进行对比;

3.1 确定错误类型


首先对CANoe采集的错误帧进行初步分析,接入该控制器后总线大量的错误帧,基本阻塞了正常节点的报文发送,且错误帧基本全是“Stuff Error Bit Position=24/28”。





同是每个错误帧中报文的ID都是正常发送的(ID 0x319),且其错误出现在数据段(Phase=Data),错误状态指示器(ESI)=“1”被动错误(ESI默认为显性0),通过示波器采集总线CAN_H、CAN_L以及差分电压分析错误帧很规律的出现在数据段的bit24或28,初步认为错误类型为“位错误”,而非其他错误,如ACK错误、填充错误、CRC错误、格式错误等。





3.2 确定错误原因

针对“位错误”(Bit Check Error)一般是控制器将自己发送的到总线上的电平与同时从总线上回读的电平进行比较,如果发现二者不一致,那么这个节点就会检测出一个位错误,并向总线发送错误帧,并在发送错误计数器TEC和接收错误计数器小于127时将错误状态指示器ESI置位“1”,分析引起“位错误”的可能原因:

Ø可能原因1:总线阻抗、容抗不匹配,总线抗干扰能力弱,EMC干扰引起总线电平反转,结合实车测试,出现位错误的地方很规律,不像EMC干扰引起的位错误具有随机性,初步排除EMC干扰引起;

Ø可能原因2:采样点不对,上面已进行过相关的更改测试,并无明显改善;

Ø可能原因3:发送延迟补偿(TDC)不正确,从而导致控制器回读总线电平的时间点不对,引起“位错误”;





通过对原因3中的发送延迟补偿(TDCO)按照标准进行更改,重新接入整车网络测试故障消除,CANFD网络无错误帧,将其他几台份的控制器按照上述措施更改后,接入整车网络测试都无错误帧。




#04
发送延迟补偿TDC

4.1 为什么存在发送延迟





CAN控制器发送信号时,是经过CAN收发器发往CAN总线后,再经过CAN收发器反馈总线信号,控制器发送位信号和回读位信号就会存在时间延迟,在CANFD中,数据段的波特率是比CAN高的(波特率开关BRS=“1”),波特率越高,位宽越小,在发送报文时延迟影响越大,越容易产生“位错误”,在传统的CAN协议中规定的最高波特率为1Mbps,即位宽1us,正常情况下,传输延迟不会超过位宽的采样点(这取决于收发器环路的延迟,传输距离、传输线缆质量等),因此不会因为发送延迟而产生错误,但在CANFD网络中就需要注意该参数;



4.2 发送延迟补偿的原理



由于发送延迟补偿无法避免,此时就需要一种机制来保证发送与接收的位对应上,以避免产生“位错误”,这种机制就叫做“发送延迟补偿”,其原理就是控制器节点在发送完Bit位一定时间后,在第二采样点采集接收位,以正确采样到发送位对应的接收位,那么延迟采样的时间怎么设定呢?实际上在控制器设置中开启TDC后,控制器将自动测量Tx信号线上FDF位到r0位下降沿与Rx信号线上FDF位到r0位边沿之间的时间差,从而确定发送延迟测量时间TDCV,发送延迟测量的时间单位为CAN控制器时钟(Tq);







在达到延迟时间后,控制器此时需要采样接收位,该采样点成为第二采样点(SSP-Second Sample Point)以区别未延迟之前的采样点SP,SSP等于测量延迟TDCV+发送延迟补偿偏移TDCO(TDC Offset),通常TDCO配置的与第一个采样点一致,即(PROP+TSEG1)*DBRP,在CANFD网络中当采用点设置为80%时,对应的TDCO为400ns;芯片会自动计算二次采样点SSP的位置=TDCV+TDCO。






#05

总结


为了CANFD总线网络正常通信,首先网络上各个节点一定要首先进行单节点的物理层测试(包括总线电压、终端电阻、信号跳变沿、地偏移、通信电压范围等测试)、数据链路层测试(位时间、采样点、帧格式等测试)以及应用层测试(报文周期、报文类型、BusOff恢复策略等),然后在整车集成测试时,在功能调试之前对整车网络的通讯进行测试,保证所有节点在线并正常收发报文,在此过程中会遇到各种引起无法正常通信的问题,需要从装配、供电、线束、硬件电路、软件配置等各角度逐步分析排查,希望上述总线问题的排查记录能够对其他同行有所帮助。

使用特权

评论回复
沙发
Bowclad| | 2024-6-27 18:10 | 只看该作者
为什么就能判断出这是节点错误啊

使用特权

评论回复
板凳
地瓜patch| | 2024-6-28 14:43 | 只看该作者
canfd与canopen协议上有哪些区别

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1932

主题

6697

帖子

8

粉丝