0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

LIN总线帧结构及各场干扰

北汇信息POLELINK 2022-09-29 12:19 次阅读

一、LIN总线帧结构

一个完整的LIN总线报文帧“Message Frame”包含报头“Header”和响应“Response”,主任务发送报头,从任务用响应来补充报头形成完整的报文。

poYBAGM1HCKAehWnAACW7jZQDJI720.png

截取自LIN Specification PackageRevision 2.1

其中帧头包括间隔场、同步段以及标识符场,应答包括数据段和校验和场。每个字节之间存在字节间隔(Inter-byte Space);在报头与响应之间存在响应间隔(Response Space);两帧LIN报文之间存在帧间间隔(Inter-frame Space)。下面将详细介绍每个段的具体内容格式。

1.间隔场

间隔场由间隔信号和间隔界定符组成。间隔场表示一帧报文的起始,由主节点发出。间隔信号至少由13个显性位组成,间隔界定符至少由1个隐形位组成。间隔场是唯一一个不符合字节场格式的场,从节点需要检测到至少连续11个显性位才认为是间隔信号。

pYYBAGM1HCKABaRQAABXTObfLH4776.png

截取自LIN Specification PackageRevision 2.1

2.同步场

同步场顾名思义它的作用是确保所有从节点使用与主节点相同的波特率发送和接收数据,以下降沿为判断标志,同步段采用一个固定的字节结构0X55。从节点通过接收主节点发出的同步段,计算出主节点位速率,根据计算结果对自身的位速率重新作调整。计算公式如下:1位时间 =(第7位的下降沿时刻 - 起始位的下降沿时刻)/ 8

poYBAGM1HCKAfU4sAABudEHLgI8268.png

截取自LIN Specification PackageRevision 2.1

3.标识符场

标识符场由两部分组成,受保护 ID 段的前 6 位叫作帧 ID(Frame ID),加上两个奇偶校验位后称作受保护 ID段。

pYYBAGM1HCKARLFSAACIJ0HMqYA484.png

截取自LIN Specification PackageRevision 2.1

帧ID的范围在0x00~0x3F之间,共64个。帧ID标识了帧的类别和目的地。从任务对于帧头作出的反应(接收/发送/忽略应答部分)都是依据帧ID判断的。如果帧ID传输错误,将会导致信号无法正确到达目的地,因此引入奇偶校验位。校验公式如下,其中“⊕”代表“异或”运算,“¬”代表“取非”运算。

P0 = ID0 ⊕ ID1 ⊕ ID2 ⊕ ID4

P1 = ¬ (ID1 ⊕ ID3 ⊕ ID4 ⊕ ID5)

4.数据场

数据场用于存储节点发送的数据,数据场长度1到8个字节,采用低字节先发,低位先发策略,如果某一信号长度超过1个字节,采用低位在前的方式发送。

pYYBAGM1HCKAIuBXAACtZI5Wqo8792.png

截取自LIN Specification PackageRevision 2.1

5.校验和场

检验和场用于校验接收到的数据是否正确。校验分为经典校验(Classic Checksum)和增强校验(Enhance Checksum)。经典校验仅校验数据场,适用于诊断帧和与 LIN1.x 从机节点通信;增强校验校验标识符场和数据场,适用于与 LIN2.x 从机节点通信(诊断帧除外)。采用标准型校验和还是增强型校验和由主机节点管理,发布节点和各收听节点根据帧ID来判断采用哪种校验和。

poYBAGM1HCKACITmAAA-tVctdv8361.png

截取自LIN Specification PackageRevision 2.1

  1. LIN总线帧结构干扰

LIN帧的不同场格式需要按照协议进行开发,为了测试样件是否不响应错误的帧结构,就需要对LIN帧中各个场分别进行干扰以达到所需要的测试目的。实现干扰的方式有很多,本文通过CAPL自带函数来进行相应的干扰,下面将对CAPL函数linSendHeaderError()、linInvertRespBit()、linInvertHeaderBit()

进行介绍。

  1. linSendHeaderError()

该函数用于干扰报文头,包含三个参数,一个是syncByte,用于设置同步场位;一个是idWithParity,用于设置标识符场;最后一个是StopAfterError,该位置1表示如果报头中一旦有某个场出现错误,则终止之后报头场的发送。

具体参数如图所示

poYBAGM1HCOAdWPHAACjetH76cY597.png

截取自Vector Browser Helper

下面通过一个干扰ID为0x33的报文PID场中奇偶校验位的实例,来帮助大家进一步深入理解该函数。

// Force an error in header of LIN frame with ID=0x33 by setting wrong protected ID

