作者 | 窦明佳
出品 | 汽车电子与软件
最近样车调试遇到了一个CANFD总线错误帧的问题,排查了很长时间,且其故障原因为首次遇到,特在此记录并分享给大家,希望能够对后续遇到同样问题的同行有所帮助。
#02
2.2 总线接口电路排查
排查该控制器的接口电路与ISO11898标准规定的一致。
但是根据CANFD总线拓扑设计要求,该控制器到主干网的分支长度L1需小于0.1m,因为控制器布置及线束设计原因,现场排查该控制器分支长度远大于0.1m,按照标准要求需增加1.3KΩ的支线终端电阻,因此按照要求更换R1+R2电阻为1.3KΩ;按照上述要求更改支线终端电阻后再次接入整车CANFD网络测试,错误帧依旧,未明显改善。
根据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:发送延迟补偿(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);
#05
/ END /