CANFD 采样点测试原理和理论偏差分析
-
1,采样点测试原理:
中心思想是:对于指定位,将其缩短或增长,如果缩短或增长至 DUT 的采样点位置,则 DUT 将会发送错误帧。这个指定位的位置可以是一帧报文中的任何位置。但最好的位置是“隐形位”-> “显性位”-> “隐形位” 序列中的“显性位”,称此为最佳干扰位。这是由于重同步仅会发生在由隐形位变为显性位的跳变沿上, 一般来说在此处跳变沿将会位于同步段(Sync Segment)。

假设 DUT 会以 10ms 为周期向总线发送 ID 为 0x100 的 CAN 报文。VH6501 将在程序启动后,在 DUT 发送 报文的总线空闲间隙发送 ID 为 0x0 的干扰报文。VH6501 发送的所有报文,其【ACK Slot】位都为显性位“0”,为系统默认,无需额外特殊设置。每次干扰循环发送结束,微调干扰报文的【CRC Delimiter】位 长度,使其逐次缩短,并将后一位【ACK Slot】的长度增加。导致的结果为,后一位【ACK Slot = 0】前移。而一旦显性位电平由后往前,前移至 DUT 采样点位置,被 DUT 采到判定为高电平,则出现 Form Error, DUT 随即发送错误帧,并被 CANoe 捕获到(RxErr)。故 CANoe 测试逻辑通道(VH6501 所在通道)采样点须选取靠前位置(e.g. 50%),从而避免被 VH6501 本身先干扰到。另,每次干扰循环结束,VH6501 将 发送 30 次 ID 为 0x1 的正常报文,从而使 DUT 始终保持 Error Active 状态,因其主动错误帧容易辨认。

1)∆𝑡𝑀𝑒𝑠𝐻𝑤指 VH6501 每次缩短或增长的步进长度。 VH6501 采用160M时钟频率,每个tick 6.25ns,单次可调整步长为1个tick。因此,∆𝑡𝑀𝑒𝑠𝐻𝑤=6.25ns。
2)∆𝑡𝑇𝑄指 DUT 的 CAN 参数配置中一个 TQ 的时间长度。 上文中提到的采样点最佳干扰位置是“隐性位-显性位-隐性位”序列中的“显性位”,ISO 11898-1协议里规定重同步会使跳变沿落在同步段里,但是协议并未明确定义跳变沿具体落在同步段的位置,从同步段的开始到结束均可以,因此这会带来1个TQ的误差。所以由DUT自身带来最大误差为1个TQ,而TQ数量与DUT采用的时钟,预分频值以及传输波特率等都相关。
当前CAN 时钟频率为20MHZ,预分频值为1,∆𝑡𝑇𝑄 = 𝑃𝑟𝑒𝑠𝑐𝑎𝑙𝑒𝑟 /𝐶𝐴𝑁 𝐶𝑙𝑜𝑐k=50ns;
仲裁域波特率500K,位时间长度为2000ns,TQ总数为40;
数据域波特率2M,位时间长度为500ns,TQ总数为10。
∆𝑡𝑅𝑒𝑐指总线上一个位的电平长度与 DUT 内部主控芯片 RxD 引脚上的一个位电平长度的时间差。

在2M 波特率下,一个TQ 长度为50ns,位长度为500ns,∆𝑡𝑅𝑒𝑐 范围为-65ns 到+40ns, ∆𝑡𝑅𝑒𝑐需要被考虑进采样点测试的结果当中,为了方便计算∆𝑡𝑅𝑒𝑐取25ns。在仲裁域中,∆𝑡𝑀𝑒𝑠𝐻𝑤 带来的误差为6.25/2000=0.3125%;∆𝑡𝑇𝑄带来的误差为 50/2000=2.5%; ∆𝑡𝑅𝑒𝑐 带来的误差为25/2000=1.25%;
在数据域中,∆𝑡𝑀𝑒𝑠𝐻𝑤 带来的误差为6.25/500=1.25%;∆𝑡𝑇𝑄带来的误差为 50/500=10%; ∆𝑡𝑅𝑒𝑐 带来的误差为25/500=5%;
综上所述,在仲裁域中,总的误差为0.3125%+2.5%+1.25%=4.0625%,约等于4%,数据域中,总的误差为1.25%+10%+5%=16.25%。
因此,若理论采样点为80%,而实际测试的结果,仲裁域在80%±4%,数据域在80%±16.25%范围内都是合理的。
由上可知,由 VH6501 所带来的误差所占比例是很小的。而大部分是由于 CAN 协议本身所带来的误差,以及由于总线长度不同所带来的误差(尤其在CANFD 数据域测试中)。
这些误差可以认为是合理且无法避免的,在实际测试验证中需要进行一定的考量。
快速上手云途开发生态
发帖前请查看
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...