on key 'h'
{
byte linID, protectedID, corParity, errParity, errPID;
// calculate protected ID with wrong parity bits
linID = 0x33; // use frame ID=0x33
protectedID = linGetProtectedID(linID); // get protected ID
corParity = (protectedID & 0xC0) >> 6; // extract parity (0xC=0=11000000)
errParity = (corParity ^ 0x2) & 0x3; // calculate wrong parity using XOR
errPID = linID | (errParity << 6); // calculate PID with wrong parity
linSendHeaderError(0x55, errPID, 0);
}

给大家大致解释一下脚本的实现逻辑,首先通过linGetProtectedID()可以获取该报文正确的PID值,然后通过corParity = (protectedID & 0xC0) >> 6提取出奇偶校验位,与0x2异或干扰校验位,最后通过errPID = linID | (errParity << 6)得出一个干扰过奇偶校验位的PID值并赋值给自己先前声明的errPID即得到了一个带有错误奇偶校验位的PID值,通过函数linSendHeaderError(0x55,errPID,0)发送错误PID值的LIN报头,即实现了对PID场的干扰。

2.linInvertRespBit()

该函数用于干扰响应,主要关注的参数如下,byteIndex用来指定干扰数据场第几字节(如果该参数值设置为报文长度,则干扰的是校验位长度);bitIndex用来指定干扰相对应第几位;level值为0的话,则把相应位从隐形干扰成显性,如果为1则反之从显性干扰成隐性;numberOfExecutions这个参数用来定义干扰的个数。

具体参数如图所示

pYYBAGM1HCOAHwZNAADw6HUOCPE221.png

截取自Vector Browser Helper

下面通过下面的示例,来帮助大家进一步深入理解该函数。

on key 'i'
{
...
// Invert first bit of byte field 8 for LIN frame with ID=0x33
linInvertRespBit(0x33, 7, 0);
...
// Invert bit 7 of checksum byte field for LIN frame with ID=0x33
linInvertRespBit(0x33, 8, 6);
...
// Invert stop bit of byte field 8 for LIN frame with ID=0x33
linInvertRespBit(0x33, 7, 8);
...
}

第一个函数是干扰第8个比特,由于bitIndex是0,所以干扰的是该比特的第一个位,其中第二个函数如果byteIndex的长度和DLC长度一样,则说明干扰的是该报文的checksum位。

3.linInvertHeaderBit()

该函数用于干扰报头,主要关注的参数如下,byteIndex用来指定干扰数据场类型,如果为-1,则是干扰间隔场,如果为0干扰同步场,如果为1干扰PID场;bitIndex用来指定干扰相对应第几位,如果为8则是干扰stopbit;level值为0的话,则把相应位从隐形干扰成显性,如果为1则反之从显性干扰成隐性;numberOfExecutions这个参数用来定义干扰的个数;disturbAfterHeaderID这个参数用来指定在该ID之后进行干扰,这个参数需要搭配waitForHeaders使用,如果设置waitForHeaders为0,disturbAfterHeaderID为5,则是等收到ID为5的报文后,在下一个报头直接进行干扰。

具体参数如图所示

poYBAGM1HCSACCVcAAFGVBLjB5A454.png

截取自Vector Browser Helper

  1. 小结

通过上述的介绍,大家应该对基于CAPL对LIN报文各场干扰有了一定的了解了。通过发送干扰的报头或者对从节点的响应进行干扰,然后再发送正常帧,即可通过该正常帧的数据,对ResponseError位是否能正确置位进行测试了。

北汇信息作为Vector中国的合作伙伴,致力于为中国汽车客户提供优质的工具支持、解决方案以及测试服务。

图片来源:LIN Specification PackageRevision 2.1以及Vector

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • LIN
    LIN
    +关注

    关注

    4

    文章

    216

    浏览量

    40282
  • CANoe
    +关注

    关注

    4

    文章

    66

    浏览量

    8644
