前言

在前面的文章中PicoScope在CANoe中的使用教程介绍了PicoScope在CANoe中的调用,能够满足手动测试去观测报文波形;本文将主要介绍如何通过CAPL脚本的方式实现PicoScope的调用,并对采集到的波形结果进行计算分析来满足自动化测试的需要。在CAN/LIN物理层关于显隐性电平、斜率、占空比等测试中能够实现自动化,提高测试效率。


1、以斜率测试为例

CAN/LIN总线的斜率测试是为了验证ECU的报文波形上升斜率和下降斜率是否满足要求。如下图,分别测算得到上升/下降电压40%、60%处的时间差,最终通过对应公式进行计算得到斜率值。
在这里插入图片描述
LIN报文的基本代码实现过程如下:

//1.连接scope
scopeConnect();

//2.判断scope连接成功,执行测试步骤
if(testwaitforScopeEvent(scopeConnected,5000) > 0)
{
    //3.唤醒DUT,正常通信
    
    //4.触发Scope
    if(scopeTriggerNow() > 0)
    {
        //5.波形定位,图表切口
        testWaitForScopeFitData(linTargetMsg, fieldStart, fieldStop);

        //6.测量定义区域内LIN消息上升沿和下降沿的过渡时间
        testGetWaitScopeSignalTransitionTime(linTargetMsg, fieldStart, fieldStop, flags, thresholdStart, thresholdEnd, result, handle);

        //7.得到结果,进行分析
        edgesTime.min = result.minValue;
        edgesTime.max = result.maxValue; //斜率deltaT
    }    
}
//8.测试结束,断开scope
scopeDisconnect();
testwaitforScopeEvent(scopeDisconnected,5000);

其中testWaitForScopeFitData()函数用来在Scope视图中定位需要进行波形测试的位置,也就是下图波形要观测哪部分。
在这里插入图片描述
其中,当测试CAN报文是通过参数flags可以支持选择指定的CANH、CANL、CANDiff等信号形式,等同于在下图scope窗口中进行手动过滤选择。
在这里插入图片描述
在这里插入图片描述
通过函数testGetWaitScopeSignalTransitionTime()进行报文上升沿和下降沿的过渡时间测量。在帮助文档中有详细的参数介绍,这里不做赘述。需要注意的是对测量结果的选择,避免一次测试带来的误差值,可以通过添加for循环来进行平均值计算得到测试结果。当然CANoe demo工程中也提供了scope的相关代码供大家学习。

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