LIN总线CAPL函数—— 检查LIN报头中同步间隔段的时间(ChkStart_LINSyncBreakTimingViolation )


请添加图片描述

同步间隔段(Break Field)

  • 同步间隔段由同步间隔(Break)和同步间隔段间隔符(Break Delimiter)构成,同步间隔是至少持续13 位(以主机节点的位速率为准)的显性电平,由于帧中的所有间隔或总线空闲时都应保持隐性电平,并且帧中的任何其它字段都不会发出大于9 位的显性电平,因此同步间隔可以标志一个帧的开始。
  • 同步间隔段的间隔符是至少持续1 位的隐性电平。

在这里插入图片描述
在这里插入图片描述

同步间隔段时间检测函数(ChkStart_LINSyncBreakTimingViolation)

  • 检查LIN报头中同步间隔段的时间。如果同步间隔段的测量长度(以比特时间为单位)超出指定范围,将产生一个事件,并在测试报告或者Write窗口中打印 出来。
    在这里插入图片描述

测试示例代码(1)如下:

  • 测试结果为Pass,不会触发该事件。
{
  dword checkId;
  float lastMeasuredSyncBreakLength;

  
  checkId = ChkStart_LINSyncBreakTimingViolation (13,20);
  TestAddCondition(checkId);
  TestWaitForTimeout(10*1000);   //wait for 10s
  
  lastMeasuredSyncBreakLength = ChkQuery_EventTiming(checkId);
  testStep("Evaluation", "Last measured sync break length is %.2f bits", lastMeasuredSyncBreakLength);
  TestRemoveCondition(checkId);

测试示例代码(2)如下:

  • 将测试输入范围改为【2,5】,测试会失败,并触发该检测事件,输出失败的详细信息。
  • ChkQuery_EventTiming函数,只有测量时间发生的时候才输出结果,否则输出为-4
{
  dword checkId;
  float lastMeasuredSyncBreakLength;

  
  checkId = ChkStart_LINSyncBreakTimingViolation (25);
  TestAddCondition(checkId);
  TestWaitForTimeout(10*1000);   //wait for 10s
  
  lastMeasuredSyncBreakLength = ChkQuery_EventTiming(checkId);
  testStep("Evaluation", "Last measured sync break length is %.2f bits", lastMeasuredSyncBreakLength);
  TestRemoveCondition(checkId);
  • LIN总线波特率为19200 。则 1bit 时间为 1/19200 = 5.208 us = 5208ns ,14bit 时间为 = 14* 5208 =72912ns
    在这里插入图片描述

同步间隔段间隔符时间检测函数(ChkStart_LINSyncDelTimingViolation)

  • 检查LIN报头中同步间隔段间隔符的时间。如果同步间隔段间隔符的测量长度(以比特时间为单位)超出指定范围,将产生一个事件,并在测试报告或者Write窗口中打印出来。
  • 同步间隔段的间隔符是至少持续1 位的隐性电平,一般情况是1~2个比特位。

测试示例代码(2)如下:

  • 将测试输入范围改为【2,5】,测试会失败,并触发该检测事件,输出失败的详细信息。
  • ChkQuery_EventTiming函数,只有测量时间发生的时候才输出结果,否则输出为-4
{
  dword checkId;
  float lastMeasuredSyncBreakLength;
 
  checkId = ChkStart_LINSyncDelTimingViolation(15);//正确的区间
  checkId = ChkStart_LINSyncDelTimingViolation(1041);//非正确的区间
  TestAddCondition(checkId);
  TestWaitForTimeout(10*1000);   //wait for 10s
  
  lastMeasuredSyncBreakLength = ChkQuery_EventTiming(checkId);
  testStep("Evaluation", "Last measured sync break length is %.2f bits", lastMeasuredSyncBreakLength);
  TestRemoveCondition(checkId);

测试结果如下图所示,可知这个LIN总线中同步间隔段间隔符占两个比特。
在这里插入图片描述

在这里插入图片描述

23

7

  • 🚩要有最朴素的生活,最遥远的梦想,即使明天天寒地冻,路遥马亡!

  • 🚩如果这篇博客对你有帮助,请 “点赞” “评论”“收藏”一键三连 哦!码字不易,大家的支持就是我坚持下去的动力。
    18
  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蚂蚁小兵

慢慢长夜磨一章好文章,费烟!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值