LIN测试中,我们经常遇到需要检查LIN线的各种状态,对于这种状态的检查又是非常的难搞,那如何进行测试呢?今天他来了。。。
目录
ChkStart_LINHeaderToleranceViolation
ChkStart_LINMasterInitTimeViolation
ChkStart_LINSchedTableViolation
ChkStart_LINHeaderToleranceViolation
-- 检查LIN Header传输事件
功能:检查LIN Header传输事件
说明:如果测得的收割台传输时间超过规定的容差,将生成一个事件;对于LIN 2.0合规性,公差必须在[0..40]%的范围内。
Tolerance:传输时间的允许公差;取值范围:[0..40];单位:百分比[%]
CaplCallback:要对生成的事件调用的CAPL回调函数的名称。在模拟节点中,必须设置此参数。在测试模块中,此参数是可选的。
返回值:
0:无法创建检查,且不得引用
>0:检查已成功创建,可以使用返回的(handle-)值进行引用。
代码示例
dword checkId;
// 创建开始检查的传输差
checkId = ChkStart_LINHeaderToleranceViolation(40.0, "LINHeaderToleranceCallback");
// 回调函数
void LINHeaderToleranceCallback (dword aCheckId)
{
ChkQuery_EventStatusToWrite(aCheckId);
}
ChkStart_LINMasterInitTimeViolation
-- 检查LIN Master的初始化时间
功能:检查LIN Master的初始化时间。
说明:初始化状态在打开和唤醒时进入,如果初始化时间超出指定范围,将生成一个事件,此功能
仅验证唤醒时的初始化时间,即从获得唤醒信号到主机发送的第一个标头之间的时间。
对于符合LIN 2.0的情况,初始化时间必须在[100..150]ms的范围内。
MinTime:最小检查时间
0 | 不设置最小初始化时间 |
>0 | 允许的最短初始化时间 |
MaxTime:最大检查时间
0 | 不设置最大初始化时间 |
>0 | 允许的最长初始化时间 |
CaplCallback:要对生成的事件调用的CAPL回调函数的名称。在模拟节点中,必须设置此参数。在测试模块中,此参数是可选的。
返回值:
0:无法创建检查,且不得引用
>0:检查已成功创建,可以使用返回的(handle-)值进行引用。
代码示例
dword checkId;
// 创建并开始检查LIN主机初始化时间违规
checkId = ChkStart_LINMasterInitTimeViolation(100, 150, "LINMasterInitTimeCallback");
// 回调函数
void LINMasterInitTimeViolation (dword aCheckId)
{
ChkQuery_EventStatusToWrite(aCheckId);
}
ChkStart_LINRespErrorSignal
-- 检查LIN响应错误信号
功能:检查LIN响应错误信号
说明:检查指定LIN从节点或所有LIN节点的LIN Response_Error信号。如果Response_Error信号值从FALSE(0)变为TRUE(1),将生成一个事件。
ObservedNode:要检查的节点,只允许使用从属节点
CaplCallback:要对生成的事件调用的CAPL回调函数的名称。在模拟节点中,必须设置此参数。在测试模块中,此参数是可选的。
返回值:
0:无法创建检查,且不得引用
>0:检查已成功创建,可以使用返回的(handle-)值进行引用。
常见错误
指定的节点是主节点
未定义指定节点的Response_Error信号或未定义任何从属节点的信号
CAPL回调不存在
代码示例
dword checkId;
// 创建并开始检查LIN响应_错误信号
checkId = ChkStart_LINRespErrorSignal("LINRespErrCallback");
// 回调函数
void LINRespErrCallback (dword aCheckId)
{
ChkQuery_EventStatusToWrite(aCheckId);
}
ChkStart_LINSchedTableViolation
-- 检查LIN调度表是否与数据库定义一致
功能:检查LIN调度表是否与数据库定义一致。
说明:
时隙帧被违反,即传输的帧ID与相应时隙中定义的帧ID不匹配
时隙延迟不满足,即两个连续LIN报头之间的延迟超出了由相应时隙和允许抖动指定的范围。
只有当指定的计划表已经在运行时,才必须开始检查。这是为了允许运行时同步,这可能需要最多一个调度循环时间。这不是检查诊断时间表的适当功能,因为根据应用程序的不同,可能会出现静默插槽。
TableIndex:要检查的计划表的从零开始的索引。
Jitter:允许偏离时间表定义的时间。对于该值,通常使用Master的抖动。测量的时隙延迟应在以下范围内:
D-抖动<=M<=D+抖动;其中M是测量的延迟,D是预期的延迟。
单位:可通过ChkConfig_SetPrecision进行设置。
默认值:LDF中定义的主机抖动。
CaplCallback:要对生成的事件调用的CAPL回调函数的名称。在模拟节点中,必须设置此参数。在测试模块中,此参数是可选的。
返回值:
0:无法创建检查,且不得引用
>0:检查已成功创建,可以使用返回的(handle-)值进行引用。
代码示例
dword checkId;
// 切换到µs精度
ChkConfig_SetPrecision(6);
// 创建并开始检查索引为0的LIN时间表
checkId = ChkStart_LINSchedTableViolation(0, "LINSchedTableCallback");
// 切换精度到默认
ChkConfig_SetPrecision(3);
// 回调函数
void LINSchedTableCallback (dword aCheckId)
{
ChkQuery_EventStatusToWrite(aCheckId);
}