前言
LIN的位时间与绝对时间的相互转换,在测试LIN帧长度、测试LIN同步间隔段、同步界定符长度等测试内容上具有非常重要的作用。
一、LIN位时间转换为时间
LIN的位时间转换为时间主要使用CANoe内置函数linBits2Time_ns来实现。
int64 linBits2Time_ns(dword bitTimes);
int64 linBits2Time_ns(dword channel, dword bitTimes);
第二种能够控制在哪个LIN网段上进行检测。
测试实例
测试LIN帧长度,通过on linframe来监测ID=2的LIN帧。
on linFrame 2
{
int64 fullTime; // time in ns
fullTime = linBits2Time_ns(this.lin_fullTime); //ns
write("位时间转时间linBits2Time_ns = %d us", fullTime/1000); //ns转us
}
测试结果
二、LIN时间转换为位时间
LIN的时间转换为位时间主要使用CANoe内置函数linTime2Bits_ns来实现。
dword linTime2Bits_ns(int64 time): // form 1
dword linTime2Bits_ns(dword channel, int64 time); // form 2
测试实例
测试LIN同步间隔段、同步界定符的bit位数。
on linFrame 2
{
dword bitTimeSyncBreak;
dword bitDelimiterLen;
bitTimeSyncBreak = linTime2Bits_ns(this.breakLen);
write("bitTimeSyncBreak的位时间 = %d", bitTimeSyncBreak);
bitDelimiterLen = linTime2Bits_ns(this.delimiterLen);
write("bitDelimiterLen的位时间 = %d", bitDelimiterLen);
}
测试结果
通过linSetBreakLength函数参数注释可以看到,在我们不做任何修改的情况下,LIN同步间隔段默认等于18个bit,同步界定符默认等于2个bit。linTime2Bits_ns函数的测试结果可靠。