- 🍅 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用
- 🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】
- 🍅 玩转CANoe,博客目录大全,点击跳转👉
这里写目录标题
同步间隔段(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 (2,5);
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(1,5);//正确的区间
checkId = ChkStart_LINSyncDelTimingViolation(10,41);//非正确的区间
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总线中同步间隔段间隔符占两个比特。
- 🚩要有最朴素的生活,最遥远的梦想,即使明天天寒地冻,路遥马亡!
- 🚩如果这篇博客对你有帮助,请 “点赞” “评论”“收藏”一键三连 哦!码字不易,大家的支持就是我坚持下去的动力。