CANFD第二采样点相关
-
1 第二采样点(Secondary Sample Point)的意义
传统CAN最大传输速率1Mbps, CAN-FD采用两种位速率, BRS到ACK中间(数据传输段)为可变速率,速率最高为8Mbps,其余部分(仲裁段和数据控制段)为原CAN总线用的速率,最高1Mbps,针对不同的速率有相应的时间定义寄存器。
CAN控制器要经过CAN收发器将信号发往CAN总线,再经过收发器反馈总线信号。而CAN协议规定,发送方发送位时,需要检测接收到的位与发送的位是否一致,否则会产生位错误帧。对于传统CAN来说,因为其最高波特率位1Mbps,位宽只有1us,所以大部分情况下传输的延迟不会超过位宽的一次采样点Sample Point SP (通过TSEG1设置)。发送延时对传统CAN位校验的影响如下图:
传输延迟受收发器环路延迟、传输距离和传输线缆带来的硬件延时影响。
CAN FD的数据段具有比传统CAN更高的波特率,位宽也更小,因此传输延时对CAN FD的采样准确性的影响就比较大了,在一次采样点采样容易产生位错误。发送演示对CANFD位校验的影响如下图:
在汽车应用中,受限于车辆线缆布局的限制,难免会有长距离布线的要求,而因为传输延迟无法避免,所以在CAN FD通讯中引入了发送延时补偿Transmitter Delay Compensation (TDC)和 二次采样点Secondary Sample Point (SSP)的机制,将发送的数据与二次采样点时刻接收到的数据进行比较,从而保证发送与接受的位可以更好地匹配。
在采用CANFD时,建议启动此功能。
2 关于CAN的一些定义
2.1 采样点SP
采样点是CAN控制器读取总线电平,并解释各个比特的逻辑值的时间点。
2.2 TQ
传输的个bit位由若干个Tq组成,根据功能传输一个BIT位需要分成四个阶段:同步段、传输段、相位缓冲段1和相位缓冲段2.
2.3 同步段(Sync_Seg)
用于实现时序调整,总线上各个节点的跳变沿产生在同步段内,通常为1个Tq;
2.4 传播段(Prop_Seg)
用于补偿网络上的物理延迟时间。这些延迟时间包含信号在总线上的传输延迟和CAN节点内部的处理延迟。传播段保证了2倍的信号在总线上的延迟时间;
2.5 相位缓冲段1(Phase_Seg1)和相位缓冲段2(Phase_Seg2)
用于补偿跳变沿的相位误差,其长度会在重同步的实现过程中延长或缩短。
采样点位于相位缓冲段1的结尾。由于相位缓冲段1和相位缓冲段2能够延长或缩短,采样点也能够随之变化。
2.6 收发器延迟补偿(TDC)
当开启TDC后,控制器将自动测量Tx信号线上FDF位到r0位下降沿与Rx信号线上FDF位到r0位边沿的之间的延迟时间(FDF位是CAN FD帧的“身份证”,隐性电平标志协议升级;r0位的下降沿与FDF跳变共同构成TDC延迟测量的时间锚点,二者协同保障高速数据段可靠传输)
3 SDK下关于第二采样点设置
第二采样点由transceiver loop delay收发器环路延迟和可配置的transceiver delay compensation offset收发器延迟补偿偏移组成。
Transceiver loop delay收发器环路延迟是在每个发送帧中从EDL位(同FDF位)到下一位r0的边沿,对应发送位边沿和接收位边沿之间测量的。测得的loop delay不足以用于定义secondary sample point,因为它与位边沿有关.
Transceiver delay compensation offset收发器延迟补偿偏移用于将secondary sample point从边沿转移到bit time内的中间点,远离其边沿。因此,offset值不能大于data phase的bit time.所以为了使TDC可靠地工作,偏移必须使用最佳设置,但是根据是否支持BTE特性分为以下两种情况
·不支持BTE
·支持BTE
故此时TDC offset不能照搬RM里的公式,应按以下公式配置:SSP * Tq_number * (PRESDIV + 1)
计算出正确offset后,SDK代码调用API
void FLEXCAN_DRV_SetTDCOffset(uint8_t instance, bool enable, uint8_t offset);
例:
设置offset的API要在FLEXCAN_DRV_Init后调用,参考代码如下:
注:
①老版本SDK代码默认不使能BTE,1.3.1版本之后Relase代码默认使能BTE(除了LE系列芯片不支持BTE无法使能,其余支持BTE的芯片会默认使能,无论是否支持BTE,配置Offset方式不变,函数内部自行区分是否支持BTE来进行相关寄存器配置,用户无需自行配置);
②用户只需关心是否支持BTE功能影响的Offset取值范围,其他无需关心
支持BTE的OFFSET为7位,最大为127
不支持BTE的OFFSET为5位,最大为31
4 SSP第二采样点配置错误现象
① ECU加入到整车CANFD网络中,整车CANFD网络中有错误帧。ECU未加入到整车CANFD网络中,整车CANFD网络中没有错误帧。
② ECU在该CANFD网络中,所有的CANFD帧无法正常发送,发出的CANFD帧出现Bit Stuff Error;
③ ECU在该CANFD网络中,所有的经典CAN帧可以正常发送。
5 如何快速定位“SSP第二采样点”引起的Bit Stuff Error问题
可以通过以下几个角度,逐步识别该问题:
① ECU在该CANFD网络中,禁用CANFD帧,仅发送经典CAN帧,CAN网络中未出现Bit Stuff Error;② 确认ECU所在的CANFD网络拓扑,以及CAN双绞线的线长(CANFD网络的CAN线不宜太长,否则也会出现Bit Stuff Error);
③ 使用示波器实际测量MCU与CAN收发器之间的“环路延迟时间”,确认其延迟时间是否在一个CANFD数据段位时间的临界点上,如果是,尝试修改MCU与CAN收发器之间的RC阻容电路,以减小该物理延迟时间,再将该ECU放回该CANFD网络中,查看Bit Stuff Error有无减轻;
④ 启用TDC/SSP,查看Bit Stuff Error有无减轻。
发帖前请查看
帮助没办法联网的电脑使用YCT
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...