CANFD发送延时补偿
当CAN节点发送报文时,由于收发器循环延时、光耦、传输线缆等影响因素的存在,CAN控制器输出比特位到接收比特位将不可避免地存在传输延时。若发送传输延时过大,将导致CAN发送比特位与接收比特位不一致而引起位错误。
在CAN控制器中,由于波特率最高到1Mbps,位宽最短1us,接收器采样点一般在70%以上,传输延时的存在一般不足以影响总线传输。而CANFD波特率可高于1Mbps,波特率越高时,位宽越短,收发器等外部延时的影响愈加明显,若不增加发送延时补偿,将导致发送节点发出比特位后,接收器在对应比特位的采样点处采样错误。
错误现象
使用我司的CANFD卡进行调试时,用户设备发送CANFD帧失败,(我司CANFD卡)ZCANPRO接收不到CANFD帧,并提示有错误帧。
解决方法
用户设备在控制器启用发送延时补偿(TDC),发送节点将不再原采样点(SP)处采样,而是在设定的延时后开始采样,该实际的采样点称之为二次采样点(SSP),如下图所示。

开启发送延时补偿后,控制器需设置二次采样点的位置参数。
发送延时补偿模式(TDCMOD):该参数一般支持3种模式:
- 禁止TDC:不开启发送延时补偿;
- 自动:自动测量发送延时时间,测量后添加TDCO;SSP=TDCO+测量值;自动测量在每个发送帧的FDF到res位(隐性到显性)边沿测量延时值。
- 手动:不测量,按寄存器设定值,SSP=TDCO+TDCV,一般不建议该设置。
- 发送延时补偿偏移(TDCO):该值为增加延时补偿后,在偏移TDCO值后采样,一般单位为CAN时钟个数。
- 发送延时补偿值(TDCV):该值在设置模式为手动模式时有效,一般单位为CAN时钟个数。
