CANFD数据段支持可变速率,最高可达12Mb/s。我们知道CAN控制器会将收发器RX pin的数据采样接收,用于判断TX pin的数据是否被成功发送,以便实现冲裁判断和错误处理。RX的回环检测是保证CAN总线可靠性的基础技术。
但是,CAN收发器的信号转换都是有时延的,也就是说从TX出发到达CAN bus,以及从CAN bus返回RX都是延时的,在CAN2.0时代,收发器的延时在适合的采样点设置下被妥当的处理,不会因此造成TX的数据,RX延时采样后出现错误。我们看一下典型的CAN2.0收发器的信号延时参数。
CAN收发器的标准延时测试电路和波形示意如下图
不同的收发器参数略有差异,但是不管是PCA82C251/ TJA1050这类1Mb/s的收发器还是TJA1044可达5Mb/s的型号延时参数差异都不大, tonRXD在50ns左右,toffRXD在90ns左右。按max值算最大可以到200+ns
那么按200ns的延时进行考虑:也就是说TX发出的波形,RX回环接收到会延迟200ns。
首先看看,CAN2.0最高1Mb/s的情况。一个bit时间Tb=1000ns。200ns的延时会导致RX采样的波形落后20%。 按典型的87%的采样率计算,实际上RX loop采样的位置是在67%。所以整个RX采样的裕度还是比较大的,顺便也解释了为什么要选取75%~87%这样靠后的采样位置。这样TX->RX信号延时后,对保证让控制器能够采样到正确的数据非常有帮助。
然后来到CANFD,事情发生了变化。
以10Mb/s的数据段高速波特率计算,一个bit位周期Tb=100ns。最高200ns的RX delay将会带来毁灭性的采样错误,TX->RX收到的波形可能已经落后超过一个Tb,无论如何设置采样位置都无返挽回如此大的信号延时。
所以CANFD的标准给出了一个解决办法:Transceiver delay compensation(收发器延时补偿)
给RX定义了一个新的采样点SSP(Secondary Sample Point)。要求控制器需要在仲裁段(<=1Mb/s)段测量FDF下降沿的RX delay时间,然后在发送数据段对RX采样时,对RX采样点进行延时。(下图是ST的FDCAN对延时测量的说明)
也就是说,在CANFD高速波特率发送的情况下,采样RX loop的采样点会推迟一段时间。
具体推迟的时间通过仲裁段的FDF位的下降沿delay来测量。
之后数据段RX采样的情况修可以被修复,如下: