CANfd 一次采样点和二次采样点
-
采样点的定义
采样点是CAN控制器读取总线电平,并解释各个比特的逻辑值的时间点。
首先我们需要了解Tq的概念,Tq是can控制器的最下时间周期称作时间份额(Time quantum,简称Tq),它是通过芯片晶振周期分频而来。传输的个bit位由若干个Tq组成,根据功能传输一个BIT位需要分成四个阶段:同步段、传输段、相位缓冲段1和相位缓冲段2.
这4个阶段的功能如下:
1.同步段(Sync_Seg):用于实现时序调整,总线上各个节点的跳变沿产生在同步段内,通常为1个Tq;
2.传播段(Prop_Seg):用于补偿网络上的物理延迟时间。这些延迟时间包含信号在总线上的传输延迟和CAN节点内部的处理延迟。传播段保证了2倍的信号在总线上的延迟时间;
3.相位缓冲段1(Phase_Seg1)和相位缓冲段2(Phase_Seg2):用于补偿跳变沿的相位误差,其长度会在重同步的实现过程中延长或缩短。
采样点位于相位缓冲段1的结尾。由于相位缓冲段1和相位缓冲段2能够延长或缩短,采样点也能够随之变化。 -
can采样点的计算
晶振时钟周期:是由单片机振荡器的晶振频率决定的,指的是振荡器每震荡一次所消耗的时间长度,也是整个系统中最小的时间单位;
下面以TP377为例进行计算
通过查看配置我们的canfd的,采样分为仲裁场和数据场。仲裁场的波特率为500Kbit/s,数据场为2Mbit/s,can时钟频率为4.0E7。
查看TP377手册Tq = (DBRP + 1) clock cycles
Tq=(1+1)1/4.0E7(s)=50(ns)
仲裁场计算采样点:
对于仲裁场500k,传输一个bit位的时间1/500000s=2us,所以分配
2us/50ns=40个tq,
如果采样点设置为80%,则sync_seg+prop_seg+phase_seg1=4080%=32Tq
在ET tresos中可以这样配置
数据场采样点计算:
对于数据场2Mkbs,传输一个bit位的时间1/2000000s=500ns,所以分配
500ns/50ns=10个tq,
如果采样点设置为80%,则sync_seg+prop_seg+phase_seg1=10*80%=8Tq
则对应在EB TRESOS中配置如下
-
CAN-FD与CAN发送速率的不同
CAN最大传输速率1Mbps,CAN-FD速率可变,仲裁比特率最高1Mbps(与CAN相同),数据比特率最高8Mbps。BRS位速率切换为,BRS位为0时CANFD速率保持恒定速率、BRS位为1时CANFD的数据段会被切换到高速率。
ESI错误状态指示位:CAN报文中发送节点的错误状态只有该节点自己知道,CANFD报文中可以通过ESI标志位来告诉其他节点该节点的错误状态,当ESI为1时表示发送节点处于被动错误状态、当ESI为0时表示发送节点处于主动错误状态。
-
发送延迟补偿
CAN控制器发送信号时,是经过收发器后发往CAN总线后,再经过收发器反馈总线信号。那么发送过程中,控制器发送位信号到接收位信号就不可避免地存在环路延迟。发送延迟时间的总和如下:
1 ). CAN控制器内部产生TX信号到Tx引脚的传播延迟;
2 ). Tx引脚到收发器TxD引脚的传播延迟;
3 ).收发器环路延迟TxD到RxD;
4 ). 收发器RxD引脚到CAN控制器Rx引脚延迟;
5 ).CAN控制器Rx引脚到控制器内部收到Rx信号的延迟
CAN协议中规定:发送方发送位时,需检测接收到的位与发送是否一致,若不一致则产生错误帧(位错误)。如果发送延迟过长,则将直接导致发送与接收位不一致而产生错误帧。由于传统CAN协议规定最高波特率为1Mbps,即位宽1us,正常情况下,传输延迟不会超过位宽的采样点(当然具体延迟取决于收发器环路延迟、传输距离、传输线缆质量等),因此不会因为发送延迟而产生错误。
在CANFD中,数据段的波特率是比CAN更高的(BRS位为隐性时),此时波特率越高,位宽越小,在发送报文时发送延迟影响越大,越容易产生位错误。由于发送延迟无法避免,此时就需要一种机制来保证发送与接收的位对应上,以避免产生位错误。这种机制就是发送延迟补偿了。
发送延迟补偿(TDC)
TDC实际上就是在发送BRS位为隐性的CANFD报文时(BRS隐性即开启数据域波特率),在发送时延迟一定时间后,在第二采样点采样接收位,以正确采样到发送位对应的接收位。
发送延迟测量
那么延迟采样的延迟时间是多久呢?实际上,开启TDC后,控制器将自动测量Tx信号线上FDF位到r0位下降沿与Rx信号线上FDF位到r0位边沿的之间的延迟时间,如下图中所示,TDCV即为延迟时间。发送延迟测量的时间单位为CAN控制器时钟(TDC寄存器中一般对TDCV的值有限制,若超过寄存器最大位数,则发送延迟测量失败)。
不同于采样点,第二采样点在CAN FD控制器接收其他节点发送报文的过程中并不会起到任何作用。第二采样点的作用,是在不改变传输延迟补偿的情况下,实现CAN FD在数据场的位错误检测要求。
根据TP377手册
根据手册TDCV是接收到数据时的发送延迟时间,是当TDC使能的时候会自己自动计算的。
TDCO就是设置的正常采样点的时间。