收藏 人收藏

    评论

    相关推荐

    LIN总线错误类型介绍#lin总线 #汽车电子

    LIN总线
    北汇信息POLELINK
    发布于 :2024年12月21日 14:04:56

    CAN总线LIN总线的区别

    不同的数据传输速率,从最低的10 kbps到最高的1 Mbps。 拓扑结构: 通常采用双绞线结构,支持多点通信。 错误检测: 具有强大的错误检测机制,包括位错误、错误等。 仲裁机制: 使用基于优先级的非破坏性
    的头像 发表于 11-12 10:13 1350次阅读

    CAN总线通信中的数据结构解析

    CAN总线由Bosch公司在1980年代开发,旨在为汽车电子系统提供一个可靠的通信网络。随着技术的发展,CAN总线已经被广泛应用于各种工业和自动化领域。 2. CAN总线数据概述 C
    的头像 发表于 11-12 10:12 603次阅读

    Lin总线的定义以及静电保护方案

    1、Lin总线介绍LIN(LocalInterconnectNetwork,本地互连网络)是一种低成本、串行通信协议,主要用于汽车电子系统中的微控制器和智能传感器之间的通信。LIN
    的头像 发表于 10-13 08:03 313次阅读
    <b class='flag-5'>Lin</b><b class='flag-5'>总线</b>的定义以及静电保护方案

    干货分享 | TSMaster—LIN 唤醒与休眠机制

    在汽车总线中常见的唤醒方式有硬线唤醒、网络唤醒和特定信号唤醒,而LIN总线则是通过休眠与唤醒电平来实现的,本文将介绍LIN的唤醒与休眠机制
    的头像 发表于 09-25 08:03 1691次阅读
    干货分享 | TSMaster—<b class='flag-5'>LIN</b> 唤醒与休眠机制

    CAN总线的数据结构

    CAN总线是一种基于时间分割的通信协议,它允许多个设备共享一个通信介质(如双绞线或光纤)。CAN总线的数据传输速率可以达到1 Mbps,适用于短距离通信。CAN总线具有以下特点: 多主站结构
    的头像 发表于 07-24 15:06 909次阅读

    XMC4700通过发送相应的报头来获取LIN总线上的可用数据,没有从从属设备上得到任何响应,为什么?

    我正试图通过发送相应的报头来获取 LIN 总线上的可用数据,但我没有从从属设备上得到任何响应。 我可以在 LIN 分析仪上看到 ID,但无法获得数据
    发表于 07-19 06:15

    虹科直播 | 原来LIN总线故障还能这样查?!教你LIN总线译码技巧及运用!

    LIN总线大家都并不陌生,遇上这类故障,你的第一反应可能是使用万用表测量电压,看看是不是存在短路等故障。然而,万用表所测得的仅仅是总线信号的平均电压,即使平均电压正常也不代表通讯信号就是正常
    的头像 发表于 06-20 08:08 565次阅读
    虹科直播 | 原来<b class='flag-5'>LIN</b><b class='flag-5'>总线</b>故障还能这样查?!教你<b class='flag-5'>LIN</b><b class='flag-5'>总线</b>译码技巧及运用!

    LIN数据总线ESD保护方案

    LIN数据总线ESD保护方案 LIN总线(Local Interconnect Network)是一种用于车辆电子系统中的串行通信协议。LIN
    发表于 05-28 16:56 612次阅读
    <b class='flag-5'>LIN</b>数据<b class='flag-5'>总线</b>ESD保护方案

    LIN数据总线ESD保护方案

    LIN数据总线ESD保护方案
    的头像 发表于 05-17 14:35 449次阅读
    <b class='flag-5'>LIN</b>数据<b class='flag-5'>总线</b>ESD保护方案

    LIN数据总线ESD保护方案

    LIN总线(Local Interconnect Network)是一种用于车辆电子系统中的串行通信协议。LIN接口与其他外露的接口一样,也会受到静电放电 (ESD) 的影响。电子工程师需设计具有
    的头像 发表于 04-21 17:56 1044次阅读
    <b class='flag-5'>LIN</b>数据<b class='flag-5'>总线</b>ESD保护方案

    CAN总线干扰的6条“军规”

    的6条“军规”。在汽油车时代,CAN总线遇到的干扰少之又少,即使有一些继电器和电磁阀的脉冲,也不会有很大影响,稍微进行双绞处理,完全可以实现零错误。可是到了电动
    的头像 发表于 03-05 08:24 1378次阅读
    CAN<b class='flag-5'>总线</b>抗<b class='flag-5'>干扰</b>的6条“军规”

    TC367-Lin通信超时是什么原因导致的?

    请教各位大神,调试TC367芯片主模式时,调用英飞凌的库函数,只能够发送Lin通讯的同步间隔段、同步段,PID段一直发送不出去,故障显示:发送超时。请问一下会是什么原因导致?
    发表于 02-02 16:50

    请问用CAN存储器存储的CAN总线数据格式有哪些呢?

    之间的信息传输。下面将详细介绍CAN总线数据的格式。 CAN总线数据分为两种类型:标准和扩展
    的头像 发表于 01-31 13:46 1281次阅读

    CAN总线的标准和扩展有什么区别呢?分别适用于什么工况?

    CAN总线的标准和扩展是CAN协议中的两种类型。
    的头像 发表于 01-30 09:41 6203次阅读
    CAN<b class='flag-5'>总线</b>的标准<b class='flag-5'>帧</b>和扩展<b class='flag-5'>帧</b>有什么区别呢?分别适用于什么工况?