如何测量LIN网络波特率误差

发布时间:2024-01-18 08:05:48

本文是我基于LIN2.1规范得出的结论,暂且无法确认是否一定正确!如果描述有误,恳请大佬能指正!不胜感激。

前提:之前做项目的时候,遇到关于LIN波特率误差的测试!因为对相关概念了解的不全面,导致用例编写的不好!客户也一直提出疑问。今天恰好有时间,重新梳理了一遍LIN规范中关于波特率误差的部分。做一个总结

1*)主节点测试说明(Ftol_res_master)

是指主节点设定的波特率和实际发出来的波特率的误差。

这里设定需要分为两种情况,

1.1)当测试节点为主节点时:

(是可以在协议栈中配置的波特率的。是需要考虑,测量此误差范围的。如配置波特率为19200bit/s,实际测量(本人是使用示波器进行测量的)。误差范围要控制在±0.5之间。[19104-19296]之间。

但是,实际测试过程中,我们需要适当放宽标准。因为实际我们测试也存在部分误差。可以根据示波器的精度,适当放宽标准0.6%-1%之间。

2*)从节点误差说明(Ftol_res_Slave、Ftol_unsync、Ftol_sync)

当测试节点,也就是被测节点是从节点时。

也需要考虑Ftol_res_master参数,因为从节点需要主节点发送的调度表。才能正常正确填充数据。此时,我们需要使用测试工具来模拟主节点。测试从节点波特率误差的前提就是,主节点误差范围不超过±0.5%。实际测试适当放宽标准0.6%-1%之间,只有保证这个前提,才能执行从节点的各项误差参数的测试。

我们在这里提出一个新的概率:即协议栈中设置的波特率,叫做“协议栈波特率”

2.1:Ftol_res_slave当测试节点为从节点时

节点类型晶振类型是否需要通过同步段同步说明
从节点低精度时钟一般情况下是必需,同步段执行同步的

此情况下:误差有两种参数需要测量

1:同步前误差±14%,Ftol_unsync

2:同步后误差±2%,Ftol_sync

从节点高精度时钟

非强制,

1:响应主节点的同步段

2:不响应主节点同步段

1:以实测主节点波特率为基准,误差±2%。又因为主节点对比协议栈中配置的波特率,可以存在0.5%的误差,故测试中,从节点基于协议栈配置波特率误差最大为2%+0.5%=2.5%:,Ftol_sync

2:以从节点,基于协议栈配置波特率误差,±1.5%,Ftol_res_Slave

故;从节点测试需要分为3种情况

2.1.1):低精度时钟,测量同步前误差±14%,Ftol_unsync

需要测试 1:同步前误差±14%,Ftol_unsync。此测试项比较复杂,

测试方案为:通过改变主节点同步间隔段的长短,来测试从节点是否符合Ftol_unsync(±14%)的标准。

那么该如何改变主节点同步间隔段的长短,我们还需要知道两个概念

*概念1)主节点发送的同步间隔段至少>=13bit的显性位。从节点在﹢14和-14的时钟误差上,能识别为多少bit的显现位,设置此参数为X。

转态1):从节点时钟比主节点时钟快+14%。即从节点的位时间,比主节点快14%

(X-13)/13=0.14,X=14.82。故从节点肯定能识别这个,同步间隔段,从节点自身唤醒,同时执行初始化(100ms内完成初始化),一般情况下10ms内即可完成。

*状态2)从节点时钟比主节点时钟慢+14%,即从节点的位时间,比主节点慢14%。

(13-X)13=0.14,X=11.18。故此情况下,从节点最多只能识别11bit,故从节点在配置协议栈时。同步间隔段,最小识别阈值=11bit。也就是说只要从节点识别到11个显性位,就执行唤醒自身,并初始化。

*概念2) LIN帧中,不可能存在超过9个bit的相同位数据,(除了同步间隔段)

也就是说帧中最多同时出现 9bit显性位,或最多同时出现9bit的隐形位,如果在同步间隔段之外检测到>9bit显性位信号,该LIN总线即将该段信号识别为同步间隔段。

于是:(X-9)/9=14,X=10.28,即从节点时钟比标准的主节点时钟,快14时,从节点最大可以将主节点发送的9bit显性位,识别为10.28bit显性位。

? 于是,从节点误差为:14%时,识别阈值最小为11bit显性位。

总结:从节点允许的误差范围内,必须满足两个条件

1)主节点发送13bit的显性位时,必须识别为同步间隔段

2)不能将帧头,或数据段识别为同步间隔段(同步段固定格式+不可能被识别为同步间隔段,PID段的奇偶校验不能全为0,或全为1,实际上也不可能被识别为同步间隔),(实际上只有数据段可能出点连续9bit的显性位,数据=0x00,不能识别为同步间隔段)

测试从节点是否满足,协议栈配置波特率的14%误差。

1:首先查询开发文档,确定从节点时钟为低精度时钟

2:确定配置识别同步间隔段的阈值为11bit的显性位

2:使用测试工具模拟主节点(必须保证主节点与配置波特率的误差±0.5%),发送11bit显性位,,如果能够识别,说明波特率误差0%。如果发送14.82才能识别,那么波特率误差为+14%。如果发送9.6位,从节点识别为同步间隔段,则从节点比标准波特率快+14%。

计算公式:11=(X)*1.14

如果发送12.79bit,位的显性位,从节点才能识别为同步间隔段,则从节点比标准波特率慢14%,也就是误差-14%。

计算公式:11=(X)*0.86

总结:测试同步前误差±14%,Ftol_unsync,必须知道从节点的识别阈值,然后根据上述方法,测试出从节点识别出同步间隔段时的阈值,如果该阈值<9.6,如为9.2则,从节点同步前波特率误差>14%,如果识别阈值>12.79。则波特率误差比标准波特率小14%。

2.1.2):低精度时钟,测量同步后误差±2%,Ftol_sync

使用示波器,测量主节点发出的帧头部分的,(同步段 从起始位下降沿-第7bit位的下降沿)/8

从节点,填充的数据段比较难测量,最好选取数据段为00,因为没有合适的作图工具,我把00的波形图,红线画出来,因为起始位下降沿和停止位上升沿,比较好找,所以

[T2(2处时刻)-T1(1处时刻)]/9=从节点的位时间

文章来源:https://blog.csdn.net/WE_BIG/article/details/135606139
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。