【CAPL实战】LIN位时间与时间的相互转换


前言

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函数的测试结果可靠。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值