最近在研究使用VH6501进行CAN节点测试,主要是采样点和Busoff测试,期间踩了不少坑,下面详细分享下踩坑和环境搭建经历,CAN测试这块我也是最近刚起步,如果有说的不对的地方欢迎各位大佬指正
- 进行采样点测试
- 测试原理
采样点是节点判断信号逻辑电平的位置,对 CAN/CAN FD 总线来说极其重要,尤其是在组网的时候,多个节点要尽量保持同一个采样点。若网络中节点采样点不一致可能会导致同样的采样频率出现采样错误,进而使整个网络出现故障,所以对 CAN/CAN FD 节点进行采样点的测试显得尤为重要,采样点测试目的用于检查DUT(Device Under Test)的采样点设置是否遵守规范要求。本文以 CANoe 自带的采样点测试工程为例介绍如何基于 VH6501(CAN/CAN FD 总线干扰仪)进行CAN/CAN FD 采样点测试
采样点的位置不受DUT 所处的收发状态影响,故针对采样点测试既可以干扰 DUT发送的指定报文的某个位,也可以通过测试工具发送特定干扰报文去检测 DUT的行为。
本文描述的采样点测试案例中被测节点扮演的是接收节点的角色。以 CAN 采样点测试为例,VH6501 在检测到总线空闲时,发送较高优先级的特定干扰报文,完成一个干扰循环。每次干扰循环发送结束,微调 CRC Delimiter 位(隐性位)长度,使其逐次缩短,导致后一位 ACK Slot(显性位)前移,并将 ACK Slot 长度增加,保证整帧报文的长度不变。当显性位电平由后往前,移至 DUT 采样点位置,会被 DUT 采到并判定 CRC Delimiter 位为高电平,出现格式错误,DUT 随即发送错误帧,并被 CANoe 采集到。
- 测试环境搭建
测试期间VH6501需要和VH1630,PICOScope共同搭配使用,测试环境搭建图如下:
此处需要注意的是,由于我们ECU的硬件是带有高阻抗终端电阻,而VH6501是120欧终端电阻,两者阻抗不等效,需要在CAN线上再串联一个终端电阻,详细见下图
- 软件配置
打开软件后,选择CANoe的示例工程Disturbance Sample Point Test (CAN FD)
进入工程后,将 VH6501 通道分配给软件通道 CAN1,在下图所示界面设置 Mode 为 CAN,并勾选 Activate 选项使能 VH6501 总线干扰功能
VH6501 的采样点设置尽量靠前,确保优先干扰到 DUT 的采样点,此处BTL Cycles(指的是TQ数量,将一个位分为16个TQ) 和SJW(同步跳变宽度) 要选择数值较大的组合,可参考下图配置:
回到主界面,在Panel中点击Activate Sample Point Test就会得到测试结果
此时注意这时会出现两个测试结果,左图的测试结果69.09%是VH6501 逐步缩短 CRC Delimiter 位至该位宽度为224ticks(500K 通讯速率下标称位宽度为 320ticks)时 DUT 报错,即表明干扰到DUT 采样点,计算 224/320 得出的
但是这个结果并不是我们最终要获取的结果,我们还要加入1个TQ的同步段,按照我的理解解释下为什么要加入一个TQ?
根据CAN规范,每一个CAN位时间 (Nominal Bit Time,NBT)被分成4个时间段:同步段(Sync_Seg)、传播时间段(Prop_Seg)、相位缓冲段1(Phase_Seg1)和相位缓冲段2(Phase_Seg2),如下图所示:
一般为了编程方便会将传播段和相对缓冲段1合为时间段1,相对缓冲段2为时间段2,我们当前计算的69.09%只是只是时间段1/(时间段1+时间段2)的结果,此处程序会将ticks换算成TQ,再加入同步段的1个TQ,使用以下公式重新计算得到得到81.25%
采样点公式sample = ( 1 + CAN_BS1) / (1 + CAN_BS1 + CAN_BS2)
所有我认为81.25%才是我们要的结果